¿Qué es un puente H?

Control de Motores con Puente H y Arduino

20/11/2022

Valoración: 4.17 (12215 votos)

El control preciso de motores es una habilidad fundamental para cualquier entusiasta o profesional de la electrónica y la robótica. Desde pequeños autos robotizados hasta complejos sistemas de automatización de puertas y ventanas, la capacidad de manipular la dirección y la velocidad de un motor de Corriente Directa (CD) es indispensable. Para lograr esto de manera efectiva con una placa Arduino, un componente clave entra en juego: el Puente H. En este artículo, desglosaremos qué es un puente H, cómo funciona y, lo más importante, cómo puedes integrarlo con tu Arduino utilizando el popular módulo L298N para dar vida a tus ideas.

¿Qué es un puente H en Arduino?
En este artículo aprenderás a utilizar un puente H con tu placa Arduino para realizar control de motores de corriente directa (CD), con el, podrás manipular un auto robot, adaptarlo para hacer apertura y cierre de puertas, ventanas, o cualquier otro sistema donde necesites controlar la velocidad y dirección de giro de uno o más motores de CD.

Prepárate para adentrarte en el fascinante mundo del control de motores, donde la teoría se une a la práctica para ofrecerte un dominio total sobre el movimiento de tus proyectos.

Índice de Contenido

¿Qué es un Motor de Corriente Directa (CD) y cómo se Controla?

Antes de sumergirnos en el puente H, es crucial entender la naturaleza de los motores de Corriente Directa (CD). Un motor de CD es, en esencia, un dispositivo electromecánico que convierte la energía eléctrica en energía mecánica rotacional. Su funcionamiento es relativamente sencillo: cuando se le aplica un voltaje adecuado, comienza a girar. La clave aquí reside en la polaridad de la alimentación.

Todos los motores de CD poseen dos terminales, una positiva y una negativa, que determinan el sentido de giro. Si aplicamos el voltaje con la polaridad "correcta" (positivo al positivo del motor y negativo al negativo), el motor girará en una dirección específica. Sin embargo, si invertimos la polaridad de la alimentación (positivo al negativo del motor y negativo al positivo), el motor simplemente girará en el sentido opuesto. Esta característica es fundamental para entender cómo el puente H logra su magia.

Imaginemos un pequeño motor de CD diseñado para operar con 6V. Si le aplicamos 6V directamente, respetando su polaridad, girará en un sentido. Si, por el contrario, conectamos los 6V invirtiendo los cables, observaremos que el motor cambia su sentido de rotación. Es importante destacar que la velocidad de giro de un motor de CD está directamente relacionada con el voltaje de alimentación aplicado, hasta su límite nominal. Siempre es recomendable revisar las especificaciones técnicas proporcionadas por el fabricante para conocer los rangos de voltaje y corriente óptimos, así como la velocidad de giro esperada.

Entendiendo el Puente H: El Cerebro del Movimiento

Aquí es donde el Puente H se vuelve indispensable. Un puente H es un circuito electrónico que nos permite cambiar la dirección de la corriente eléctrica a través de una carga, como un motor de CD. Su nombre proviene de la disposición de sus componentes, que visualmente se asemeja a la letra 'H'.

Este circuito está compuesto típicamente por cuatro interruptores electrónicos, que suelen ser transistores (aunque también pueden ser relés u otros dispositivos semiconductores). Estos transistores están dispuestos de tal manera que, al activar pares específicos, se puede dirigir la corriente a través del motor en un sentido o en el otro. Para un giro en una dirección, se activan dos transistores diagonales; para el giro opuesto, se activan los otros dos transistores diagonales.

Consideremos un diagrama simplificado de un puente H con cuatro transistores (Q1, Q2, Q3, Q4) y un motor en el centro:

  • Si activamos los transistores Q1 y Q3 simultáneamente, la corriente fluirá desde la fuente de alimentación, a través de Q1, luego a través del motor en un sentido, y finalmente a través de Q3 hacia tierra. Esto hará que el motor gire en una dirección.
  • Por otro lado, si desactivamos Q1 y Q3 y activamos los transistores Q2 y Q4, la corriente tomará una trayectoria inversa. Fluira desde la fuente, a través de Q2, luego a través del motor en el sentido opuesto, y finalmente a través de Q4 hacia tierra. Esto resultará en un giro del motor en la dirección contraria.

