sábado, 29 de junio de 2013

Motores Brushless: Primera Prueba con Arduino.

En ingles se conocen como BLDC (Brush-Less Direct Current). Es muy común encontrar estos motores en aplicaciones de robotica aérea o aeromodelismo. La razón de su uso, es a las altas revoluciones que se pueden conseguir, pues son motores que no poseen escobillas que entran en contacto con el rotor, a diferencia de la mayoria de motores DC. Estos motores funcionan con señales trifásicas, que permiten activar por pares los polos magnéticos dentro del motor. Es por esta razón que al poseer una sola señal PWM proveniente de un microcontrolador, se requiere reproducir tres señales desfasadas 120 grados. La solucion de este problema se realiza con un discpositivo electrico denominado variador ESC (Electronic Speed Controller), el cual permite generar las señales adecuadas para poder generar el movimiento del motor.



Para hacer un primer montaje, hay que tener en cuenta los valores nominales con los que trabaja el ESC y el motor Brushless. Para el caso, trabajaremos con un motor que trabaja con una corriene máxima de 12A y un ESC SkyWalker de 20A. La idea es que la corriente máxima que exija el motor sea menor a la corriente máxima que soporte el ESC. Después de tener esto claro, conectamos las tres terminales del ESC a las terminales del motor tal como se ilustra en la figura.


Es necesario trabajar con el motor puesto, debido a que el ESC hay que programarlo, y dicha programacion se realiza por medio de la identificacion de unos sonidos emitidos por el motor pero son debidos al ESC.

Ahora, hay que revisar el manual que viene con el variador. Se explicará con el que acompaña al dispostivo con el que se trabaja para este caso, pero NO significa que sea de la misma forma para todos los ESC.  Acá se comparte para que lo tengan de referencia, mas NO como un manual general.
Luego se debe realizar el montaje con la batería y el Arduino (Pronto subiré una imagen mejor):


El código para usar el arduino con el montaje es el siguiente:

/**  
Se toma el ejemplo que viene con el Arduino para el Servomotor
llamado Knob    
 */

#include <Servo.h> 

Servo myservo;

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin 

void setup() 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 

void loop() 
  val = analogRead(potpin);  // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 30, 160);  // ACA se cambia el valor de escala entre 30 y 160 
  myservo.write(val);          // sets the servo position according to the scaled value 
  delay(15);                   // waits for the servo to get there 

Se emplea este código para facilitar el procedimiento que se hará mas adelante para configurar el ESC. Los variadores ESC no reciben valores muy bajos de una señal PWM por seguridad. Es por ello, que con la ayuda de la libreria servo, tomamos la señal de PWM correspondiente a el valor de 30 como el valor de  salida de PWM mínimo, y como valor máximo de salida, el asociado con el valor 160 configurado en la línea:

val = map(val, 0, 1023, 30, 160);     // ACA se cambia el valor de escala entre 

Aca les dejo el video de la configuración del ESC y el montaje con el Arduino:


Cualquier duda o comentario no duden en hacerlo.

Gracias....

