Driver L298N para motores

Driver L298N para motores


Este es un módulo que permite controlar motores de corriente continua o un motor paso a paso bipolar de hasta 2 amperios.

Conectar un motor de corriente continua a nuestro Arduino es sencillo y también variar su velocidad (basta con modificar la tensión que proporcionamos al motor). El problema viene cuando queremos invertir el sentido de rotación del motor. Para ello es necesario invertir la polaridad de la tensión que conectamos en bornes del motor. Arduino nos proporciona una tensión de +5 V, pero no una de -5 V, por lo que para resolver este inconveniente tendremos que diseñar un circuito que se llama puente en H (H-bridge).

En un proyecto sencillo realizado con componentes discretos podríamos realizar un montaje como el siguiente:

Si queremos hacer girar el motor en un sentido cerraríamos dos interruptores:

Y si quisiéramos que girase en sentido contrario serían los otros dos interruptores los que deberían estar cerrados:

Estos circuitos es a lo que se les llama puente H, porque recuerdan a la forma de la letra hache. Sustituyendo los interruptores, que se nos hacen poco prácticos, por componentes electrónicos para poder realizar la inversión del sentido de giro con señales eléctricas y no manualmente tendríamos un circuito similar a este:

Jugando con la tensión en los transistores, trabajando las corrientes de base, podemos conseguir que los transistores pasen del estado de corte a saturación y así poder controlar de forma electrónica lo que antes hacíamos con los interruptores. Observamos que hay transistores PNP y NPN precisamente para poder cambiar la polaridad de la tensión. Los diodos sirven para proteger a los transistores de las corrientes inductivas que provienen del motor cuando se invierte el sentido de giro.

Este montaje, aunque no es complicado, sería tedioso realizarlo, sobre todo si tenemos en cuenta que existen módulos comerciales que realizan la misma función y por un precio razonable. Uno de ellos es el L298N, que nos permite controlar la velocidad y el sentido de giro de dos motores de corriente continua o un motor paso a paso bipolar de manera sencilla gracias a los dos puentes H que lleva integrados. También permite controlar un motor paso a paso unipolar configurado como bipolar.

Sus características son las siguientes:

 

Un ejemplo de uso de este módulo podemos desarrollarlo controlando un motor de corriente continua como haremos a continuación.

Alimentamos el módulo L298N desde una pila de 9V a través de VinGND Arduino. Como no vamos a controlar la velocidad del motor dejamos el jumper puesto en el pin ENA. Alimentamos el motor a través de los bornes correspondientes y conectamos los pines IN1 IN2 a los pines 7 de Arduino. Vamos a hacer girar el motor en un sentido durante un tiempo, lo detenemos y luego lo hacemos girar en sentido contrario.

Un ejemplo de código para el sketch sería el siguiente:

/*
* Ejemplo de sketch de control de motor de
* corriente continua usando módulo L298N
*
* Se activa el motor en un sentido durante
* un tiempo, se detiene y se activa en sentido
* contrario durante un tiempo.
*
* Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
*/

// Definimos las variables para los pines IN1 e IN2

int IN1=9;
int IN2=7;

void setup() {
pinMode(IN1,OUTPUT); //IN1 conectado al pin 9
pinMode(IN2, OUTPUT); //IN2 conectado al pin 7
}

void loop() {
//Hacemos que el motor gire en un sentido
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(5000); //Gira en un sentido durante 5 segundos
//Detenemos el motor
digitalWrite(IN1, LOW);
delay(1000); //Detenemos el motor durante 1 segundo
//Hacemos que el motor gire en sentido contrario
digitalWrite(IN2,HIGH);
delay(5000); //Gira en el otro sentido durante 5 segundos
//Detenemos el motor
digitalWrite(IN2,LOW);
delay(1000);
}

Si queremos controlar la velocidad del motor debemos utilizar los pines ENA ENB y conectarlos a un pin PWM de Arduino. En nuestro caso vamos a controlar el motor A, por lo cual vamos a retirar el jumper que cierra a ENA para poder regular su velocidad.

Vamos a diseñar un código sencillo en el que la velocidad se vaya incrementando poco a poco a escalones hasta detenerlo finalmente.

/*
* Ejemplo de sketch de control de motor de
* corriente continua usando módulo L298N
* con regulación de la velocidad
*
* Se irá incrementando la velocidad
* de manera progresiva
*
* Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
*/

// Definimos las variables para los pines ENA, IN1 e IN2

int IN1=9;
int IN2=7;
int ENA=11;

// Definimos una variable para la velocidad
int velocidad=20;

void setup() {
pinMode(IN1,OUTPUT); //IN1 conectado al pin 9
pinMode(IN2, OUTPUT); //IN2 conectado al pin 7
pinMode(ENA, OUTPUT); //ENA conectado al pin 11
}

void loop() {
//Hacemos que el motor gire en un sentido
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
//Vamos incrementando la velocidad del motor
//Cada iteración se multiplica la velocidad por 10
for(int i=1;i<=10;i++){
analogWrite(ENA,velocidad);
delay(3000);
velocidad=velocidad*i;
}
//Detenemos el motor durante 6 segundos
analogWrite(ENA,0);
delay(6000);
}

 

 

, , ,