Es crucial evitar la activación simultánea de transistores en la misma rama vertical (por ejemplo, Q1 y Q2, o Q3 y Q4), ya que esto crearía un cortocircuito directo entre la fuente de alimentación y tierra, lo que podría dañar gravemente tanto el puente H como la fuente de poder.

En resumen, el puente H es el componente fundamental que nos brinda la capacidad de controlar la dirección de la corriente a través de un motor, y por ende, la dirección de su giro, de forma programable y segura.

El Módulo L298N: Tu Aliado para Dos Motores

Para simplificar el uso de los puentes H en nuestros proyectos con Arduino, existen módulos prefabricados que integran el circuito y las conexiones necesarias. El más popular y ampliamente utilizado es el módulo basado en el circuito integrado L298N. Este chip es particularmente útil porque contiene dos puentes H completos en su interior, lo que significa que con un solo módulo L298N, ¡podemos controlar simultáneamente dos motores de CD!

La estructura interna del L298N está diseñada para ofrecer una interfaz sencilla. Cada puente H dentro del chip tiene dos entradas de control (por ejemplo, IN1 e IN2 para el primer motor, IN3 e IN4 para el segundo). Estas entradas permiten manipular estratégicamente los pares de transistores internos para determinar el sentido de giro de cada motor.

El módulo L298N no solo contiene el chip principal, sino también terminales de conexión y jumpers (pequeños puentes de conexión física) que facilitan su configuración y uso. Es vital comprender la función de cada una de estas partes para una conexión y operación correctas:

  • Salidas para Motores: El módulo cuenta con dos pares de salidas, identificadas generalmente como OUT1/OUT2 para el primer motor y OUT3/OUT4 para el segundo motor. Aquí es donde conectaremos las terminales de nuestros motores de CD.
  • Entradas de Control (IN1, IN2, IN3, IN4): Estas son las entradas lógicas que conectaremos a los pines digitales de nuestro Arduino. Las entradas IN1 e IN2 controlan el Motor 1, mientras que IN3 e IN4 controlan el Motor 2. La combinación de estados (HIGH/LOW) en estos pines determinará el sentido de giro o la detención del motor.
  • Entradas de Habilitación (ENA, ENB): Estas entradas sirven para habilitar o deshabilitar la operación de cada puente H. ENA controla el Motor 1 y ENB controla el Motor 2. Si un motor está deshabilitado, no girará independientemente de los estados de sus pines IN. El módulo L298N suele venir con jumpers preinstalados en ENA y ENB, conectándolos a una fuente de voltaje (generalmente 5V internos) para mantenerlos siempre habilitados. Si deseamos un control programable sobre la habilitación (por ejemplo, para controlar la velocidad mediante PWM), deberemos retirar estos jumpers y conectar ENA y/o ENB a pines digitales de nuestro Arduino.
  • Terminales de Alimentación (+12V, GND, +5V): Estas terminales son cruciales para alimentar el módulo y los motores. Su función exacta depende de la configuración de un jumper específico, a menudo llamado Jumper1 o un jumper cercano a las terminales de alimentación.

La siguiente tabla resume la funcionalidad de las terminales de alimentación en función del Jumper1:

Jumper1Terminal +12VTerminal +5V
ConectadoEntrada de 6 a 12 VCD (Para motores)Salida de 5 VCD (Para Arduino/circuito de control)
DesconectadoEntrada de 12 a 32 VCD (Para motores)Entrada de 5 VCD (Para alimentar la lógica interna del L298N)

