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.

 
Su uso de bastante simple, el módulo consta  de 8 pines, de  los cuales 4 están cubiertos con dos jumpers para selección de la salida activa, además tiene de siete bornes, cuatro para las conexiones de las salidas  de  los puente H y 3 más para potencia, una referencia negativa, la ya mencionada salida de 5V y la alimentación que puede ir de 6V a 12V. A continuación señalamos cada uno de los pines:
Donde vemos los 2 bornes correspondientes a salida 1 y 2, que es donde debemos conectar los elementos a controlar; los 3 bornes de potencia, donde vemos la salida de 5V que provee el módulo y  los pines, donde vemos que IN1 y 2 corresponden a la entrada  del puente H correspondiente a la salida 1, lo mismo para IN3 y 4  y la salida 2. También vemos los jumpers de ENA y ENB, los cuales al retirarlos desactivan el puente H de la salida correspondiente.
 
A continuación presentamos un ejemplo dónde se controla la dirección y la velocidad de un motor usando como driver el L298N y un Arduino UNO.
 
Esquema de conexión con Arduino UNO

 

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.


Compartir esta publicación



← Publicación más antigua Publicación más reciente →