Cómo controlar un motor DC con el driver 754410/L293D (Previsualizar)

conexion de Arduino, motor DC usando el driver SN754410 y botones

Vamos a controlar un pequeño motor DC con Arduino y dos botones. Usaremos un botón para el motor gire en sentido horario y otro botón para que el motor gire en sentido antihorario.

Antes, debemos saber que los motores DC son componentes que necesitan mucha corriente para funcionar y, con frecuencia, necesitan voltajes superiores a los típicos de nuestro microcontrolador, por eso no podemos hacerlos funcionar con los pines de nuestro microcontrolador (como tu placa Arduino/Genuino). Necesitamos un puente en H (del inglés, H-bridge) externo para controlarlos. Esto es, un dispositivo que hace de interfaz entre nuestro microcontrolador y el motor, aportándole toda la corriente que necesite y aislando y protegiendo nuestra placa. Yo voy a usar el chip SN754410 de Texas Instruments, que además de tener el mismo pinout que el conocido driver L293D, puede mover motores de hasta 1A.

¿Qué necesitas conocer del driver de motores SN754410/L293D?

El encapsulado de este chip es PDIP, su pinout es:

SN754410 PINOUT L293D

¿Qué significan cada uno de sus pines?

NombreNúmeroDescripción
1,2 EN1Enable: activa los canales 1 y 2 del driver. Tenermos que activar el enable para poder usar las entradas y salidas del chip.
1A, 2A, 3A, 4A2, 7, 10, 15A: Entradas del driver
1Y, 2Y, 3Y, 4Y3, 6, 11, 14Y: Salidas del driver
GND4, 5, 12, 13GND
VCC28Alimentación de los motores (de 4.5 a 36V)
3,4 EN9Enable: activa los canales 3 y 4 del driver. Tenermos que activar el enable para poder usar las entradas y salidas del chip.
VCC116Alimentación de la lógica interna del chip (5V)

¿Qué vamos a usar?

  • 20 Cables Jumper para prototipar hembra-hembra
    20 Cables Jumper para prototipar macho-hembra
    Seleccionar opciones
    Vista rápida
    3,00  (2,48  excl. IVA)
    En tienda
  • Breadboard 400 puntos para prototipar
    Breadboard 400 puntos para prototipar
    Añadir al carrito
    Vista rápida
    3,50  (2,89  excl. IVA)
    En tienda
  • Driver de motores DC SN754410 (L293D)
    Driver de motores DC SN754410 (L293D)
    Añadir al carrito
    Vista rápida
    4,50  (3,72  excl. IVA)
    En tienda
  • Agotado
    Genuino UNO Rev. 3
    Genuino UNO Rev. 3
    Leer más
    Vista rápida
    25,00  (20,66  excl. IVA)
    Temporalmente no disponible
  • Kit de botones con resistencias pull-up/down
    Kit de botones con resistencias pull-up/down
    Añadir al carrito
    Vista rápida
    2,00  (1,65  excl. IVA)
    En tienda

¿Has trabajado alguna vez con botones? Si no lo has hecho, te recomendamos que para sacar más partido de esta lección eches un ojo a “Entradas digitales: botones“.

¿Lo tienes todo? ¡Empezamos!

Esquema de conexión

Vamos a conectar los componentes como en el siguiente circuito. conexion de Arduino, motor DC usando el driver SN754410 y botones

 

Lo vemos paso a paso:

1. Conectamos la breadboard a Arduino. Llevamos un cable (rojo) desde 5V a la fila roja de la breadboard y un cable (negro) desde GND a la fila azul.

2. Colocamos el driver SN754410/L293D en la breadboard. Con el fin de evitar conexiones indeseadas, lo pinchamos en el centro de la breadboard, yo he puesto la muesca del chip hacia la izquierda.

3. Alimentamos el driver con Arduino. Llevamos un cable (naranja) desde la fila roja de la breadboard hasta el pin 16 del chip y un cable (negro) desde la fila azul de la breadboard al pin 5 del chip. Si le vas a dar mucha caña al driver, te recomiendo que conectes el otro GND (pin 4 del chip), además de mejorar las condiciones de funciomiento del chip, te ayudará también a disipar el calor.

4. Conectamos el motor. Siendo este un componente de salida digital, conectamos cada uno de sus cables a dos pines de salida (output) del driver SN754410/L293D, concretamente pinchamos cada uno de sus cables a los pines 3 (cable amarillo) y 6 (cable verde).