Cuando el Jumper1 está conectado, el módulo utiliza un regulador de voltaje interno para generar 5V para su propia lógica de control (los transistores internos) a partir del voltaje de entrada (+12V). En este modo, la terminal +5V actúa como una salida de 5V que incluso puedes usar para alimentar tu Arduino en algunos casos (aunque no siempre es lo más recomendable). Cuando el Jumper1 se retira, se deshabilita el regulador interno, lo que permite alimentar motores de mayor voltaje (hasta 35V), pero requiere que suministremos una fuente externa de 5V a la terminal +5V para la lógica interna del L298N.

Recomendación crucial: Siempre que sea posible, utiliza una fuente de voltaje independiente para alimentar los motores y una fuente separada para tu placa Arduino. Esto evita caídas de voltaje en el Arduino cuando los motores demandan alta corriente y protege la placa de posibles ruidos eléctricos generados por los motores. Sin embargo, es absolutamente necesario que las tierras (GND) de ambas fuentes (la del Arduino y la de los motores/módulo L298N) estén conectadas entre sí para establecer un punto de referencia común.

Conectando el Módulo L298N a tu Arduino: Paso a Paso

Vamos a ilustrar la conexión y programación del módulo L298N con Arduino mediante ejemplos prácticos.

Ejemplo 1: Control de un Solo Motor CD

Para este primer ejemplo, asumiremos que queremos que el motor gire siempre a su máxima velocidad posible. Esto significa que podemos dejar los jumpers de habilitación (ENA y ENB) conectados en el módulo L298N.

¿Qué es un puente H en Arduino?
En este artículo aprenderás a utilizar un puente H con tu placa Arduino para realizar control de motores de corriente directa (CD), con el, podrás manipular un auto robot, adaptarlo para hacer apertura y cierre de puertas, ventanas, o cualquier otro sistema donde necesites controlar la velocidad y dirección de giro de uno o más motores de CD.

Utilizaremos un módulo de 4 baterías AA para obtener 6V, que será nuestra fuente para los motores. Como los motores también son de 6V, este voltaje es ideal. Sin embargo, si el Jumper1 está conectado y usamos 6V en la entrada +12V, el regulador interno del L298N podría no funcionar óptimamente para generar los 5V. Por lo tanto, en este escenario, es más seguro y común remover el Jumper1 y alimentar la terminal +5V del L298N directamente desde la salida de 5V del Arduino. El Arduino lo alimentaremos desde el puerto USB de la PC.

Conexiones:

  • L298N GND <--> Arduino GND
  • L298N +5V <--> Arduino 5V
  • L298N OUT1 <--> Motor Positivo
  • L298N OUT2 <--> Motor Negativo
  • L298N IN1 <--> Arduino Digital Pin 2
  • L298N IN2 <--> Arduino Digital Pin 3
  • Terminales de la batería de 6V <--> L298N +12V y GND (asegúrate de que el GND de la batería también esté conectado al GND del Arduino/L298N)

La lógica para controlar el giro del motor es la siguiente:

Dirección del GiroIN1 (o IN3)IN2 (o IN4)
AdelanteHIGHLOW
AtrásLOWHIGH
DetenerLOWLOW

¡Advertencia importante! Nunca coloques ambas entradas (IN1 e IN2) en HIGH al mismo tiempo, ya que esto podría causar un cortocircuito a través del puente H y dañar el módulo.

Código Arduino para un solo motor:

int entrada1 = 2; // Pin de Arduino conectado a IN1 del L298N int entrada2 = 3; // Pin de Arduino conectado a IN2 del L298N void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT); } void loop() { // Girar el motor en un sentido (Adelante) digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); delay(3000); // Gira por 3 segundos // Detener el motor digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); delay(3000); // Detenido por 3 segundos // Girar el motor en sentido contrario (Atrás) digitalWrite(entrada1, LOW); digitalWrite(entrada2, HIGH); delay(3000); // Gira en sentido contrario por 3 segundos } 

Este código hará que el motor gire en un sentido por 3 segundos, se detenga por 3 segundos, y luego gire en el sentido opuesto por otros 3 segundos, repitiendo el ciclo indefinidamente.

Controlando Dos Motores CD Simultáneamente

