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.