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

Conexiones 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.

Advertencia: No conectes tensi贸n de entrada al pin de +5V si tienes activado el regulador de tensi贸n con el jumper colocado porque puedes provocar un corto y es posible que se da帽e 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

Motores DC con driver L298N y Arduino

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

Motores paso a paso con L298N

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