Dado que el módulo L298N contiene dos puentes H, controlar dos motores es tan sencillo como añadir las conexiones y la lógica para el segundo motor. Utilizaremos cuatro pines digitales de Arduino para las entradas IN1, IN2, IN3 e IN4.

Conexiones Adicionales (manteniendo las anteriores):

  • L298N OUT3 <--> Motor 2 Positivo
  • L298N OUT4 <--> Motor 2 Negativo
  • L298N IN3 <--> Arduino Digital Pin 4
  • L298N IN4 <--> Arduino Digital Pin 5

Código Arduino para dos motores:

int entrada1 = 2; // Motor 1: IN1 int entrada2 = 3; // Motor 1: IN2 int entrada3 = 4; // Motor 2: IN3 int entrada4 = 5; // Motor 2: IN4 void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT); pinMode(entrada3, OUTPUT); pinMode(entrada4, OUTPUT); } void loop() { // Ambos motores giran en el mismo sentido (Adelante) digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); digitalWrite(entrada3, HIGH); digitalWrite(entrada4, LOW); delay(3000); // Giran por 3 segundos // Motor 1 invierte giro, Motor 2 sigue adelante digitalWrite(entrada1, LOW); digitalWrite(entrada2, HIGH); digitalWrite(entrada3, HIGH); digitalWrite(entrada4, LOW); delay(3000); // Se mantiene por 3 segundos // Ambos motores invierten su sentido digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); digitalWrite(entrada3, LOW); digitalWrite(entrada4, HIGH); delay(3000); // Se mantiene por 3 segundos // Ambos motores se detienen digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); digitalWrite(entrada3, LOW); digitalWrite(entrada4, LOW); delay(3000); // Detenidos por 3 segundos } 

Este código ejemplifica un control más complejo, donde ambos motores se mueven en un sentido, luego el primero invierte su giro mientras el segundo sigue, después ambos invierten, y finalmente se detienen, demostrando la flexibilidad del módulo L298N.

Variando la Velocidad del Motor con PWM y el L298N

Para aplicaciones donde se requiere un control más fino sobre el movimiento, como un robot que necesita acelerar o desacelerar, la simple inversión de giro no es suficiente. Aquí es donde entra en juego la Modulación por Ancho de Pulso (PWM). Arduino puede generar señales PWM en ciertos pines (marcados con un ~ en la placa), que simulan un voltaje analógico variando el tiempo que la señal está en estado HIGH.

Para controlar la velocidad de un motor con el L298N, debemos remover el jumper de habilitación (ENA para el Motor 1, ENB para el Motor 2) y conectar el pin de habilitación correspondiente a una salida PWM de nuestro Arduino.

Conexiones Adicionales para control de velocidad (usando Motor 1):

  • Remover el jumper de ENA en el módulo L298N.
  • L298N ENA <--> Arduino Digital Pin 5 (un pin con capacidad PWM)

Código Arduino para control de velocidad de un motor:

int entrada1 = 2; // Pin de Arduino conectado a IN1 del L298N int entrada2 = 3; // Pin de Arduino conectado a IN2 del L298N int enableA = 5; // Pin de Arduino (PWM) conectado a ENA del L298N void setup() { pinMode(entrada1, OUTPUT); pinMode(entrada2, OUTPUT); pinMode(enableA, OUTPUT); } void loop() { // Girar el motor en un sentido a velocidad media (50%) digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); analogWrite(enableA, 128); // 128 es aproximadamente el 50% de 255 delay(3000); // Gira por 3 segundos // Girar el motor en el mismo sentido a máxima velocidad (100%) digitalWrite(entrada1, HIGH); digitalWrite(entrada2, LOW); analogWrite(enableA, 255); // 255 es el 100% de velocidad delay(3000); // Gira por 3 segundos // Detener el motor digitalWrite(entrada1, LOW); digitalWrite(entrada2, LOW); analogWrite(enableA, 0); // 0 detiene el motor (aunque los pines IN ya lo hacen) delay(3000); // Detenido por 3 segundos } 

