Driver L298N - Puente H Motores Arduino
Publicado por Victor Arrieta en
El driver L298N es un módulo consistente de un circuito puente H y algunos componentes extras para funciones como selección del puente H activo (el circuito integrado contiene 2 en realidad) y una fuente de 5V por medio de un regulador interno, con el fin de usarla en caso de sea necesaria en nuestro circuito.
Cuando el jumper de selección de 5V está colocado (activo), el módulo admite una alimentación de corriente directa (DC) en el rango de 6V a 12V. En esta configuración, el regulador de voltaje integrado se encuentra operativo, por lo que el pin identificado como V lógico o +5V proporcionará una salida constante de 5V DC. Este voltaje puede utilizarse para alimentar la parte de control del sistema, como un microcontrolador o un Arduino. Sin embargo, se recomienda que el consumo total no supere los 500 mA.
Por otro lado, cuando el jumper de selección de 5V está retirado (inactivo), el módulo puede recibir una alimentación de entre 12V y 35V DC. En esta configuración, el regulador de voltaje no está funcionando, lo que requiere conectar el pin +5V a una fuente externa de 5V para alimentar la parte lógica del módulo L298N. Usualmente, esta tensión proviene del mismo sistema de control, como un microcontrolador o un Arduino.
Código Arduino UNO
int IN1 = 11;
int IN2 = 10; // definimos los pines
void setup() {
pinMode(IN1,OUTPUT); // definimos los pines como salida
pinMode(IN2,OUTPUT);
delay(100);
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW); // damos valores iniciales a la salida
delay(1000);
}
void loop() {
for (int i=0 ; i < 256 ; i++) // el motor aumenta su velocidad
{
analogWrite(IN1,i);
digitalWrite(IN2,LOW);
delay(200);
}
for (int i=256 ; i > 0 ; i--) // disminuye la velocidad
{
analogWrite(IN1,i);
digitalWrite(IN2,LOW);
delay(200);
}
digitalWrite(IN1,LOW); // se detiene
digitalWrite(IN2,LOW);
delay(5000);
for (int i=0 ; i < 256 ; i++) // cambia de sentido y aumenta su velocidad
{
analogWrite(IN2,i);
digitalWrite(IN1,LOW);
delay(200);
}
for (int i=256 ; i > 0 ; i--) // disminuye nuevamente su velocidad
{
analogWrite(IN2,i);
digitalWrite(IN1,LOW);
delay(200);
}
digitalWrite(IN1,LOW); // el motor se detiene
digitalWrite(IN2,LOW);
delay(5000);
}
Al subir este código verás al motor aumentar lentamente su velocidad en una dirección hasta su velocidad máxima y luego disminuirla lentamente hasta detenerse para finalmente girar en sentido contrario de la misma forma, repitiendo este comportamiento una y otra vez.