Problemas con motor Brushless

Hola, a ver si me podéis echar una mano algun@.

Estoy haciendo un quadcopter y hay algo que no entiendo.

En mi caso estoy usando un Netduino pero es posible que de igual en este caso.

El problema que tengo es el siguiente:

  • Si conecto el Arduino (Netduino en mi caso) y luego a continuación conecto el ESC a la batería todo funciona bien. El motor lo controlo sin problemas.

  • Pero si conecto los dos dispositivos a la vez desde el principio, el ESC no se inicia bien. No pita como cuando arranca bien y no consigo que funcione.

El Arduino (Netduino en mi caso) debe estar ya conectado antes de activar el ESC.

Si esto es así se me ocurre controlarlo con un relé, pero supongo que no debería de ser así.

Alguien me puede dar alguna idea de por donde buscar o cual puede ser el problema. O si es que es así...

Gracias.

No, no debería ser así. Se me ocurre que al iniciarse Arduino y el variador al mismo tiempo que las señales que le llegan al variador desde la Arduino, pues supongo que lo controlas con la librería servo, puedan interferir en el arranque del variador.

Prueba en el setup() a definir el pin de señal que va al variador como salida y ponerlo en LOW, incluye un delay para darle tiempo al variador a iniciarse sin recibir ninguna señal y por último creas el objeto servo asociandolo al pin de señal.

Si así no funciona tendrás que plantearte alimentar el variador desde un relé con un retardo a la conexión.

Espero te sirva de ayuda.

Prueba poner un delay de 500ms antes de que empieze tu programa de control para darle al ESC tiempo a inicilizar.

Ya nos contaras.

Gracias a los dos.

Bueno, en mi caso como he dicho tengo un Netduino así que el código no es igual que el que usais vosotros, pero si, ya he intentado hacer lo que decís de poner un delay al inicio del programa.

También he probado a inicializar el puerto y mandarle lo que llamais un LOW y esperar unos segundos antes de hacer nada y tampoco.

Si alimento el ESC aunque sea medio segundo después de arrancar el programa, nada más conectarse pega un pitido (eso es que va bien).

Si lo alimento justo a la vez nada, no pita y ya no hay nada que hacer.

Si solo encieno el ESC, sin encender el arduino, me pasa lo mismo.

Creo que al alimentar todo de golpe, el Arduino tardará un poco más que el ESC en "arrancar", y como al arrancar al ESC no le llega una señal correcta pues se queda como tonto.

Y en el caso de hacerlo con un relé que me recomendais?? Se como funciona y para que vale un relé pero nunca lo he usado. Se os ocurre otra forma en vez de con un relé?

yo he hecho el multiwii

cuando los variadores se quedan sin señal PWM hacen unos pitidos característicos, no les hace falta "inicial izarse", si pulsas el reset un tiempo largo los pines que le llevan la señal pwm a los variadores dejará de existir y empezarán a pitar, en cuanto le llegue de nuevo señal dejan de pitar.

para que un motor arranque debe tener primero una señal pwm al mínimo, si tiene la señal algo alta por mas que subas no arrancarán, por seguridad, para que cuando les des alimentación no arranquen de golpe si tienes el acelerador a medio o a tope.

un saludo ¡

Has probado a poner un condensador de unos 1000uf en serie con el positivo para retardar un poco la alimentacion del ESC???

Pues no, pero lo probaré. Puede ser una solución fácil.

Buenas de nuevo,

Tras un tiempo con el tema parado por vacaciones y otras cosas ayer retomé el tema.

Estuve probando con una resistencia Pull-Up y Pull-Down pero no conseguí nada. Lo del condensador no lo he probado pero creo que me gusta más la solución de un relé.

El esquema creo que lo tengo claro (es el que adjunto).

  • Tendría un interruptor que lo que haría es controlar la alimentación del Arduino (Netduino en mi caso).
  • El programa empezaría y una vez que tuviese todo incicializado por programa activaría la salida digital que activaría a su vez el Relé, cerrando el circuito de alimentación del ESC.

