23. Control de velocidad de motor DC con PWM y relé
Arranca, para e invierte un motor DC controlando su velocidad por PWM. Base de coches, ventiladores y cintas transportadoras.
🧰 Lista de materiales
🎯 Qué vas a aprender
A manejar un actuador de potencia inductiva con seguridad: control de velocidad por PWM a través de un transistor/driver, protección con diodo y la importancia de aislar la electrónica de control. Opcionalmente, inversión de sentido con relé.
📚 Teoría: PWM en motores y diodo de protección
Igual que atenuábamos un LED (proyecto 04), el PWM regula la velocidad de un motor variando la potencia media. Pero un motor es inductivo: al cortar la corriente genera un pico de tensión inverso que puede dañar al transistor. Por eso se pone un diodo volante (flyback) en paralelo con el motor.
🔌 Conexiones (con transistor NPN)
| Componente | Conexión |
|---|---|
| Pin PWM D9 | → resistencia 1 kΩ → base del transistor |
| Emisor transistor | GND común |
| Colector | → motor (−) |
| Motor (+) | Pack pilas (+) |
| Diodo | en paralelo con el motor (cátodo a +) |
| Potenciómetro cursor | A0 |
💻 Código completo
// Control de velocidad de motor DC por PWM
const int PIN_PWM = 9; // a la base del transistor (vía 1k)
const int PIN_POT = A0;
void setup() {
pinMode(PIN_PWM, OUTPUT);
}
void loop() {
int lectura = analogRead(PIN_POT);
int vel = map(lectura, 0, 1023, 0, 255);
// pequeño umbral de arranque: por debajo no gira, solo zumba
if (vel < 40) vel = 0;
analogWrite(PIN_PWM, vel);
delay(20);
}🛠️ Montaje paso a paso
- Monta el transistor: base (vía 1 kΩ) a D9, emisor a GND, colector al motor.
- Conecta el motor entre el colector y el (+) del pack.
- Coloca el diodo de protección en paralelo con el motor.
- Une GND del pack con GND del Arduino.
- Sube el sketch y regula la velocidad con el potenciómetro.
🧩 Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| Arduino se reinicia | Sin GND común o motor en la placa | Aliméntalo aparte, GND común |
| Motor no arranca | Umbral alto | Baja el límite de arranque |
| Transistor se calienta | Corriente excesiva | Usa MOSFET o motor de menos consumo |
🚀 Para ir más lejos
- Añade un relé DPDT para invertir el sentido de giro.
- Usa dos motores para un coche (base del proyecto 24).
- Lee el encoder de la rueda Conga para medir velocidad real.