domingo, 17 de diciembre de 2017

Driver L298N - Puente H Motores Arduino


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.


FIN DEL POST

0 comentarios:

Publicar un comentario

Display matricial 8x8 con Arduino SPI y MAX7219

La matrices led de 8x8 son elementos extremadamente útiles para desplegar mensajes que puedan ser visibles desde la distancia. ...