Bueno, creo que esto es simple y mis mínimos conocimientos llegan hasta aquí. Mi problema es que me he puesto a mirar relés y no me aclaro cual necesitaría.

Los ESC's que tengo son de 18 A cada uno. Lo ideal sería un relé del que se alimentasen los 4 ESC's que tengo.

Miro relés y me encuentro especificaciones como por ejemplo:

  • Relé bobina a 12V CC, Potencia máxima 6A 250V CA/30V CC
  • Relé bobina a 12V CC, Potencia máxima 1A 220V
  • Relé de señal 5V G5V-1, Relé de señal 24V G5V-1
  • etc...

Vamos, que no tengo ni idea de que especificaciones ha de tener el relé que necesito.

  • ¿Cuando habla de que va a 12V, o a 5V se refiere que es el voltaje al que se "cierra" el relé?
  • La potencia máxima la marcan para corriente alterna. ¿Como se cuanto aguanta en continua? Me da miedo poner uno que no aguante tantos amperior como puedan necesitar 4 ESC's

A ver si me podéis dar algo de luz.

Gracias.

no lo tienes bien conectado.

no puedes alimentar de la batería al arduino, y el arduino no tiene suficiente potencia para activar el relé.

el ESC tiene un regulador propio que SUMINISTRA corriente, es decir, tu le conectas la LIPO al variador solo ¡

los otros 3 hilos que le conectarias en teoria al receptor con GND, 5 voltios ( como digo son de salida) y señal al variador (entrada)

debes entonces conectar los 5 voltios de salida del ESC para alimentar al arduino, la señal de arduino PWM a la entrada de señal del ESC y la bateria LIPO solo al ESC.

Los 5 voltios de salida del ESC tambien son capaces de alimentar el receptor de radio

No te hace falta reles ni nada de nada.

te dejo un esquema de como se hace en multiwii

Un saludo

Bueno, si puedo alimentar el Netduino con la batería directamente. Eso lo tengo comprobado. No se si el Arduino será igual, pero el Netduino admite perfectamente los 11.1 V de entrada y te aseguro que funciona bien.

Pero también he probado a alimentarlo desde el ESC como dices y está en ese esquema.

Pero tengo el problema de que si alimento el Netduino desde el ESC, al conectar la batería el ESC no se arma/inicializa. Ese es el problema que tengo. Y además he leido es sitios que algunos ESC's son así. Necesitan que el receptro (Netduino en este caso) esté conectado antes de que el ESC reciba corriente.

Por eso tengo que alimentar el Netduino desde la batería directamente, para poder cerrar posteriormente el circuito de los ESC's.

De todas formas te repito que he probado un esquema como el que has puesto y no funciona. El ESC no se "arma".

para que el ESC se "arme", es necesario que la señal que le mandas de PWM sea como si tuvieras la palanca del acelerador en la posición mínima. esto es como te he dicho antes, por seguridad, para que el motor no arranque de golpe si cuando arranque se encuentra el acelerador accionado.

ademas algunos ESCs son programables y para ello hay que subir la palanca del acelerador a tope y darle alimentación al ESC, de esta forma se programa.

para que te arranque el motor deber enviar el PWM al mínimo, como si fuera un servo pues a la posición 0. el ESC se inicializa, da los pitidos característicos y entonces ya le puedes dar gas.

si en un primer momento le mandas a medio gas sin pasar un tiempo a gas 0 entonces no lo harás funcionar.

es por esto que te da el problema. sigue el esquema de conexión que propone wiicopter que es, en mi opinión, la mejor opción, y es como se hace en radiocontrol tradicional.

un saludo

Exacto. Los ESC's que tengo necesitan recibir la señal mínima para armarse. Entonces dan un pitido y ya están. Ya puedo hacer lo que quiera.

El problema es que con el esquema que ha puesto el SrDonGato no me funciona porque aunque la primera instrucción de mi programa es mandar un 0 por la salida PWM, el ESC arranca más rápido y al arrancar la señal PWM todavía no está estable. Eso es lo que deduzco tras mil pruebas.

