En este artículo, te adentrarás en el entorno de los puentes H y aprenderás cómo utilizarlos con tu placa Arduino para controlar motores de corriente directa (DC). Con un puente H podrás manejar un auto robot, adaptar sistemas para abrir y cerrar puertas, ventanas o cualquier otro dispositivo que requiera control de velocidad y dirección de giro de uno o más motores DC.

Cómo funcionan los motores DC
Un motor DC es una carga que, al aplicarle el voltaje correcto, gira en una dirección específica. Todos los motores DC tienen una polaridad definida, es decir, una terminal positiva (+) y una negativa (-). Si cambias la polaridad del motor, simplemente invertirás el sentido de giro.
Imagina un motor DC que funciona a 6V. Si conectas 6V en la polarización directa (positivo-positivo y negativo-negativo), el motor girará en un sentido.
Si luego inviertes la fuente de voltaje (positivo-negativo y negativo-positivo), el motor girará en el sentido contrario.
La velocidad de giro y el voltaje de alimentación están determinados por el fabricante del motor DC. Es fundamental revisar las especificaciones técnicas del fabricante para conocer las características del motor.
¿Qué es un puente H?
Un puente H es un circuito que te permite controlar la dirección de la corriente eléctrica, permitiendo así que el motor gire en un sentido u otro. Esto se logra utilizando cuatro transistores conectados de manera que, cuando necesitas girar el motor en una dirección, se activan dos transistores; y para girar en la otra dirección, se activan los otros dos. La disposición de los transistores se asemeja a la letra "H", de ahí su nombre.
Si se activan los transistores Q1 y Q3, la corriente eléctrica fluye en un sentido a través del motor.
Si se activan los transistores Q2 y Q4, la corriente fluye en el sentido contrario a través del motor.
El puente H te permite controlar la dirección de la corriente, y por lo tanto, la dirección de giro del motor.
El driver L298N con Arduino
Existen varios módulos de puente H para Arduino, pero el más popular es el que contiene el circuito integrado L298N. Este chip contiene dos puentes H, lo que te permite controlar dos motores DC simultáneamente. El circuito integrado tiene dos entradas para cada puente, que se utilizan para controlar estratégicamente cada par de transistores.
Módulo L298N
El módulo L298N, además del circuito integrado, incluye terminales de conexión y jumpers (puentes de conexión). Es crucial entender la función de cada componente para controlar y alimentar los motores.

