M贸dulo Controlador de Motores L298N
El m贸dulo L298N es un motor driver con un doble puente H que nos permite manejar dos motores de corriente continua o un motor paso a paso bipolar de entre 5V y 35V y de hasta 2 amperios, controlando la velocidad y el sentido de giro de nuestros motores. Es ideal para controlar los motores de nuestros coches sigue l铆neas u otros proyectos de arduino donde utilicemos motores.
El m贸dulo contiene adem谩s un regulador de voltaje de 5V (regulador LM7805) y un jumper que activa el regulador, lo que nos permite alimentar el m贸dulo de 2 maneras diferentes dependiendo del voltaje que necesiten nuestros motores para funcionar.
Invalid table id.C贸mo conectar el Motor Driver L298N
- Bornera de 3 pines para la alimentaci贸n del m贸dulo (+12V, GND y +5V).
- Conector de 2 pines para el jumper de control del regulador de voltaje.
- Conector de 6 pines para el ingreso de se帽ales TTL para el control de los motores (ENA, IN1, IN2, IN3, IN4 y ENB)
- Dos borneras de 2 pines para la salida a los motores.
Alimentaci贸n del M贸dulo L298N
Con el jumper de 5V puesto (regulador activo) podemos controlar motores que funcionen entre 6V y 12V. Al estar activo el regulador, el pin de +5V tendr谩 un voltaje de 5V DC que podremos utilizar para alimentar un m贸dulo externo. En este caso el pin funciona como salida y el m贸dulo a alimentar no debe superar los 500 mA de consumo.
Por el contrario, si tenemos motores que trabajan con voltaje de entre 12V y 35V, deberemos desactivar el regulador quitando el jumper de 5V y utilizar 2 fuentes de alimentaci贸n diferentes. La primera a trav茅s del pin de +12V para alimentar los motores (el voltaje deber谩 ser equivalente al que necesiten los motores). La segunda fuente de alimentaci贸n la conectaremos a trav茅s del pin de +5V. En este caso el pin funciona como entrada y alimentar谩 la parte l贸gica del L298N.
Ten en cuenta que debes conectar el GND del motor driver con el GND de Arduino para que el circuito funcione correctamente.
Resumiendo: Con el jumper puesto el pin de 5V funciona como salida de 5V y nos sirve para alimentar el arduino o lo que necesitemos. Sin el jumper puesto el pin de 5V funciona como entrada y debemos proporcionarle 5V para alimentar la parte l贸gica del m贸dulo.
Control del M贸dulo L298N
El m贸dulo L298N se controla desde una bornera de 6 pines. Los pines IN1, IN2 corresponden a las entradas de la bornera del MOTOR A (OUT1 y OUT2). Mientras que IN3, IN4 permiten controlar las entradas de la bornera del MOTOR B (OUT3 y OUT4) respectivamente.
Los pines ENA y ENB tienen un jumper a +5V y sirven para controlar la velocidad de los motores ingresando una se帽al PWM. Si no deseamos controlar la velocidad del motor debemos conectar el jumper, por el contrario, si queremos controlar la velocidad debermos retirar el jumper.
L298N con Motores de Corriente Continua
Veamos un ejemplo de conexion de motores DC con Arduino + L298N. Controlaremos 2 motores, el Motor A lo giraremos a velocidad fija durante 3 segundos (por lo que no usaremos el pin ENA) y luego giraremos el Motor B a velocidad variable y mostraremos por monitor serie la la variaci贸n en la velocidad.
Diagrama de conexiones
C贸digo para el Sketch Arduino
/* Ejemplo de Control de Motores DC con el modulo L298N Creado EL 09/05/17 para PROYECTOSCONARDUINO.COM */ // Motor A int in1 = 9; // Pin que controla el sentido de giro int in2 = 8; // Pin que controla el sentido de giro // Motor B int enB = 5; // Pin habilita motor B - PWM int in3 = 7; // Pin que controla el sentido de giro int in4 = 6; // Pin que controla el sentido de giro void setup () { // Configura todos los pines como salida pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } void VelocidadFija() { // Gira el Motor A en ambas direcciones a una velocidad fija // Gira el motor A en sentido horario digitalWrite(in1, HIGH); digitalWrite(in2, LOW); delay(3000); // Giramos los motores por 3 segundos // Detenemos el Motor A digitalWrite(in1, LOW); digitalWrite(in2, LOW); } void VelocidadVariable() { // Giramos el Motor B en un rango de velocidad // Usamos PWM para enviar analogWrite() y controlar la maxima velocidad posible // Giramos los motores en un sentido digitalWrite(in3, LOW); digitalWrite(in4, HIGH); // Aceleramos desde 0 hasta la velocidad maxima for(int i = 0; i < 255; i++) { analogWrite(enB, i); // Usamos PWM para variar la velocidad Serial.print("Velocidad: "); Serial.println(i); delay(20); } // Desaceleramos desde la velocidad maxima hasta llegar a 0 for(int i = 255; i > 0; i--) { analogWrite(enB, i); // Usamos PWM para variar la velocidad Serial.print("Velocidad: "); Serial.println(i); delay(20); } // Detenemos los motores digitalWrite(in3, LOW); digitalWrite(in4, LOW); } void loop() { Serial.begin (9600); // inicializa el puerto seria a 9600 baudios VelocidadFija(); Serial.println("Inicia Prueba de Velocidad Fija"); delay(2000); VelocidadVariable(); Serial.println("Inicia Prueba de Velocidad Variable"); delay(2000); }
L298N y Motores Paso a Paso
El m贸dulo L298N permite trabajar con motores paso a paso bipolares o unipolares. En el ejemplo que mostraremos a continuaci贸n usaremos un motor paso a paso bipolar (de 4 cables), pero se podr铆a usar un motor unipolar simplemente descartando los comunes de las bobinas del motor. Deberemos identificar los pares de cables que corresponden a cada bobina del motor utilizando un mult铆metro en modo de continuidad.
Cada bobina del motor se conecta a una bornera de salida del m贸dulo. Los pines ENA y ENB deben ir con sus respectivos jumpers.
En el ejemplo haremos que el motor paso a paso gire una vuelta en un sentido y luego una vuelta en sentido contrario. Utilizaremos la librer铆a Stepper.h que sirve para controlar motores paso a paso y viene instalada en el IDE de Arduino.
El valor de la variable stepsPerRevolution depende del n煤mero de pasos del motor paso a paso. Este valor se encuentra en las especificaciones de la hoja de datos del motor. En nuestro caso el motor paso a paso utilizado es de 48 pasos/vuelta.
Diagrama de conexiones
C贸digo para el Sketch Arduino
/* Ejemplo de Control de Motores Paso a Paso con el modulo L298N Creado EL 09/05/17 para PROYECTOSCONARDUINO.COM */ #include <Stepper.h> //Importamos la librer铆a para controlar motores paso a paso #define STEPS 48 //Ponemos el n煤mero de pasos que necesita para dar una vuelta. 48 en nuestro caso // Ponemos nombre al motor, el n煤mero de pasos y los pins de control Stepper stepper(STEPS, 8, 9, 10, 11); void setup() { // Velocidad del motor en RPM stepper.setSpeed(60); } void loop() { //Girar una vuelta entera en un sentido stepper.step(48); delay(1000); //Peque帽a pausa //Girar una vuelta entera en sentido contrario stepper.step(-48); delay(1000); //Peque帽a pausa }
Recursos Externos
- Pued茅s descargar el Datasheet del L298N en este enlace.
- Esquema de fritzing para el puente h L298N
- Excelente v铆deo del Canal VT en L铆nea: Como usar el driver controlador de motores L298N