Tutorial · Principiante · 18 min de lectura

Controla motores de CC con PWM y un puente H

Aprende a controlar un motor de CC con escobillas con PWM y un puente H: dirección, frenado, límites de corriente, cableado y selección segura del manejador.

Un pin de microcontrolador puede describir cómo debería moverse un motor, pero no puede suministrar con seguridad la corriente del motor. Un motor de corriente continua (CC) con escobillas puede consumir varias veces su corriente normal al arrancar o bloqueado. Un manejador de motor en puente H se sitúa entre el controlador y el motor, conmuta esa corriente desde una alimentación separada y permite al controlador elegir velocidad y dirección.

Este tutorial construye la etapa de motor que usan seguidores de línea, robots de laberinto y pequeñas plataformas de evitación de obstáculos. Los nombres exactos de pines varían por manejador, pero las decisiones eléctricas son las mismas.

Entiende qué cambia el puente H

Un motor de CC invierte cuando se invierte la corriente que lo atraviesa. Un puente H usa cuatro interruptores electrónicos alrededor del motor. Un par diagonal maneja la corriente adelante; el otro la maneja atrás. Las placas manejadoras exponen esa conmutación mediante pines lógicos como IN1 e IN2:

IN1 IN2 Estado del motor
Low Low Marcha libre o freno, según el manejador
High Low Adelante
Low High Atrás
High High Freno o marcha libre, según el manejador

Nunca supongas qué significan ambos en bajo y ambos en alto. Lee la tabla de verdad del manejador concreto. Algunos chips también tienen un pin ENABLE, STANDBY o SLEEP que debe activarse antes de que funcionen las salidas.

La modulación por ancho de pulso (PWM) controla la tensión media conmutando la alimentación rápidamente encendida y apagada. Un ciclo de trabajo del 25 % está encendido un cuarto de cada periodo; no garantiza un cuarto de la velocidad del eje porque el resultado también depende de la carga, la tensión de alimentación, la fricción y la fuerza contraelectromotriz del motor.

Tres trazas de onda cuadrada apiladas en vertical, todas conmutando entre cero y doce voltios a la misma frecuencia pero con distintos tiempos de encendido. La onda superior está encendida el setenta y cinco por ciento de cada periodo con una línea discontinua que marca su media de nueve voltios, la del medio está encendida el cuarenta por ciento promediando cuatro coma ocho voltios, y la inferior está encendida el quince por ciento promediando uno coma ocho voltios.
La tensión de alimentación nunca cambia. Solo cambia la fracción de tiempo que está conectada, y la inductancia del motor convierte esa fracción en una media. Descargar SVG

Elige el manejador por corriente, no por tamaño de motor

Encuentra la tensión nominal del motor, la corriente en vacío y la corriente de bloqueo. La corriente de bloqueo es el valor importante para dimensionar el manejador porque es lo que el motor pide cuando el eje no puede girar. Si no hay hoja de datos disponible, mide la resistencia del devanado con el motor desconectado y estima corriente de bloqueo = tensión de alimentación / resistencia del devanado. La resistencia de las puntas del medidor hace que esto sea solo una estimación.

Elige un manejador cuyo rango de tensión de motor incluya la alimentación y cuya corriente de pico pueda sobrevivir al arranque. Luego comprueba la corriente continua y las condiciones térmicas. Una placa anunciada con un gran número de pico puede manejarlo solo brevemente o con refrigeración sustancial.

Cuenta también con la caída de tensión. Los manejadores antiguos de transistores bipolares pueden perder tensión significativa dentro del puente; los manejadores MOSFET modernos suelen desperdiciar menos potencia. Para un robot a baterías, esa diferencia afecta al par y a la autonomía.

Cablea un motor con seguridad

Usa este orden antes de aplicar alimentación:

  1. Conecta la alimentación del motor a la entrada de potencia de motor del manejador y a tierra.
  2. Conecta el motor a las dos salidas del manejador, no a un pin del microcontrolador.
  3. Conecta la tierra del controlador a la tierra del manejador para que las señales lógicas compartan referencia.
  4. Conecta IN1, IN2 y cualquier pin de habilitación a pines digitales adecuados.
  5. Mantén corto el cableado del motor y encamínalo lejos de los cables de sensores analógicos.
  6. Confirma los requisitos de tensión lógica del manejador antes de conectar un ESP32 de 3,3 V o una Raspberry Pi.

