Control de motores Brushlees con Arduino (III)

AUTORES:  Agustín González Redondo. M Rocío García de la Fuente.

En artículos anteriores hemos trabajado el control de motores de corriente continua con Arduino, ya sea conectados directamente o mediante una tarjeta controladora, en nuestro caso TB6612FNG, y pudimos comprobar que su programación y conexiones eran moderadamente sencillas:

  • Disponen normalmente de dos polos, uno positivo y otro negativo y simplemente cambiando la polaridad el motor girará en la dirección opuesta.
  • Simplemente modificando la tensión se consigue variar su velocidad de giro.

De esta forma podemos emplear los motores eléctricos, como actuadores, en gran cantidad de proyectos bombas, ventiladores, compresores, ruedas de vehículos, etc.

Vamos a introducir un nuevo tipo de motores, que, si bien son considerados como motores de corriente continua, su alimentación propiamente dicha se realiza con corriente alterna, ya que a la hora de trabajar con ellos presentan muchas similitudes con los motores de corriente continua alimentados mediante una tarjeta controladora, se trata de motores sin escobillas o brushless. (figura 1. motores brushless).

Un motor sin escobillas consiste en un imán permanente que actúa como rotor, rodeado por tres bobinas de estator (figura 2. Esquema de un motor Brushless). El flujo de corriente en cada bobinado produce un campo magnético que se suma a los demás, este campo magnético provoca la atracción o repulsión del rotor forzando su giro. En la siguiente figura se muestra una secuencia de alimentación de un motor Brushless con 3 polos, capaz de inducir su movimiento (figura 3. Secuencia de alimentación de un motor Brushless de 3 polos).

 

Algunas de las características más importantes que debemos tener en cuenta de este tipo de motores son:

  • El cableado en la caja del motor brushless es más complicado que simplemente conectar los terminales positivo y negativo, como en los motores de corriente continua, sin embargo, para realizar proyectos DIY, en la mayoría de los casos la complicación no es excesiva, puesto que se trata de motores con tres polos. (figura esquema de cableado)
  • Por otro lado, una de sus grandes ventajas es la eficiencia, ya que estos motores pueden controlar con su par máximo de rotación. Por lo que incluso los pequeños motores Brushless pueden entregar una potencia considerable.
  • Otra gran ventaja es la capacidad de control, para entregar con precisión el par y la velocidad de rotación deseados, que a su vez reduce el consumo de energía y la generación de calor.
  • Por último, los motores Brushless también presentan una mayor duración y un menor mantenimiento, produciendo menor ruido eléctrico, todo ello gracias a la ausencia de escobillas.

Para trabajar con este tipo de motores, además del motor propiamente dicho, es necesario disponer de una Controladora Electrónica de Velocidad (Electronic Speed Control, ESC) (figura 4. Distintos tipos de ESC para motores Brushless), capaz de convertir una señal PWM, procedente, por ejemplo, de una placa Arduino, en una señal trifásica de corriente alterna para hacer funcionar este tipo de motores, finalmente un variador de frecuencia permite modificar la velocidad de giro del motor al modificar la frecuencia de la señal trifásica.

Llevaremos a cabo a continuación una primera aproximación a la programación de este tipo de motores, como introducción para su posible utilización en proyectos más complejos. Para ello será necesario disponer de:

  • Placa Arduino Uno o similar (micro, nano, etc.).
  • Un controlador ESC.
  • Motor Brushless.
  • Batería (LiPo) o fuente de alimentación.

Conectados como se muestra a continuación (figura 5. Esquema de conexiones de un motor Brushless a Arduino)

A la hora de realizar el control de este tipo de motores debemos tener en cuenta las siguientes consideraciones:

  • Se controlan mediante pulsos, de forma similar a los servomotores, como ya vimos en el artículo anterior dedicado al control de motores, por lo que es necesario trabajar con la librería <Servo.h>, (incluida por efecto en la IDE de Arduino), para poder compilar el código y que funcione correctamente.
  • Antes de comenzar las ESC esperan recibir un pulso de activación, de una duración comprendida entre 2 y 5 segundos.
  • Las ESC se controlan con pulsos PWM comprendidos entre 1 milisegundo (mínima velocidad del motor) y 2 milisegundos (velocidad máxima del motor), si bien estas son referencias aproximadas.

Con todas estas consideraciones, a continuación, se muestra un sencillo código, para el control de la velocidad de un motor Brushless:

#include <Servo.h> //librería necesaria para las ESC de control

 

Servo myESC;  // Crea un objeto Servo

 

int vel=1000;    // variable para controlar amplitud del pulso

boolean control=false; //control de la velocidad ascend o desc

 

void setup()

{

Serial.begin(9600);

myESC.attach(9);  // pin de control de ESC, pin 9

}

 

void loop()

{

//el programa aumenta y disminuye la velocidad progresivamente

//cada segundo entre los valores 1000 y 2000

myESC.writeMicroseconds(vel);//señal PWM enviada a la ESC

Serial.println(vel);

if (control) vel-=50;

else vel+=50;

delay(1000);

if(vel>=2000) control=true;

if(vel<=1000) control=false;

}

 

Una vez instalado correctamente el motor Brushless y conectado a la placa Arduino, al cargar el código se puede observar cómo varía la velocidad del motor continuamente, desde un inicio en reposo hasta su velocidad máxima, para luego volver, descendiendo poco a poco su velocidad, a un estado de reposo.

Con esta sencilla práctica, ya tenemos una base para trabajar con motores Brushless, más potentes y efectivos que los tradicionales motores de corriente continua. Y desde aquí os animamos a emplearlos en vuestros proyectos DIY.

 

Robótica-Programación

Introducción a la física de partículas y observación (Muon detector)

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Para comenzar este artículo es preciso realizar una breve introducción al modelo estándar de partículas, para intentar comprender el conocimiento científico que yace detrás del proyecto que trataremos de explicar. El modelo standard (fuente CERN) figura 1. Desde la década de 1930 los descubrimientos […]

Leer más
Robótica-Programación

Control de motores Arduino (IV). Motores Paso a Paso

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO El segundo tipo de motores capaces de controlar su posición de forma interna, los servomotores fueron los primeros que hemos tratado en anteriores artículos, son los motores paso a paso (figura 4. Varios modelos de motores paso a paso), dispositivos ampliamente empleados en impresoras […]

Leer más
Robótica-Programación

Python ·3D con Processing

AUTORES: M. ROCÍO GARCÍA DE LA FUENTE Y AGUSTÍN GONZÁLEZ REDONDO. Hoy volvemos de nuevo a trabajar con Python, en este caso, añadimos nuevas posibilidades a una IDE que ya conocemos, Processing, además de trabajar con este lenguaje de programación realizaremos una primera animación en 3D. Para comenzar debemos añadir un nuevo modo de trabajo […]

Leer más
Revista