La función analogWrite() en Arduino toma un valor entre 0 (0% del ciclo útil, motor detenido) y 255 (100% del ciclo útil, motor a máxima velocidad). Al variar este valor en el pin conectado a ENA, podemos controlar la velocidad del motor de manera suave y precisa. Este ejemplo muestra cómo el motor gira a mitad de velocidad, luego a máxima velocidad, y finalmente se detiene, todo en el mismo sentido de giro.

Consideraciones Importantes y Consejos Adicionales

  • Disipación de Calor: Los módulos L298N, especialmente cuando controlan motores que consumen mucha corriente o operan a voltajes elevados, pueden generar una cantidad considerable de calor. Asegúrate de que el módulo tenga suficiente ventilación o considera añadir un disipador de calor adicional si vas a usarlo en aplicaciones exigentes.
  • Protección del Circuito: Aunque el L298N tiene cierta protección interna, siempre es una buena práctica añadir diodos de rueda libre (flyback diodes) en paralelo con las terminales del motor si no están ya integrados en el módulo. Estos diodos protegen el puente H de los picos de voltaje generados por la inductancia del motor cuando se detiene o invierte su giro.
  • Fuente de Alimentación: Reitero la importancia de utilizar una fuente de alimentación robusta y separada para los motores. Las baterías o fuentes de poder que no pueden suministrar la corriente necesaria pueden causar un comportamiento errático en los motores y en el propio Arduino.
  • Elección del Motor: Asegúrate de que el motor que elijas sea compatible con las especificaciones de voltaje y corriente del L298N. El L298N puede manejar hasta 2A por canal (pico de 3A), lo cual es suficiente para la mayoría de los motores de CD pequeños y medianos.

Preguntas Frecuentes sobre el Puente H y Arduino

¿Qué tipo de motores puedo controlar con un puente H?

Principalmente, los puentes H están diseñados para controlar motores de Corriente Directa (CD) con escobillas. También pueden usarse para motores paso a paso bipolares (ya que estos son esencialmente dos bobinas de CD), pero para ello se requiere una lógica de control más compleja.

¿Puedo controlar la velocidad de un motor sin PWM?

Sí, podrías controlar la velocidad variando el voltaje de alimentación del motor, pero esto es mucho menos eficiente y preciso que usar PWM. La Modulación por Ancho de Pulso es el método estándar y recomendado para el control de velocidad en sistemas digitales.

¿Qué hago si mi motor no gira o se comporta de forma errática?

Primero, verifica todas tus conexiones: polaridad, conexiones de GND, pines de control y alimentación. Asegúrate de que los jumpers de habilitación estén correctamente configurados (conectados si no usas PWM, o conectados a un pin PWM si lo usas). Revisa tu código en busca de errores lógicos, como intentar poner ambas entradas IN en HIGH simultáneamente. Finalmente, verifica que tu fuente de alimentación sea suficiente para el motor y el módulo.

¿Por qué mi módulo L298N se calienta mucho?

Un calentamiento excesivo suele indicar que el módulo está manejando una corriente alta. Esto puede deberse a un motor demasiado grande para el L298N, un motor atascado que consume mucha corriente, o una operación prolongada a alta carga. Considera un disipador de calor, un motor más pequeño o un driver de motor con mayor capacidad.

¿Cuál es la diferencia entre el L298N y el L293D?

Ambos son drivers de motor de puente H, pero el L298N es generalmente más robusto, capaz de manejar mayores corrientes (hasta 2A por canal) y voltajes, lo que lo hace adecuado para motores más grandes. El L293D es más pequeño y maneja corrientes más bajas (hasta 600mA por canal), siendo ideal para motores de poca potencia y proyectos más compactos.

Dominar el uso del puente H con Arduino abre un sinfín de posibilidades para tus proyectos de robótica y automatización. Desde los movimientos más sencillos hasta los más complejos, este conocimiento te permitirá controlar con precisión el mundo físico que te rodea. Experimenta con diferentes velocidades, direcciones y secuencias de movimiento. ¡La única limitación es tu imaginación!

Si quieres conocer otros artículos parecidos a Control de Motores con Puente H y Arduino puedes visitar la categoría Librerías.

Subir