Control de motores DC con Arduino y L293D

Hay muchas formas de lograr el control de motores de DC con un Arduino, siendo una de las más sencillas, a través de un controlador L293D.

El controlador L293D está diseñado específicamente para controlar motores de DC, solenoides y cualquier otra carga con alta impedancia.

Este controlador también permite controlar la velocidad y la dirección de dos motores de DC de forma independiente.

En este nuevo proyecto para aprender a programar en Arduino aprenderás:

  • Cómo funciona el controlador de motor L293D.
  • Cómo conectar un controlador L293D y un motor de DC a una placa Arduino.
  • Cómo controlar la dirección de un motor de DC.

Proyecto de Control de motores DC con Arduino y L293D

Un controlador L293D no es más que un H-Bridge de dos canales IC. De esta forma es capaz de controlar dos motores DC al mismo tiempo de 4,5 V a 36 V.

El siguiente diagrama esquemático muestra el circuito interno que controla un motor:

Dos pares de transistores Darlington (Q1/Q4 y Q2/Q3) están configurados como H-bridge. Hay un diodo en el emisor y el colector de cada transistor, para evitar que la EMF trasera del motor dañe los transistores.

Cuando los transistores Q1 y Q4 están encendidos y los transistores Q2 y Q3 están apagados, la corriente fluye a través del motor desde Vcc a tierra de la siguiente manera:

Esto hace girar el motor en sentido horario o antihorario. El sentido de giro depende de la polaridad del motor y de cómo lo conectes a la corriente.

Cuando los transistores Q2 y Q3 están encendidos y Q1 y Q4 están apagados, la corriente a través del motor se invierte. Al invertir el flujo de corriente a través del motor, se invertirá la dirección de su rotación.

Diagrama de pines del controlador L293D

 

Diagrama de pines L293D

El L293D integra dos H-Bridge separados. Uno a la izquierda y el otro a la derecha:

Diagrama de pines L293D: dos puentes H

El primero permite controlar un motor y el segundo el otro motor.

Cada pin tiene la siguiente función:

  • Salida 1: potencia para motor H-Bridge 1
  • Salida 2: potencia para motor H-Bridge 1
  • salida 3: potencia para motor H-bridge 2
  • salida 4: potencia para motor H-bridge 2
  • V CC 1: Suministro de alimetación 5V de L293D
  • V CC 2: fuente de alimentación del motor (4,5 V a 36 V CC)
  • Enable 1, 2: habilitar/deshabilitar H-bridge 1 (HIGH habilitado, LOW deshabilitado)
  • Enable 3, 4: habilitar/deshabilitar H-bridge 2 (HIGH habilitado, LOW deshabilitado)
  • Entrada 1: señal de control del motor para el H-Bridge 1
  • Entrada 2: señal de control del motor para el H-Bridge 1
  • Entrada 3: señal de control del motor para el H-bridge 2
  • Entrada 4: señal de control del motor para el H-bridge 2

Para encender el motor 1 del H-bridge 1, envíe una señal ALTA al pin de entrada 1 y una señal BAJA al pin de entrada 2.

Esto hará girar el motor en una dirección.

Para hacer funcionar el motor en la dirección opuesta, envíe una señal BAJA al pin de entrada 1 y una señal ALTA al pin de entrada 2. Para apagar el motor, envíe una señal BAJA al pin de entrada 2.

Controlando un motor DC mediante L293D

En este proyecto se hará girar un motor de DC en una dirección durante dos segundos, se detendrá y luego girará en la dirección opuesta durante otros dos segundos.

La conección física de este proyecto puedes observarla en la siguiente imagen:

 

Necesitarás una fuente de alimentación para el motor.

en este proyecto usamos una fuente de alimentación de 12 V para alimentar el motor y una fuente de alimentación de 5 V para alimentar tanto la placa de Arduino como el controlador L293D.

Código Arduino para controlar el motor DC

Listo el montaje físico, sube el siguiente código a tu Arduino:

int in1 = 10;
int in2 = 11;

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
}

void loop() {
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  delay(2000);
  digitalWrite(in1, LOW);
  delay(1000);

  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  delay(2000);
  digitalWrite(in2, LOW);
  delay(1000);
}

Esperamos que este sencillo proyecto te sirva para aprender a controlar motores DC mediante una placa Arduino.

Deja un comentario

programar en arduino logo

En este sitio aprenderas a programar en Arduino de forma gratuita a través de sencillos tutoriales y distintos proyectos.