El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión entre 4,5 V a 36 V.
Los circuitos individuales se pueden usar de manera independiente para controlar cargas de todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero además, cualquiera de estos cuatro circuitos sirve para configurar la mitad de un puente H.
El integrado permite formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de dos motores. En este caso el manejo será bidireccional, con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad.
Diagrama detallado del circuito interno
Diagrama simplificado
Las salidas tienen un diseño que permite el manejo directo de cargas inductivas tales como relés, solenoides, motores de corriente continua y motores por pasos, ya que incorpora internamente los diodos de protección de contracorriente para cargas inductivas.
Las entradas son compatibles con niveles de lógica TTL. Para lograr esto, incluso cuando se manejen motores de voltajes no compatibles con los niveles TTL, el chip tiene patas de alimentación separadas para la lógica (VCC1, que debe ser de 5V), y para la alimentación de la carga (VCC2, que puede ser entre 4,5V y 36V).
Las salidas poseen un circuito de manejo en configuración «totem-pole» (término en inglés que se traduce como «poste de tótem», nombre que, gráficamente, nos remite a un «apilamiento» de transistores, como las figuras en los famosos totems indígenas).
En esta estructura, unos transistores en configuración Darlington conducen la pata de salida a tierra y otro par de transistores en conexión seudo Darlington aporta la corriente de alimentación desde VCC2. Las salidas tienen diodos incorporados en el interior del chip para proteger al circuito de manejo de potencia de las contracorrientes de una carga inductiva.
Estos circuitos de salida se pueden habilitar en pares por medio de una señal TTL. Los circuitos de manejo de potencia 1 y 2 se habilitan con la señal 1,2EN y los circuitos 3 y 4 con la señal 3,4EN.
Las entradas de habilitación permiten controlar con facilidad el circuito, lo que facilita la regulación de velocidad de los motores por medio de una modulación de ancho de pulso. En ese caso, las señales de habilitación en lugar de ser estáticas se controlarían por medio de pulsos de ancho variable.
Las salidas actúan cuando su correspondiente señal de habilitación está en alto. En estas condiciones, las salidas están activas y su nivel varía en relación con las entradas. Cuando la señal de habilitación del par de circuitos de manejo está en bajo, las salidas están desconectadas y en un estado de alta impedancia.
Por medio de un control apropiado de las señales de entrada y conectando el motor a sendas salidas de potencia, cada par de circuito de manejo de potencia conforma un puente H completo, como se ve en el diagrama de arriba, lado izquierdo. En la tabla de funcionamiento que sigue se puede observar los niveles TTL que corresponden a cada situación de trabajo:
Ejemplo de circuito en forma de puente H (para control bidireccional del motor) y su tabla de manejo
Disipador
Las patas centrales de la cápsula del chip están pensadas para proveer el contacto térmico con un dispador que permitirá lograr la potencia máxima en el manejo del integrado. En la figuras que siguen se observa la distribución de pines afectados a esta disipación, el área de cobre que se deja en el circuito impreso por debajo y a los lados del chip, y el diseño del disipador que propone el fabricante. La hoja de datos aporta una curva que permite una variación de estos tamaños según la potencia a manejar.
Shield de Arduino
Esta plaqueta posee dos L293D, o sea que permite controlar 4 motores de CC o dos motores paso a paso. Tiene aparte otras salidas.
Diagrama de la placa
Utiliza estos pines en el Arduino UNO:
Digital 4 – DIR_CLK
Digital 7 – DIR_EN
Digital 8 – DIR_SER
Digital 12 – DIR_LATCH
Digital 11 – PWM_Motor1
Digital 3 – PWM_Motor2
Digital 6 – PWM_Motor3
Digital 5 – PWM_Motor4
Digital 9 – Servo_1
Digital 10 – Servo_2
Descargamos ahora una librería de Adafruit para manejar el Shield directamente, ya que si no el manejo podría resultar bastante complicado.
La librería que necesitamos es esta adafruit-Adafruit-Motor-Shield-library-8119eec, y para instalarla seguimos el procedimiento habitual.
Para iniciar la plaqueta, necesitamos incluir este par de instrucciones:
1 2 |
#include <AFMotor.h> AF_DCMotor Motor1(1); |
La primera línea incluye la librería de AdaFruit en el programa. La segunda crea una instancia de un motor conectado a la puerta M1. La inicialización se define con el parámetro que le pasamos, que puede ir del 1 = M1 al 4 = M4.
Para establecer la velocidad del motor:
1 2 |
Motor1.setSpeed(200); // Definimos la velocidad de Motor1 Motor1.run(RELEASE); |
La primera línea define la velocidad el motor a 200. El valor 255 sería el máximo de RPM. La segunda línea indica que deseaemos dejar el motor en punto muerto.
Para que el motor avance usamos:
1 |
Motor1.run(FORDWARD); |
Y para que retroceda:
1 |
Motor1.run(BACKWARD); |
Es todo lo necesario para controlar un motor.
Si queremos hacer un primer programa sencillo que haga avanzar el motor unos segundos y después retroceda, he aquí el programa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <AFMotor.h> AF_DCMotor Motor1(1); void setup() { Motor1.run(RELEASE); } void loop() { Motor1.run(FORWARD); delay (2000); Motor1.setSpeed(180); Motor1.run(BACKWARD); delay (2000); } |
En caso de querer controlar cuatro motores:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <AFMotor.h> AF_DCMotor Motor1(1); AF_DCMotor Motor2(2); AF_DCMotor Motor3(3); AF_DCMotor Motor4(4); void setup() { Serial.begin(9600); // set up Serial library at 9600 bps Motor1.setSpeed(255); Motor2.setSpeed(255); Motor3.setSpeed(255); Motor4.setSpeed(255); } // Por ultimo vamos a mandar moverse adelante y atrás // para los 4 motores simultáneamente. Usted puede adaptar // a sus necesidades Motor1.run(RELEASE); Motor2.run(RELEASE); Motor3.run(RELEASE); Motor4.run(RELEASE); delay (1000) ; Motor1.run(FORWARD) ; Motor2.run(FORWARD); Motor3.run(FORWARD); Motor4.run(FORWARD); delay (2000); Motor1.run(BACKWARD); Motor2.run(BACKWARD); Motor3.run(BACKWARD); Motor4.run(BACKWARD); delay (2000); |
Enlaces: L293D, Hoja de datos – Quadruple Half-H Drivers
Artículos relacionados:
• Uso de la placa L298N para motores de CC
• Puente H: Placa controladora de motores L9110S
• Guía rápida de placas de control de motores
• Manejo de potencia para motores con el integrado L293D
• Control de motores de CC por Ancho de Pulso (PWM)
Pingback: Guía rápida de placas de control de motores | Robots Didácticos