How to drive a Brushless motor with Arduino. Tutorial

(Last Updated On: October 18, 2017)

A continuación explico con un pequeño tutorial, como controlar un motor Brushless con un variador de velocidad (ESC) y una placa Arduino o en mi caso, ArduPilotMega.

Necesitamos un batería LiPo, un ESC, un motor Brushless y un Arduino. Se podría usar una fuente de tensión, pero tiene que tener capacidad suficiente para arrancar el motor.

El esquema de conexión utilizado es el siguiente:

Conexionado para las pruebas

Para controlar un motor de este tipo hay que mandar al ESC señales como si quisiéramos controlar un servo normal. Estas señales son cuadradas con un tiempo en alto que varían entre 1 y 2 milisegundos, que correspondería a un águlo de entre 0 y 180 grados. Podemos probar primero con un servo: Si un servo no se mueve, el motor brushless nunca lo hará.

Para la conexión con el microcontrolador usaremos un pin de salida, en nuestro caso usaremos el pin 8. Si usamos ArduPilot Mega, este pin número 8 equivale al canal número 5 (CH_5). Conectamos el cable blanco al pin, el cable rojo, alimentación, queda libre y las tierras las unimos. (cable negro a GND del arduino)
Para conectar el ESC, le conectamos los cables de alimentación a la batería LiPo mediante un conector tipo banana de 4mm.(también podemos utilizar un fuente de alimentación externa, pero debemos de asegurarnos que tenga la potencia que el motor requiera.. que por lo general suele ser alta al arrancar) Y para las conexiones del motor, en mi caso he soldado unas pinzas como se muestra en la figura. Importante amarrar bien el motor a una madera, ya que al arrancar puede ser peligroso y más si es un motor outrunner.

Para el código,importante armar el motor antes de arrancarlo, ya que si no lo hacemos no arrancará nunca. Para inicializar un motor basta con enviar señales de ángulo 0 hasta que el motor emita pitidos. Consiste en recibir un pulso de 1 milisegundo cada 20 milisegundos por un tiempo aproximado de 4 o 5 segundos.
El proceso es:

  • Alimentar el ESC y escuchar la música de confirmación.
  • Armar:

  • Esperar pitidos  “Ready”.
  • Mover el motor:

Notas:

  • Cada motor arranca con una señal de ángulo diferente, en mi caso está en 65º.
  • Si despues de armarlo envío señal de 70 directamente no arranca, hay que subir progresivamente. Basta con mandar un 30º y ya pasar a 70º.
  • Si queremos cambiar el sentido de giro al motor, intercambiando 2 de los 3 cables de motor es suficiente.

Descargar aquí el archivo con el CÓDIGO.

Para cualquier duda, sugerencia o opinión no dude en comentar.

2 thoughts on “How to drive a Brushless motor with Arduino. Tutorial

  1. Reply
    Carlos Negrin Bolanos - May 10, 2013

    Buenas Albertolg,

    cre que es un poquillo tarde considerando que esto es de hace dos anios.
    Me preguntaba si me podrias ayudar con algo parecido a esto, estoy haciendo un poryecto personal que tiene un "brushless motor" y 3 servos al menos, que deben ser controlados desde un ESC y un arduino, me podrias ayudar con el codigo? muchas gracias 😀

    1. Reply
      Alberto L. - May 11, 2013

      Buenas, simplemente coge fragmentos de códigos para el motor brushless y para controlar servos. Para los servos hay muchisimos ejemplos, incluso en las librerias de arduino. Mira el programa de ejemplo de aqui arriba, aunque quizá este un poco liado con lo de recivir caracteres del teclado.

      1 saludo y suerte

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top