Este artículo es el paso 1 para ir adelantando explicaciones sobre el funcionamiento de un robot navegador con dos sensores de obstáculos al frente y uno en la parte trasera, que publicaré en breve. Nos muestra cómo se debe utilizar la placa de manejo (doble puente H) L298N para controlar un motor de CC.
Este módulo tan común en el Mercado, basado en el chip L298, permite controlar dos motores de corriente continua, o un motor paso a paso bipolar, en ambos casos de hasta 2 A por salida.
Diagrama de circuito del circuito integrado L298
El módulo es autosuficiente para funcionar en el control de los motores, sin que sea necesario disponer de elementos adicionales. Ya tiene los diodos de protección de contracorriente y un regulador LM78M05 interno que suministra 5V a la parte lógica del integrado L298.
La salida en la bornera A esta compuesta por las líneas OUT1 y OUT2, y la salida B por OUT3 y OUT4.
En la parte inferior se encuentran los pines de control del módulo, marcados como IN1, IN2, IN3 e IN4. A los lados de estas señales encontramos un pin de 5V preparado para colocar puentes de selección (jumpers) que habilitar cada una de las salidas del módulo, A y B). Los pines de habilitación son nombrados, respectivamente, ENA y ENB (por la palabra en inglés Enable = habilitación).
Conexión de alimentación
Este módulo se puede alimentar de dos maneras: utilizando o no el regulador LM7805 integrado en la placa.
El módulo permite ingresar una alimentación para los motores y lógica de entre 6V a 12V CC (7,5V a 12V si se está utilizando el regulador interno, 78M05).
Cuando el puente de selección de 5V se encuentra activo, dado que de esta manera el regulador se encuentra activo, el pin marcado como +5V tendrá un voltaje de salida de 5V CC. Este voltaje alimenta dentro de la placa la lógica del chip, y también se puede usar para dar alimentación a la parte de control del módulo, ya sea un microcontrolador de otro tipo o una placa Arduino, pero recomendamos que el consumo externo que se tome de la placa L298N no supere los 500 mA.
Cuando el jumper de selección de 5V es retirado, el módulo admite una alimentación más amplia para los motores: de entre 12V a 35V CC. Como en este caso el regulador interno 78M05 no se utiliza, tendremos que conectar el pin de +5V a una tensión de 5V externa, regulada, para alimentar la parte lógica del L298N. Usualmente esta tensión puede ser la misma de la parte de control, ya sea un microcontrolador de otra línea o una placa Arduino.
No se debe conectar una tensión de entrada al pin de +5V cuando se encuentre colocado el puente de selección de 5V. Esto provocaría un conflicto entre ambas fuentes de alimentación y podría dañar permanentemente el módulo.
Control de un motor de CC
Como demostración, vamos a controlar un motor de CC usando la salida B del módulo. El pin de habilitación ENB se mantiene en ALTO por medio de la conexión al pin 3 del Arduino, puesto en ALTO por el programa. Opcionalmente se puede conectar ENB a +5V con el jumper (marcado amarillo en los diagramas) —como se observa en la imagen de abajo—, aunque luego deberemos modificar la conexión para el segundo ejercicio.
El ejemplo fue desarrollado en Arduino UNO, pero el código es compatible con cualquier Arduino.
Esquema de conexión del ejemplo 1
Tabla de señales de control
Código en el Arduino – Ejemplo 1
El programa activará el motor en un sentido por cuatro segundos, luego detiene el motor por medio segundo, después activa el motor en sentido inverso por cuatro segundos, y por último detiene el motor durante cinco segundos. Este ciclo se repite indefinidamente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* Ejemplo de control de motor CC usando modulo L298 El programa activa el motor en un sentido por 4 segundos, para el motor por 500 ms, activa el motor en sentido inverso por 4 segundos y se detiene por 5 segundos. Se repite indefinidamente. */ int ENB = 3; // ENB conectada al pin 3 / SIN EL JUMPER EN ENB int IN3 = 5; // Input4 conectada al pin 4 int IN4 = 4; // Input3 conectada al pin 5 void setup() { pinMode(ENB, OUTPUT); // ENB pinMode(IN4, OUTPUT); // Input4 pinMode(IN3, OUTPUT); // Input3 digitalWrite(ENB,HIGH); // ALTO habilita la salida B / SIN EL JUMPER EN ENB } void loop() { // Motor gira en un sentido digitalWrite(IN4, HIGH); digitalWrite(IN3, LOW); delay(4000); // Motor no gira digitalWrite(IN4, LOW); delay(500); // Motor gira en sentido inverso digitalWrite(IN3, HIGH); delay(4000); // Motor no gira digitalWrite(IN3, LOW); delay(5000); } |
Control de un motor CC con variación de su velocidad
Si queremos controlar la velocidad del motor, debemos hacer uso de una salida PWM, en este ejemplo la salida digital 3 del Arduino Uno. Esta señal PWM será aplicada a los pines de activación de cada salida, ENA y ENB respectivamente, de manera que en este caso los jumper de habilitación a +5V no deben ser colocados.
Esquema de conexión del ejemplo 2
Código en el Arduino – Ejemplo 2
Este programa controla la velocidad de un motor CC aplicando una señal PWM al pin ENB del módulo L298N. Se observará un ciclo de tres velocidades diferentes. Usted puede probar diversos valores de velocidad, pero nunca baje el valor 55 porque un motor que no esté libre (con caja de engranajes, por ejemplo) pude quedar sin girar pero alimentado, lo que producirá una corriente elevada.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
/* Cambio de velocidad de motor CC usando modulo L298 */ int IN3 = 5; // Input3 conectada al pin 5 int IN4 = 4; // Input4 conectada al pin 4 int ENB = 3; // ENB conectada al pin 3 (PWM de Arduino) void setup() { pinMode(ENB, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); analogWrite(ENB,0); } void loop() { // Preparamos la salida para que el motor gire en un sentido digitalWrite (IN3, HIGH); digitalWrite (IN4, LOW); // Aplicamos PWM al pin ENB, haciendo girar el motor, cada 2 seg aumenta la velocidad analogWrite(ENB,55); // Velocidad minima delay(2000); analogWrite(ENB,105); // Velocidad media delay(2000); analogWrite(ENB,255); // Velocidad maxima delay(2000); analogWrite(ENB,0); // Apagamos el motor y esperamos 5 seg delay(5000); } |
Diagrama de circuito del módulo
Diagrama de ejemplo para un robot
Artículos relacionados:
■ Uso de la placa L298N para motores de CC
■ Puente H: Placa controladora de motores L9110S
■ Guía rápida de placas de control de motores
■ Manejo de potencia para motores con el integrado L293D
■ Control de motores de CC por Ancho de Pulso (PWM)
Pingback: Manejo de potencia para motores con el integrado L293D | Robots Didácticos
Pingback: Puente H: Placa controladora de motores L9110S | Robots Didácticos
Pingback: Control de motores de CC por Ancho de Pulso (PWM) | Robots Didácticos