5. Para controlar el motor DC con el driver SN754410/L293D, necesitamos activar el enable, llevamos un cable (cian) desde el pin 1 del chip a un pin PWM de Arduino, yo lo he conectado en el pin 11. Además necesitamos las dos entradas (input) que van a controlar cada una de las direcciones en las que gira el motor, por ello pinchamos un cable (blanco) entre el pin 2 del chip y un pin PWM de Arduino (pin 10) y otro cable (rosa) entre el pin 7 del chip y un pin PWM de Arduino (pin 9).

6. Alimentamos el motor. Para alimentar el motor vamos a usar una fuente independiente. ¡No podemos alimentar el motor con los 5V de Arduino! Porque el regulador de nuestra placa Arduino UNO entrega hasta 800mA, por lo que al conectar el motor estaríamos exigiéndole demasiado. Además, cada motor está diseñado para un voltaje diferente, por ejemplo, el que yo estoy usando es de 6V. Por ello, vamos a usar 4 pilas AAA que conectamos el cable negro a GND (fila azul de la breadboard) y el cable rojo al pin 16 del driver SN754410/L293D.

¡Ya solo nos queda conectar los botones!

7. Conectamos los botones. Pinchamos los botones en el centro de la breadboard, igual que hicimos con el driver. Colocamos una resistencia, cuyo valor esté entre 1k y 10k, desde el botón a la fila roja de la breadboard (pull-up), de esta forma cuando el botón esté relajado, Arduino leerá (HIGH) y cuando esté pulsado leerá (LOW). Conectamos el otro pin del botón a GND, a través de un cable (azul y marrón) a la fila azul de la breadboard. Nos llevamos un cable (morado y verde) desde el pin del botón en el que hemos conectado la resistencia a un pin digital de Arduino, yo he conectado un botón al pin 7 y otro al pin 2.

¡Se acabaron las conexiones! Asegúrate de que no te has dejado nada sin conectar y abre Arduino IDE que ya vamos a ver funcionar nuestro motor.

Programación en Arduino IDE

Primero, vamos a definir constantes que van a almacenar el número del pin de Arduino al que hemos conectado el driver SN754410/L293D y cada uno de los botones:

const int ENABLE = 11;
const int INP1 = 10;
const int INP2 = 9;
const int BOTON_A = 7;
const int BOTON_B = 2;

En la función void setup() inicializamos estos pines. Los pines del chip (INP1, INP2) son entradas en el driver, salidas en Arduino:

  pinMode(ENABLE, OUTPUT);
  pinMode(INP1, OUTPUT);
  pinMode(INP2, OUTPUT);

Los botones son entradas:

  pinMode(BOTON_A, INPUT);
  pinMode(BOTON_B, INPUT);

Llegados a este punto, ¿qué queremos que haga el motor?
Nuestro objetivo es que cuando pulsemos un botón, el motor gire y, cuando pulsemos el otro, el motor gire en el sentido contrario. Entonces, en la función void loop() irán estas condiciones:

Si el botón A está pulsado, acitva el pin INP1, así como el ENABLE

if(digitalRead(BOTON_A) == LOW) {  
  digitalWrite(INP1, HIGH);          
  digitalWrite(ENABLE, HIGH);
}

Pero, si el que está pulsado es el botón B, acitva el pin INP2, así como el ENABLE

else if(digitalRead(BOTON_B) == LOW) {
  digitalWrite(INP2, HIGH);         
  digitalWrite(ENABLE, HIGH);
}

De lo contrario, si no ocurre nada de lo anterior, si no está pulsado ni el botón A ni el botón B, queremos que todo permanezca desactivado

else {
  digitalWrite(INP1, LOW);
  digitalWrite(INP2, LOW);
  digitalWrite(ENABLE, LOW);
}

Finalmente, el código en Arduino IDE nos ha quedado así:

¡Ahora te toca a ti!

¡Cacharrea, crea y comparte tus proyectos!

Volver a: Servos y motores

©2017 Fábrica Digital desde Jerez de la Frontera, España.

956 05 77 07 (llamadas) / 717 717 452 (Whatsapp) / hola@fabricadigital.org

De Lunes a Viernes de 9 a 13h y de 14 a 18h. Sábados de 10 a 14h.

Calle Manuel Yélamo Crespillo, Edif. Los Ramos, 11401 Jerez de la Frontera, Cádiz. - Cómo llegar

Información Legal - Aceptamos

 

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account