El módulo L298N tiene dos pares de salidas, uno para cada motor. Para indicar la dirección de giro, el módulo tiene cuatro entradas: IN1, IN2, IN3 e INLas entradas IN1 e IN2 controlan el primer motor, mientras que IN3 e IN4 controlan el segundo motor.
Además, cuenta con entradas de habilitación (ENA y ENB), que te permiten activar o desactivar las salidas del motor. Si el jumper de habilitación está colocado, ambas entradas de habilitación están encendidas. Para un control más preciso, puedes remover el jumper y conectar un cable a una salida de tu Arduino.
El módulo también tiene entradas +12V, GND y +5V. Sus funciones dependen del estado del jumper1:
- Jumper1 conectado: +12V alimenta motores de 6 a 12V y +5V es una salida de 5V.
- Jumper1 desconectado: +12V alimenta motores de 12 a 35V y +5V se utiliza como entrada de 5V. Es necesario proporcionar 5V a la terminal +5V para alimentar los transistores internos del módulo.
Se recomienda usar una fuente de voltaje separada para alimentar los motores y la placa Arduino. Las tierras (GND) de ambas fuentes deben estar conectadas.
Cómo conectar el módulo L298N a Arduino
Si siempre quieres que los motores funcionen a su máxima velocidad, las entradas de habilitación deben estar siempre encendidas, dejando los jumpers conectados.
En un primer ejemplo, conectaremos un módulo de 4 baterías AA para obtener 6V. Si los motores que utilizas son de 6V, el voltaje será suficiente para alimentarlos, pero no para los transistores internos del módulo. Por lo tanto, deberás proporcionar una señal de 5V a través de la salida de 5V del Arduino.
Conecta las entradas IN1 e IN2 a las salidas 2 y 3 del Arduino. El Arduino se alimenta desde la PC.
Control de dirección del motor
Para crear giros en el motor, controla las entradas IN1 e IN2 de la siguiente manera:
| Dirección del giro | IN1 | IN2 |
|---|---|---|
| Adelante | HIGH | LOW |
| Atrás | LOW | HIGH |
| Detener | LOW | LOW |
Recuerda que cuando las entradas son diferentes, el motor gira. Cuando ambas entradas están en LOW, el motor se detiene. Nunca pongas ambas entradas en HIGH al mismo tiempo.
Ejemplo de código
Para probar el control de dirección, utiliza el siguiente código:
int entrada1 = 2;int entrada2 = 3;void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT);}void loop() { digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); // Adelante delay(3000); digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); // Detener delay(3000); digitalWrite(entrada1, LOW); digitalWrite(entrada2, HIGH); // Atrás delay(3000);}Este código hace que el motor gire en un sentido, haga una pausa de 3 segundos, se detenga por 3 segundos, gire en el sentido opuesto por 3 segundos y repita el ciclo.
Control de dos motores de CD
Para controlar dos motores simultáneamente, solo debes agregar las señales de control para el segundo motor. El diagrama de conexiones y el código son los siguientes:
int entrada1 = 2;int entrada2 = 3;int entrada3 = 4;int entrada4 = 5;void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT); pinMode(entrada3, OUTPUT); pinMode(entrada4, OUTPUT);}void loop() { digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); // Motor 1 adelante digitalWrite(entrada3, HIGH); digitalWrite(entrada4, LOW); // Motor 2 adelante delay(3000); digitalWrite(entrada1, LOW); digitalWrite(entrada2, HIGH); // Motor 1 atrás digitalWrite(entrada3, HIGH); digitalWrite(entrada4, LOW); // Motor 2 adelante delay(3000); digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); // Motor 1 adelante digitalWrite(entrada3, LOW); digitalWrite(entrada4, HIGH); // Motor 2 atrás delay(3000); digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); // Motor 1 detener digitalWrite(entrada3, LOW); digitalWrite(entrada4, LOW); // Motor 2 detener delay(3000);}Control de velocidad del motor
Para variar la velocidad del motor, necesitas controlar la entrada de habilitación (ENA o ENB). Remueve el jumper correspondiente y conecta un cable a una salida PWM del Arduino.
Utiliza el mismo esquema del ejemplo anterior, pero conecta el ENA a la salida 5 del Arduino.
int entrada1 = 2;int entrada2 = 3;int enableA = 5;void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT); pinMode(enableA, OUTPUT);}void loop() { digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); // Motor adelante analogWrite(enableA, 128); // 50% de velocidad delay(3000); digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); // Motor adelante analogWrite(enableA, 255); // 100% de velocidad delay(3000); digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); // Motor detener analogWrite(enableA, 255); // 100% de velocidad (detener) delay(3000);}En este código, la variable enableA controla la entrada ENA del módulo. Se usa la función analogWrite para enviar una señal PWM, variando el ancho del pulso para ajustar la velocidad del motor. La señal PWM puede ir del 0 al 100%, con valores de 0 a 25
El código hace que el motor gire al 50% de velocidad durante 3 segundos, luego al 100% durante 3 segundos, se detiene durante 3 segundos, y repite el ciclo.
¿Qué proyecto puedes crear con un puente H?
Las posibilidades son infinitas. Puedes construir un auto robot controlado por Arduino, sistemas de apertura y cierre de puertas, robots con brazos, robots de seguimiento de líneas y mucho más. ¡Deja volar tu imaginación!
Este artículo te ha brindado una base sólida para comprender cómo funcionan los puentes H con Arduino. Experimenta con los ejemplos de código y crea tus propios proyectos. ¡Comparte tus resultados y proyectos con la comunidad de Arduino!
Si quieres conocer otros artículos parecidos a Puente h con arduino: control de motores dc, velocidad y dirección puedes visitar la categoría Motor.