Si manualmente conecto el ESC a la alimentación tan solo medio segundo después de que arranque mi programa entonces va todo bien. Ese es el problema que tengo y por eso creo que la única opción es retardar un poco el que los ESC's reciban alimentación, para darle tiempo al programa que arranque.

Por eso había pensado en usar un relé o similar para que sea el propio programa, una vez que haya puesto todas las salidas PWM a "0", el que active el relé.

los ESC cuando pierden señal PWM hace falta inicializarlo de nuevo.

por eso no entiendo por que dices que se inicializa antes el ESC que el programa de arduino, si pulsas el reset un tiempo largo los ESC pierden la señal PWM. luego sueltas, arranca tu programa, mandas un 0 a los ESC el tiempo necesario para que se inicialicen los ESC y luego ya le puedes mandar gas.

a los ESC no les hace falta quitar alimentación para inicializarlos de nuevo, tan solo anular señal PWM un tiempo y luego mandarle PWM a gas 0 un tiempo. y esto lo puedes hacer todo por software.

el esquema que te he puesto no lo he hecho yo, y está mas que probado que funciona.

pon el código a ver si te podemos ayudar por ese lado

un saludo

puedes probar como se inicializan y demas con el receptor de radio y los esc, prueba a conectarlo de las diferentes maneras posiciones de sticks y demas y veras como funciona.

un saludo

El código lo tengo en C#, porque es un Netduino pero creo que es más que entendible:

public static void Main()
{
// Me creo la variable que controla el puerto
BrushlessMotor brushless = new BrushlessMotor(Pins.GPIO_PIN_D10);

// Lo pongo a "0" el puerto
brushless.Power = 0;

// Espero un tiempo para darle tiempo al ESC que se inicialice.
// Con 1 sg le vale pero he probado con 2, 10, 1, da igual....
Thread.Sleep(2000); // Espero 2 sg.... por si acaso

// Aquí se supone que ya se ha inicializado y le doy un 50% de potencia
brushless.Power = 50;

// Espera infinita para evitar la terminación del programa
Thread.Sleep(Timeout.Infinite);
}

Si el ESC no está alimentado por la corriente y justo después de ejecutar " brushless.Power = 0;" lo alimento, funciona todo perfectamente.

SrDonGato:
puedes probar como se inicializan y demas con el receptor de radio y los esc, prueba a conectarlo de las diferentes maneras posiciones de sticks y demas y veras como funciona.

un saludo

Con la radio también me funciona perfectamente. Algo tiene/hace el receptor que no soy capaz de reproducir en el Netduino.

prueba esto.

#include <Servo.h> 
 
Servo myservo;  
 

int PinESC = 9;
 
void setup() 
{ 
  myservo.attach(PinESC);  // attaches the servo on pin 9 to the servo object 
  myservo.write(0); // ponemos la potencia a 0
  delay(5000); // espera a que se inicialice el esc
} 
 
void loop() 
{ 
  myservo.write(128); // ponemos la potencia al 50%
  delay(5000); // durante 5 segundos
    myservo.write(128); // ponemos la potencia al 25%
  delay(5000); // durante 5 segundos
    myservo.write(255); // ponemos la potencia al 100%
  delay(2000); // durante 2 segundos
    myservo.write(0); // ponemos la potencia al 0%
  delay(10000); // durante 10 segundos
  
  
  
}

cambia PinESC a donde tengas cogida la señal PWM al ESC

ya nos cuentas

Es que el código que he puesto hace lo mismo.....

más no te puedo ayudar ... sé que a mi me funciona como te estoy diciendo. quizas los esc son distintos , no lo se

SrDonGato:
más no te puedo ayudar ... sé que a mi me funciona como te estoy diciendo. quizas los esc son distintos , no lo se

No creas que te lo he dicho a mala eh, al contrario, te agradezco que intentes ayudarme.

Es que creo que el tema es ese, que son distintos.

Sobre el tema de usar un relé o Tiristor.... me podrías orientar un poco?? No se muy bien como saber que especificaciones tendría que tener para que aguantase la potencia de 4 motores.