Controlando Motores DC con Arduino y el módulo L298N

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.

Rebajas
DollaTek Mini Drive Controlador de Motor Paso a Paso Junta...
  • El módulo utilizando ST L298N chipset, tiene una fuerte capacidad de conductor, diodo de...
  • tensión lógica de 5V. Tensión de transmisión 5V-35V 2A unidad actual (MAX solo puente)....
  • Tamaño: 43 * 43 * 27mm / 1.69 * 1.69 * 1.06 "

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.

modulo L298N DC motor

L298N Pinout

 

Pin Nombre Función
1, 15 Current Sensing A, Current Sensing B La resistencia sensorial necesita ser conectada entre esta clavija y GND (no se usa en el tablero de conexiones).
2, 3 Out 1, Out2 Salidas del puente A; la corriente que fluye a través de la carga conectada entre estas dos clavijas se monitoriza en la clavija 1.
4 Vs Tensión de alimentación para las etapas de salida de energía
5, 7 Input 1, Input 2 Entradas compatibles TTL del puente A
6, 11 Enable A, Enable B Entrada de habilitación compatible con TTL: el estado High deshabilita el puente A (habilitar A) y/o el puente B (habilitar B).
8 GND Tierra
9 Supply VSS tensión de suministro para los bloques lógicos.
10, 12 Input 3, Input 4 Entradas compatibles TTL del Puente B.
13, 14 Out 3, Out 4 Salidas del Puente B; la corriente que fluye a través de la carga conectada entre estos dos pines se monitoriza en el pin 15.

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

conexiones con Arduino y modulo L298N DC motor

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);
}
}

 

Última actualización el 2023-05-17 / Enlaces de afiliados / Imágenes de la API para Afiliados

Pin It on Pinterest

Shares