36 comentarios:

  1. hola!!! yo tengo unos ESC Con arduino! pero no quiero utilizar un potencimetro! lo que quiero es del puerto serial enviarle cuanta pontencia al motor! pero para programarlos tendria que hacerlo con una Resistencia Variable (potencimetro) y luego cargar mi codigo?? al programarlo una ves ya estarian listos para utilizarlos sin volver a progrmar_

    ResponderEliminar
    Respuestas
    1. Hola amigo... lo que tienes que hacer es, que en la linea donde se llamá la método myservo.write(val), val es el valor que debes recibir por puerto serial. Por lo tanto puedes recibir el valor del puerto serial de la siguiente forma:

      int val = Serial.parseInt();

      pero ten cuidado que los motores arrancan con un valor de pwm muy bajo, y puede ser peligroso, te recomiendo tener mucha precaución... si necesitas mas ayuda me comentas.

      Eliminar
    2. si necesitas mas ayuda con el código o con el montaje me informas por favor...

      Eliminar
  2. Muchas gracias por la información amigo enserio gracias me has acarado muchas dudas

    ResponderEliminar
    Respuestas
    1. Hola amigo es con mucho gusto, si te sirvió un +1 es todo lo que necesito... si te interesann mas temas similares te invito a la siguiente comunidad en g+: https://plus.google.com/u/0/communities/112888397177315966923

      Eliminar
  3. Respuestas
    1. es un potenciometro normal de 10K, lo que importa es la interpretacion de la señal análoga que uso para hacer un cambio en la señal de pwm que usa el ESC.

      Eliminar
  4. Hola Alejandro, una consulta, creo entender el porque se usa ese mínimo (por lo que e entendido, es porque se necesita partir con un pwm bajo y distinto de 0 para evitar malas interpretaciones con posibles ruidos), pero por que utilizas específicamente 30 y 160 como valores mínimo y máximo respectivamente ?

    De antemano Gracias.

    ResponderEliminar
    Respuestas
    1. Es un valor que escogí a mi selección... no es por nada en particular... no escogí 180 como valor máximo, porque este corresponde a un dutty cicle máximo en la señal pwm y puede ser peligroso cuando le ingrese por alguna razon una señal dc completa.

      Eliminar
    2. Este comentario ha sido eliminado por el autor.

      Eliminar
    3. Gracias por tu respuesta, y por el blog (Y) :)

      Eliminar
    4. Hola, ahora tengo otra duda. Por que en el diagrama de conexión que muestras, conectas a los pines que están con el de PWM a los 5v del arduino ?. Esos pines no deberían ser salidas de voltaje? como para un transmisor o servo.
      Saludos y gracias nuevamente.

      Eliminar
    5. recientemente me fijé que solo se necesita, para controlar el pwm del motor, el pin de tierra y el pwm. El pin de 5V, es en efecto un pin para alimentar, pues el ESC no requiere alimentacion por fuera de la batería. Trataré de hacer el cambio de la imagen por una mejor (curiosamente no pensé que este blog tendría tanta popularidad).

      Eliminar
    6. Genial, gracias por tu ayuda y por tu motivacion en compartir el conimiento. Yo por mi parte Hace poco me llegaron algunos elemntos desde china para empezar de lleno en mi proyecto, asi que seguramente seguire preguntandote en el futuro :).

      Gracias, exitos y saludos!

      Eliminar
  5. hola gracias por tu tutorial, tengo una duda si hay problema si no uso una pila lipo? y en lugar de eso uso una fuente de alimentacion de computadora?

    ResponderEliminar
  6. buenas tengo una duda... para configurar 4 motores. tengo q hacer el procedimiento individual de los 4 ?? o como aria ... porfas espero tu respuesta.. gracas

    ResponderEliminar
    Respuestas
    1. Seeep.... debes configurar cada uno... me comentas como te fué...

      Eliminar
  7. Seeep.... debes configurar cada uno... me comentas como te fué...

    ResponderEliminar
  8. hola!! estube intentando controlarlo por bluetooth! como lo harias tu!?
    gracias

    ResponderEliminar
  9. Saludos amigo recien compre un variador simonk de 30 amp, y lo conecte a una fuente de poder pero no escuhe el pitico que suele sonar cuando se conecta el variador, mi pregunta es si esta quemado y me lo vendieron asi o debo programar algo por ser un variador recien comprado, ayuda!!!1

    ResponderEliminar
  10. buenas tardes una pregunta a cuantos Volts se conecta?

    ResponderEliminar
  11. otra cuestion puedo usar una fuente de voltaje en lugar de una pila LiPo?

    ResponderEliminar
  12. Hola amigo, gracias por el video, yo lo que quiero es comunicarme con mi motor escribiendole el valor y que este lo reciba y funcione. Eso como es? Como se el valor maximo que puedo transmitir al motor? Gracias

    ResponderEliminar
  13. Hola amigo... Cordial Saludo... cuando dices escribir el valor a que haces referencia? El valor máximo se lo asignas cuando entras al modo configuración en algunos modelos, basado en el ancho de pulso que te genera el micro-controlador con la señal PWM... Espero tu respuesta...

    ResponderEliminar
  14. Te explico, yo mi Arduino Uno quiero controlar los 4 motores, escribiéndole a cada uno por el monitor Serial la potencia que quiero que tenga en ese momento.

    ResponderEliminar
  15. Saludos, tengo un problema y es que monto el esc con el motor y lo monto con el arduino, y dejo el potenciómetro en el valor de 180 luego conectó la bateria y no hace el sonido de la melodía si no un sonido como un solo pitido, un beep, y luego lo bajo a cero y suena beep beep beep indicándome que ya se configuro el valor de la potencia, luego cuando comienzo a darle potencia hace beep-beep-beep en intervalos de 0,25 seg! Reviso la imagen del manual que montaste y dice que es por señal de potencia irregular, puedes orientarme???? Ya probé bajando el rango del potenciómetro como lo indicas aquí en el blog, no se que mas hacer

    ResponderEliminar
    Respuestas
    1. Saludos, consciente de que este tema en especifico tiene años abierto, sabia que obtener una respuesta de un día para otro no es algo a lo que se apostaría con seguridad, tengo un esc aeolian 30amp pero funciona a según igual que el resto, el hecho se soluciono revisando las conexiones, el motor que tengo es un emp 850kv, ya venia con sus conectores bananas puesto, lo que hice fue remover los conectores y usar caimanes para conectarlo con el esc, y arranque directo en cero y pues funciono, tal vez sea una idiotez la solución pero bueno, funciona

      Eliminar
    2. Saludos amigo... pues la verdad este es un video que muestra el funcionamiento de unos ESC genericos... pero igualmente no te puedo garantizar que sea el mismo para todas las marcas... lo mejor que puedes hacer es mostrarme la hoja técnica que te viene o la referencia... y lo vamos revisando...

      Eliminar
  16. Respuestas
    1. en lugar del potenciometro un mando de ps2 nose como activarlo al momento de pulsar un boton

      Eliminar
  17. hola buenas noches, interesante el video y muy bien explicado
    tengo un problema con mi motor, tengo el arduino , tengo un fuente no como la que se usa en evideo, lo estoy alimentando a 5 col con una fuente de pc, no se si eso sea un problema, monto el circuito y el motor queda haciendo beep-beep-beep continuamente, quisiera saber que debo hacer, el motor lo utilizare para un balancion con control pid con aplificadores operacionales, no se si me pueda colaborar XD.
    agradesco

    ResponderEliminar
  18. Hola. Quiero reiniciar ESC, podría hacerlo en el modo Start, ¿Pero que diferencia habría entre Normal, Soft y super soft?

    ResponderEliminar
  19. Hola. Intento calibrar los ESC pero cuando giro el potenciómetro a su valor inferior suena como cuatro beeps seguidos. ¿Podrías ayudarme?

    ResponderEliminar
  20. Hola tengo un problema y es curioso porque el ESC se inicia con un pulso de 1ms, al mínimo y puedo subir hasta 2ms lo que quiera y responde pero a los 2 segundos mas o menos se para y para volver a arrancarlo tengo que llevarlo a 1ms y después aumentarlo, para que de nuevo vuelva a pararse. El ancho de pulso lo controlo con un potenciómetro y los ESC los estoy alimentando con una batería NI-MH de 9.6V.
    Si puedes ayudarme te lo agradecería muchísimo. Gracias.

    ResponderEliminar
  21. Amigo que tipo de arduino utilizastes

    ResponderEliminar