CONTENIDO ►
Echemos un vistazo a una extensión muy útil para la placa Arduino Uno, el Motor Control Shield L293D. Veamos el diagrama de conexión de servomotores, motores paso a paso y motores de corriente continua al shield de motores. También puedes leer los comandos utilizados en la librería AFMotor.h y probar diferentes programas para controlar motores paso a paso, servomotores y motores DC desde el microcontrolador Arduino Uno.
Para esta actividad necesitaremos:
- Arduino Uno / Arduino Nano / Arduino Mega
- shield de motores L293D
- motor de corriente continua
- servomotor
- motor paso a paso
- libreria AFMotor.h
Motor Control Shield L293D datasheet, pinout

Características Motor Shield L293D:
- Alimentación: 4,5 – 24 V
- Compatible: Arduino Uno, Mega, Due
- Corriente DC por canal: 600mA
- Corriente pico por canal: 1.2A
- LED Power y pulsador Reset
- Hasta 4 motores sencillos de corriente directa con control de velocidad
- Hasta 2 motores a pasos (unipolares o bipolares)
- Dos conectores independientes para controlar 2 servos pequeños de 5V
Cuando se conectan servomotores y motores al Arduino a través del L293D, se utilizan diferentes puertos a los que no se pueden conectar otros periféricos. Por ejemplo, los puertos digitales 9 y 10 se utilizan para servos, y los puertos 3 a 8 y 12 se utilizan para motores paso a paso y motores. Si quieres conectar algo más, utiliza los puertos 0 y 1, 2 y 13 y las entradas analógicas (A0-A5 se pueden utilizar como salidas digitales).
Conectar shield de motores L293D Arduino

El Motor Shield es sencillo de conectar – se monta encima de la placa Uno (Mega). Tenga en cuenta que sin una fuente de alimentación externa conectada al Motor Shield, la lógica y los motores funcionarán con 5 voltios, que no siempre es suficiente. Por lo tanto, la velocidad de los motores de corriente continua será significativamente diferente cuando la placa Arduino esté conectada desde un ordenador o fuente de alimentación.
Programa Arduino para control del motor desde L293D
#include "AFMotor.h" AF_DCMotor motor1(1); AF_DCMotor motor2(2); void setup() { motor1.setSpeed(255); motor1.run(RELEASE); motor2.setSpeed(255); motor2.run(RELEASE); } void loop() { motor1.run(FORWARD); motor2.run(FORWARD); motor1.setSpeed(255); motor2.setSpeed(255); delay(2000); motor1.run(RELEASE); motor2.run(RELEASE); motor1.run(BACKWARD); motor2.run(BACKWARD); motor1.setSpeed(255); motor2.setSpeed(255); delay(2000); motor1.run(RELEASE); motor2.run(RELEASE); }
Explicación del código para control del motor desde L293D:
- para cada motor debe asignarse un nombre diferente a AF_DCMotor motor1(1);
- la velocidad máxima de rotación de motor1.setSpeed(255); es 255.
La librería estándar Servo.h se utiliza para controlar los servos, los propios servos están conectados a las salidas digitales 9 y 10 a través de pines en el borde de la placa. Sólo se pueden conectar dos servos y dos motores paso a paso al l239d. El primer motor paso a paso se conecta a los terminales M1 y M2 y el segundo a los terminales M3 y M4. En el diagrama anterior se muestra un esquema de la conexión del servo al módulo L293D.

Programa Arduino para control del servo desde L293D
#include "Servo.h" Servo servo; void setup() { servo.attach(9); } void loop() { servo.write(0); delay(1000); servo.write(90); delay(1000); servo.write(180); delay(1000); }
Explicación del código para control del servo desde L293D:
- el comando servo.attach(9); enlaza el servo a la salida digital 9 del Arduino;
- en la función void loop() giramos el servomotor de 0-90-180 grados.

Compatible con las placas Uno y Mega, el shield se coloca directamente sobre la placa Arduino. Los motores paso a paso se conectan a las regletas M1 a M4. Para accionar los motores paso a paso usaremos la clase AF_Stepper cuyas funciones a conocer son: motor.setSpeed(speed) para fijar la velocidad y motor.step(number of steps, direction, algorithm) para girar un número de pasos en una dirección u otra.
Programa Arduino control del motor paso a paso desde L293D
#include "AFMotor.h" AF_Stepper stepper(48, 1); void setup() { } void loop() { for (byte i = 0; i <= 48; i++) { stepper.step(1, FORWARD, DOUBLE); delay(30); } for (byte i = 48; i >= 0; i--) { stepper.step(1, BACKWARD, DOUBLE); delay(30); } }
Explicación del código control del motor paso a paso desde L293D:
- el motor paso a paso es hoy en día el accionamiento ideal en impresoras 3D, máquinas CNC y otros equipos industriales.
Conclusión. El microcontrolador Arduino hace posible que cualquier aficionado principiante pueda construir complejos dispositivos y proyectos de automatización. El uso del Motor Control Shield L293D puede ser un complemento útil para muchos proyectos Arduino, ya que permite conectar 2 servoaccionamientos, 2 motores paso a paso y hasta 4 motores de corriente continua (con inversión del sentido del rotor) a la vez.

En donde haces los diagramas de los circuitos?
Fritzing + Corel Draw