Controlando Motores DC con Arduino y el módulo L298N Deja un comentario

Cómo controlar Motores de corriente continua con Arduino

En este tutorial, aprenderás unas cuantas cosas sobre la interfaz del módulo de controladores de motor Arduino L298N. El módulo L298N tiene el L298 Motor driver IC que es la parte principal de este módulo. Este módulo utiliza el método PWM para controlar la velocidad de los motores de corriente continua.

Especificaciones del controlador de motor L298N

  • El módulo le permitirá controlar la velocidad y la dirección de dos motores de corriente continua.
    Puede controlar motores que operan entre 5 y 35V y hasta 2A.
  • El módulo tiene un regulador incorporado que ayuda a dar la salida de 5V.
  • El módulo puede ser alimentado de 5 a 35V desde Arduino o desde una fuente de alimentación externa. Se recomienda utilizar siempre la fuente de alimentación externa.
  • También puede controlar un motor paso a paso.
  • Es económico y perfecto para proyectos de robótica.

Pin out del controlador del motor L298N

  • Motor A: Este bloque de terminales dará la salida para el primer motor.
  • Puente de 12 V: Mantén este puente en su lugar si tu voltaje de suministro es menor de 12V y la clavija de alimentación de 5V dará la salida de 5V. Si la tensión de alimentación es superior a 12V, retira este puente y suministra la alimentación de 5V a la clavija de alimentación de 5V para que el Dual H Bridge IC L298 pueda funcionar correctamente.
  • Pines de potencia: Suministra la tensión de alimentación de 5 a 35V en la clavija de 12V y a tierra. Si la tensión de alimentación es superior a 12, asegúrate de retirar el puente de 12 V. La clavija de 5V actuará como Salida si la Vs. es menor de 12V y la clavija de 5V actuará como Entrada si la Vs. es mayor de 12V.
  • Habilitar pines: Quita los puentes de los módulos Enable A y Enable B si quieres controlar la velocidad de los motores DC y conéctalos a los pines PWM de Arduino. Si deseas controlar el motor paso a paso con L298N, entonces mantén el puente en Enable A y Enable B. Mantener el puente en estos pines significa que estos pines estarán altos.
  • Pines Lógicos: Conecta los pines lógicos a cualquier pino digital de Arduino. Esto ayudará a controlar la rotación y la velocidad de los motores de corriente continua.
  • Motor B: Este bloque de terminales dará la salida para el segundo motor.
  • Regulador lineal de 5V: Esto reducirá la tensión de alimentación a 5V y dará la salida en el pin de 5V.

Componentes necesarios para este Tutorial

Los componentes requeridos para este tutorial son los siguientes

  • Arduino
  • Módulo del controlador del motor L298N
  • 2 X Motores DC
  • Módulo Joystick
  • Batería de 12V

Control de los motores de DC con el controlador de motor L298N

El diagrama de circuitos para conectar el módulo del controlador del motor L298N con el Arduino se muestra a continuación. Realiza las conexiones de la siguiente manera

L298N Arduino Batería de 5 a 12V/alimentación
ENA Pin 11
IN1 Pin 9
IN2 Pin 8
IN3 Pin 7
IN4 Pin 6
BNT Pin 10
12V Fuente de alimentación o batería de 5 a 12V
GND GND Negativo de fuente de alimentación o batería

Por último, conecta los dos motores de corriente continua en los dos lados del L298N

Para alimentar el L298N, puedes usar las 2 baterías recargables de 3.7V. Luego conecta el módulo Joystick con el Arduino de la siguiente manera:

Módulo Joystick
Arduino
VCC 5V
VER A1
HOR A0
GND GND

Código del proyecto

//Joystick Pins
int x_key = A0;
int y_key = A1;
int x_pos;
int y_pos;

//Motor Pins
int EN_A = 11; //Enable pin for first motor
int IN1 = 9; //control pin for first motor
int IN2 = 8; //control pin for first motor
int IN3 = 7; //control pin for second motor
int IN4 = 6; //control pin for second motor
int EN_B = 10; //Enable pin for second motor
//Initializing variables to store data
int motor_speed;
int motor_speed1;

void setup ( ) {
Serial.begin (9600); //Starting the serial communication at 9600 baud rate
//Initializing the motor pins as output
pinMode(EN_A, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(EN_B, OUTPUT);

//Initializng the joystick pins as input
pinMode (x_key, INPUT) ;
pinMode (y_key, INPUT) ;
}

void loop () {
x_pos = analogRead (x_key) ; //Reading the horizontal movement value
y_pos = analogRead (y_key) ; //Reading the vertical movement value

if (x_pos < 400){ //Rotating the left motor in clockwise direction
motor_speed = map(x_pos, 400, 0, 0, 255); //Mapping the values to 0-255 to move the motor
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(EN_A, motor_speed);
}

else if (x_pos>400 && x_pos <600){ //Motors will not move when the joystick will be at center
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
}

else if (x_pos > 600){ //Rotating the left motor in anticlockwise direction
motor_speed = map(x_pos, 600, 1023, 0, 255);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(EN_A, motor_speed);
}

if (y_pos < 400){ //Rotating the right motor in clockwise direction
motor_speed1 = map(y_pos, 400, 0, 0, 255);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(EN_B, motor_speed1);
}

else if (y_pos>400 && y_pos <600){
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}

else if (y_pos > 600){ //Rotating the right motor in anticlockwise direction
motor_speed1 = map(y_pos, 600, 1023, 0, 255);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(EN_B, motor_speed1);
}
}

También te puede interesar

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Enviar Whatsapp
Hola 👋
¿En qué podemos ayudarte?