Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

En este tutorial aprenderemos a controlar un motor brushless usando Arduino y ESC. Si quieres más detalles sobre funcionamiento de motores BLDC, consulta el otro artículo o mira el vídeo que explica principio de funcionamiento y control con Arduino y ESC.

Resumen

Para este ejemplo tengo un motor BLDC outrunner con specs: KV 1000, alimentación 2S, 3S o 4S LiPo, requiere ESC 30A. El rating KV define RPM por voltio sin carga.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

KV 1000 significa: con batería 2S LiPo (7.4V), RPM máx = 7.4 × 1000 = 7400 RPM.

Motores brushless consumen mucha potencia; forma común de alimentarlos: baterías LiPo. Número "S" = celdas en serie; cada celda = 3.7V.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Usaré batería 3S LiPo (3 celdas = 11.1V). RPM máx esperado: 11100.

ESC 30A para este ejemplo, acorde a requerimientos motor. Un lado: 3 cables controlan 3 fases motor. Otro lado: 2 cables VCC y GND para alimentación.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Otro juego de 3 cables del ESC: línea señal, +5V y GND. Esto se llama BEC (Battery Eliminator Circuit): elimina necesidad de batería separada para microcontrolador. ESC provee 5V regulados para alimentar Arduino.

Esta conexión es igual que en servos.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Controlar motor brushless con ESC y Arduino es tan simple como controlar servo. ESCs usan misma señal de control: PWM estándar 50 Hz.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Muy conveniente: en avión RC solemos necesitar servos y motores brushless; así los controlamos con mismo tipo de controlador.

Con Arduino generamos PWM 50 Hz; según ancho de pulso (estado HIGH 1-2 ms), ESC impulsa motor de RPM mín a máx.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Control motor brushless Arduino – Diagrama circuito

Esquema para este ejemplo. Además del ESC, usamos potenciómetro simple para controlar velocidad.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Componentes necesarios:

  • Motor Brushless ………………………
  • ESC 30A …………………………………….
  • Batería Li-Po ……………….…..……
  • Placa Arduino …………………………
  • Potenciómetro ………………………….
  • Protoboard y cables jumpers …

Código Arduino para control BLDC

Código muy simple, pocas líneas.

/* Arduino Brushless Motor Control por Dejan, https://howtomechatronics.com */
#include <Servo.h>
Servo ESC; // Objeto servo para controlar ESC
int potValue; // Valor pin analógico

void setup() {
  // Conectar ESC en pin 9
  ESC.attach(9, 1000, 2000); // (pin, ancho pulso min, max en microsegundos)
}

void loop() {
  potValue = analogRead(A0); // Lee potenciómetro (0-1023)
  potValue = map(potValue, 0, 1023, 0, 180); // Escalar para librería Servo (0-180)
  ESC.write(potValue); // Envía señal al ESC
}

Descripción: Incluimos librería Servo.h porque genera fácilmente PWM 50 Hz (PWM nativo Arduino tiene otras frecuencias). Creamos objeto Servo para ESC y variable para entrada analógica potenciómetro. En setup(), attach() define pin señal ESC y ancho pulso mín/máx en µs.

En loop(): leemos potenciómetro, mapeamos 0-1023 → 0-180. Con write() enviamos señal al ESC (genera PWM 50 Hz). Valores 0-180 corresponden a 1000-2000 µs definidos en setup.

Subimos código, alimentamos con batería, y controlamos velocidad motor de 0 a máx con potenciómetro.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Notas importantes: Al encender inicialmente, valor señal debe ser ≤ mínimo (1 ms). Esto se llama arming del ESC; motor emite pitidos confirmando armado correcto. Si valor > mínimo al encender (throttle up), ESC no arranca hasta bajar a mínimo. Seguridad: motor no arranca si throttle arriba al encender.

Calibración ESC

Cada ESC tiene sus puntos alto/bajo propios, que pueden variar ligeramente. Ej.: punto bajo 1.2 ms, alto 1.9 ms. Entonces throttle no hace nada primer 20% hasta alcanzar 1.2 ms.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Para solucionar: calibrar ESC / fijar puntos alto/bajo deseados. Antes de alimentar ESC, ponemos potenciómetro al máx (o valor > punto medio actual). Alimentamos ESC; oiremos pitidos confirmando nuevo punto alto.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

Tras 2 segundos, movemos potenciómetro a posición nuevo punto bajo. Pitidos confirmación → calibración hecha. Ahora throttle responde desde el inicio y controlamos motor entre estos dos nuevos puntos.

Esto es todo para este tutorial. Para control inalámbrico brushless con Arduino, revisa mi vídeo anterior donde construí transmisor RC Arduino y expliqué control BLDC con él.

Control de motor brushless con Arduino, ESC y BLDC: Tutorial paso a paso

¡Espero que hayas disfrutado y aprendido! Preguntas en comentarios y revisa mi Colección Proyectos Arduino.

Proceso de manufactura

  1. Crea un Cerrojo RFID Seguro con Arduino – Guía Paso a Paso
  2. Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
  3. Centro de Control de Potencia Arduino: N-FET, P-FET, Relé y RTC
  4. Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
  5. Robot Seguidor de Línea Autónomo con Arduino UNO: Guía Paso a Paso
  6. Controlador de Humidificador DIY con Arduino y Relé: Configuración Segura de Alto Voltaje
  7. Kit de Entrenamiento Arduino Completo con Mega 2560, Sensores, Motores y PCB Personalizada
  8. Proyecto Sensor de Huella Dactilar con Arduino Nano – Tutorial Paso a Paso
  9. Tutorial Arduino para Principiantes 01: Inicia tu Primer Proyecto
  10. Motores BLDC avanzados y soluciones de automatización
  11. Entendiendo los motores BLDC: guía profesional