Usa un fusible o una fuente de alimentación de laboratorio con límite de corriente durante el primer encendido. Añade desacoplo de alimentación local como recomienda la hoja de datos del manejador. Nunca alimentes un motor bajo carga a través del regulador de 5 V o el conector USB de Arduino —ese es el brown-out (caída de tensión) que se manifiesta como un fallo de software.

Escribe una pequeña función de motor

La interfaz más limpia acepta un comando con signo: positivo es adelante, negativo es atrás y cero es parado. En una placa de estilo Arduino, una implementación mínima se ve así:

const int IN1 = 7;
const int IN2 = 8;
const int PWM_PIN = 5;

void setMotor(int command) {
  command = constrain(command, -255, 255);
  digitalWrite(IN1, command >= 0 ? HIGH : LOW);
  digitalWrite(IN2, command >= 0 ? LOW : HIGH);
  analogWrite(PWM_PIN, abs(command));
}

Este ejemplo asume un manejador con una entrada separada de PWM/habilitación. Un manejador de dos entradas puede esperar PWM en una entrada mientras la otra mantiene el estado de dirección. Sigue su tabla de verdad en lugar de copiar ciegamente la lógica de los pines.

Al invertir la marcha, ordena cero brevemente antes de cambiar de sentido. Una inversión instantánea a máxima velocidad produce un gran transitorio de corriente y un choque mecánico. Una rampa simple también mejora la tracción:

for (int command = 0; command <= 180; command += 5) {
  setMotor(command);
  delay(15);
}

En un bucle de control real, haz que esa rampa esté basada en tiempo en lugar de usar llamadas bloqueantes a delay().

Prueba dirección, velocidad, marcha libre y freno

Levanta las ruedas de la mesa para la primera prueba. Comienza con un ciclo de trabajo bajo, confirma la dirección ordenada y luego auméntalo gradualmente. Registra el comando más bajo que arranca el motor con fiabilidad. La fricción estática crea una zona muerta, por lo que los comandos por debajo de ese umbral pueden zumbar sin moverse.

A continuación, compara los modos de detención. La marcha libre desconecta o libera el puente y deja que la inercia frene el motor. El frenado dinámico cortocircuita los terminales del motor a través del puente para que el motor en giro disipe energía y se detenga más rápido. El frenado produce más estrés eléctrico y mecánico, así que úsalo de manera deliberada.

Por último, coloca el robot en el suelo y repite la prueba. Un motor que gira en vacío puede provocar caídas de tensión (brown-out) en el controlador bajo carga real. Observa la tensión de alimentación durante el arranque y verifica que el manejador no se sobrecaliente.

Diagnostica los fallos comunes

  • El controlador se reinicia cuando arranca el motor: la alimentación cae o el ruido del motor alcanza la línea lógica. Usa suficiente corriente de batería, desacoplo local, masa limpia y regulación separada para la lógica cuando corresponda.
  • El motor solo gira en un sentido: verifica ambas entradas lógicas en el manejador y confirma que standby o enable estén activos.
  • La velocidad apenas cambia con PWM: comprueba que el pin elegido realmente soporte PWM y que el manejador acepte PWM en esa entrada.
  • El manejador se calienta: compara la corriente de carga y de bloqueo con el valor nominal continuo, revisa la caída de tensión e inspecciona si hay un bloqueo mecánico en la transmisión.
  • Los sensores se vuelven ruidosos: separa el cableado del motor del de los sensores, añade la supresión recomendada por el fabricante del motor/manejador y filtra las mediciones solo después de corregir la vía eléctrica.

Una vez que un motor funciona de forma predecible, duplica el canal para un robot de tracción diferencial. El simulador de seguidor de línea demuestra cómo dos comandos de rueda con signo se convierten en dirección, mientras que el simulador de controlador PID muestra cómo la realimentación puede regular la velocidad en lugar de depender únicamente del ciclo de trabajo en bruto.

Conserva los mandos de calibración de hardware

Dos motores nominalmente idénticos rara vez producen una velocidad idéntica. Conserva en software un factor de escala por rueda y el comando mínimo de arranque. Mide en lugar de ocultar la disparidad con un desfase fijo sin explicar. Más adelante, los codificadores en cuadratura (encoders) pueden cerrar el lazo y corregir la velocidad a medida que cambian la carga y la tensión de la batería.

Explora el grafo

Forma parte de estos montajes

Proyectos y rutas de aprendizaje que incluyen este tutorial.

Lecturas adicionales

Referencias