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.
- 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.
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 |
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
Debe estar conectado para enviar un comentario.