Control de velocidad de un motor BLCD usando el driver ESC, ESP32, un potenciómetro y la librería ESP32Servo.h

Práctica: Control de velocidad de un motor BLCD usando el driver ESC, ESP32, un potenciómetro y la librería ESP32Servo.h

Introducción

En esta práctica, controlaremos la velocidad de un motor brushless (BLDC) utilizando un Electronic Speed Controller (ESC), un ESP32 y un potenciómetro, pero esta vez usaremos la librería ESP32Servo.h para simplificar la generación de señales PWM. Esta librería facilita el uso de PWM en el ESP32 y nos permite controlar servos y ESCs con mayor simplicidad. El control de velocidad se realizará ajustando la señal PWM basada en la posición del potenciómetro.

Material necesario

  • ESP32
  • Motor BLDC (Brushless DC)
  • ESC (Electronic Speed Controller) compatible con el motor
  • Potenciómetro de 10kΩ
  • Fuente de alimentación para el motor (dependiendo del ESC y motor)
  • Cables de conexión
  • Protoboard (opcional)

Desarrollo

1. Conexiones del circuito
  • ESP32 y ESC: Conecta el pin de señal del ESC a un pin PWM del ESP32, por ejemplo, el pin GPIO 18.
  • ESC y motor: Conecta el motor BLDC al ESC.
  • Potenciómetro y ESP32: Conecta el pin central del potenciómetro a un pin analógico del ESP32 (GPIO 34). Los otros dos pines del potenciómetro a 3.3V y GND.
  • Alimentación: Conecta la fuente de alimentación al ESC.
2. Instalación de la librería ESP32Servo

Antes de continuar con el código, asegúrate de tener instalada la librería ESP32Servo en tu entorno de Arduino:

  • Abre el IDE de Arduino.
  • Ve a Herramientas > Administrar Bibliotecas.
  • Busca «ESP32Servo» e instala la librería.
3. Código para el ESP32 usando la librería ESP32Servo

El siguiente código utiliza la librería ESP32Servo.h para controlar la velocidad del motor según la posición del potenciómetro. Se usa la señal PWM para controlar el ESC.

#include <Arduino.h>
#include <ESP32Servo.h>
const int escPin = 18; // Pin de control del ESC
const int potPin = 34; // Pin analógico conectado al potenciómetro
int potValue = 0; // Variable para almacenar el valor del potenciómetro
int escValue = 0; // Variable para almacenar el valor del ESC (en microsegundos)

Servo esc; // Objeto Servo para controlar el ESC

void setup() {
// Inicializar el potenciómetro
pinMode(potPin, INPUT);

// Asignar el pin de control del ESC
esc.attach(escPin, 1000, 2000); // Rango típico para ESC (1000-2000 microsegundos)
}

void loop() {
// Leer el valor del potenciómetro (0-4095)
potValue = analogRead(potPin);

// Mapear el valor del potenciómetro al rango de 1000 a 2000 microsegundos
escValue = map(potValue, 0, 4095, 1000, 2000);

// Controlar el ESC enviando el valor mapeado
esc.writeMicroseconds(escValue);

// Pausa para estabilidad
delay(10);
}

4. Descripción del código
  • Librería ESP32Servo: Usamos la librería para simplificar el control del ESC mediante la generación de señales PWM. Esto facilita mucho el código, ya que sólo necesitamos usar esc.attach() para definir el pin y los límites de la señal PWM (1000 a 2000 microsegundos, que es el rango típico para ESCs).
  • Lectura del potenciómetro: El potenciómetro se lee como un valor entre 0 y 4095, y se mapea a un rango de 1000 a 2000 microsegundos, lo que ajusta la velocidad del motor.
  • Control del ESC: Usamos esc.writeMicroseconds() para enviar la señal PWM al ESC, ajustando así la velocidad del motor.
5. Funcionamiento

Con las conexiones realizadas y el código cargado en el ESP32, podrás controlar la velocidad del motor BLDC girando el potenciómetro. Al mover el potenciómetro de un extremo a otro, el motor responderá variando su velocidad de mínima a máxima.

Conclusión

El uso de la librería ESP32Servo.h simplifica el control de un ESC y un motor BLDC, proporcionando una forma sencilla de generar señales PWM. Esto permite una mayor flexibilidad al controlar motores, con un código más limpio y fácil de entender. La integración de un potenciómetro facilita el ajuste de velocidad, permitiendo un control intuitivo y preciso.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *