Uso del L293D (puente H) para controlar 2 motores con Arduino

Qué es el circuito integrado L293D

El circuito integrado L293D es un controlador de 4 canales capaz de manejar corrientes en ambas direcciones de hasta 600 mA en un amplio rango de voltajes, de 4.5 V a 36 V. Está especialmente diseñado para controlar relés, solenoides, motores DC, entre otros.

Sus compactas dimensiones y costo asequible lo convierten en una elección conveniente para integrarse en proyectos con Arduino y otras placas de desarrollo, ofreciendo una solución eficiente y económica para el control preciso de motores y dispositivos similares.

El L293D se encuentra encapsulado en un formato conocido como DIP (Dual Inline Package), caracterizado por su configuración rectangular que cuenta con pines en ambas caras del dispositivo.

Cómo identificar los pines del L293D

La correcta identificación de los pines del circuito integrado L293D es crucial para su adecuado funcionamiento. El primer paso es ubicar la muesca ubicada en uno de sus extremos. El pin 1 es el situado a la izquierda. A partir de este pin, la numeración progresa en sentido antihorario.

Cuáles son las funciones de los pines del L293D

Pines de habilitación:

1,2EN: Activa los canales 1 y 2 del controlador (lado izquierdo) cuando el PIN se establece en HIGH.
3,4EN: Habilita los canales 3 y 4 del controlador (lado derecho) al colocar el PIN en estado HIGH.

Entradas del controlador:

1A, 2A, 3A, 4A: Corresponden a las entradas del controlador, utilizadas para recibir señales de control provenientes del Arduino.

Salidas del controlador:

1Y, 2Y, 3Y, 4Y: Son las salidas del controlador hacia los terminales de los motores.

Pines de alimentación y tierra:

GND: Conexión a tierra y al disipador de calor.
VCC1: Suministro de 5 V para la lógica interna.
VCC2: Alimentación para los motores, rango de 4.5 V a 36 V.

Materiales necesarios para controlar 2 motores con Arduino

Para este proyecto necesitaremos los siguientes materiales:

1 Arduino Nano (o Arduino Uno)
1 circuito integrado L293D
2 motores DC de 3 a 6 V
1 protoboard
4 pilas de 1.5 V.
Cables

Conexiones físicas entre el L293D, Arduino y el motor

Coloca el circuito integrado L293D en una protoboard. Conecta el pin 1 (1,2EN) al pin 10 del Arduino, luego vincula el pin 2 (1A) al pin 3 del Arduino. Dirige el pin 3 (1Y) a uno de los terminales de uno de los motores y conecta los pines 4 y 5 al riel de tierra (-) de la protoboard. Une el pin 6 (2Y) al otro terminal del motor y vincula el pin 7 (2A) al pin 5 del Arduino. Conecta el pin 8 (Vcc2) al polo positivo de una fuente de alimentación de 6 V.

Posteriormente, conecta el pin 9 (3,4EN) al pin 11 del Arduino y el pin 10 (3A) al pin 9 del Arduino. Dirige el pin 11 (3Y) a uno de los terminales del otro motor y conecta los pines 12 y 13 al riel de tierra de la protoboard. Une el pin 14 (4Y) al otro terminal del motor y vincula el pin 15 (4A) al pin 6 de Arduino. Conecta el pin 16 (Vcc1) al pin 5V de Arduino.

Cómo controlar el giro de ambos motores al mismo tiempo

Las conexiones realizadas asignan a los pines 3 y 5 de Arduino el control del giro del motor izquierdo, mientras que los pines 6 y 9 se encargan del motor derecho. Manipulado el estado de los pines entre LOW y HIGH, se puede lograr el giro en el mismo sentido, en sentido contrario o mantener uno funcionando mientras el otro se detiene.

Este nivel de control será fundamental para nuestro próximo proyecto de un vehículo autónomo, donde la manipulación de las ruedas desempeña un papel crucial en la gestión de la dirección.

Míralo funcionar en YouTube Shorts

Código para hacer girar ambos motores hacia adelante

int leftA=3;
int leftB=5;
int rightA=6;
int rightB=9;
int enable12=10;
int enable34=11;
void setup() {
pinMode(leftA, OUTPUT);
pinMode(leftB, OUTPUT);
pinMode(rightA, OUTPUT);
pinMode(rightB, OUTPUT);
pinMode(enable12,OUTPUT);
pinMode(enable34,OUTPUT);
digitalWrite(leftA, LOW);
digitalWrite(leftB, LOW);
digitalWrite(rightA, LOW);
digitalWrite(rightB, LOW);
digitalWrite(enable12,HIGH);
digitalWrite(enable34,HIGH);
}
void loop() {
digitalWrite(leftA,LOW);
digitalWrite(leftB,HIGH);
digitalWrite(rightA,HIGH);
digitalWrite(rightB,LOW);}

Deja un comentario

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

Scroll al inicio