Control motores cc con módulo L298N # VelezDuino 1.2

Seguimos con nuestro RobotCar 2WD construido con los tutoriales del blog de Luis LLamas (VelezDuino 1.0). En esta ocasión vamos a programar el módulo L298N directamente con las funciones de Arduino

El módulo controlador de motores L298N nos permite controlar la velocidad y la dirección de dos motores de corriente continua.

CONEXIÓN ELÉCTRICA

Las salidas para los motores A y B nos darán la energía para mover los motores.
Los pines IN1 e IN2 nos sirven para controlar el sentido de giro del motor A, y los pines IN3 e IN4 el del motor B.
  • Si IN1 está a HIGH e IN2 a LOW, el motor A gira en un sentido, y si está IN1 a LOW e IN2 a HIGH lo hace en el otro.
  • Lo mismo con los pines IN3 e IN4 y el motor B.

Para controlar la velocidad de giro de los motores tenemos que quitar los jumpers y usar los pines ENA y ENB.

  • Los conectaremos a dos salidas PWM de Arduino de forma que le enviemos un valor entre 0 y 255 que controle la velocidad de giro.
  • Si  tenemos los jumpers colocados, los motores girarán a la siempre a la misma velocidad. En nuestro caso hemos optado por esta última opción.

Hemos programado nuestro VelezDuino 1.2 para que realiza la siguiente secuencia:

  • Avanzar 2 segundos, retroceder 2 segundos, derecha 1 segundo e izquierda 1 segundo.
  • De un estado a otro se encuentra parado durante 1,5 segundos.
CÓDIGO ARDUINO
/* RobotCar VelezDuino 1.2
* Control de motores de corriente continua mediante el módulo L298N
* Los jumpers están activados, de esta forma no ejercemos control sobre velocidad motores, irán a máxima velocidad
*/
// Definición de variables y constantes del motor izquierdo (motor A)
const int IN1 = 5; // Pin digital 5 para controlar sentido giro motor izquierdo
const int IN2 = 6; // Pin digital 6 para controlar sentido giro motor izquierdo

// Definición de variables y constantes del motor derecho (motor B)
const int IN3 = 7; // Pin digital 5 para controlar sentido giro motor izquierdo
const int IN4 = 8; // Pin digital 6 para controlar sentido giro motor izquierdo

// Función que se ejecuta una sola vez al cargar el programa
void setup(){
pinMode (IN1, OUTPUT); // Se declaran todos los pines como salidas
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
}

// Creamos las funciones avanzar, parar, retrocer, izquierda y derecha

// Función para avanzar
void avanzar(){
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN1,LOW);
}

// Función para parar
void parar(){
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN1,LOW);
}

// Función para retroceder
void retroceder(){
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN1,HIGH);
}

// Función para girar derecha
void derecha(){
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN1,LOW);
}

// Función para girar izquierda
void izquierda(){
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN1,LOW);
}

// Función que se repite de manera periódica
void loop(){
avanzar ();
delay (2000);
parar ();
delay  (1500);
retroceder ();
delay (2000);
parar ();
delay  (1500);
derecha ();
delay (1000);
parar ();
delay  (1500);
izquierda   ();
delay (1000);
parar ();
delay  (1500);
}

FUNCIONAMIENTO

Inténtalo tú:

  • Modifica el programa para que realice otra secuencia totalmente diferente.

Fuentes consultadas:

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.