Arduino (IoT): Simple Tutorial Stepper Motor con L293Dx2 Motor Shield

Arduino Honduras Santiapps Marcio Valenzuela

Simple Tutorial Stepper Motor con L293D Motor Shield

 

Ya hemos manejado un stepper con el H-bridge L298N pero hay otras opciones de H-bridge.  En este caso usamos la L293D motor shield.  Esta es un motor shield que nos permite controlar varios motores a la vez; steppers, DC y servos.

Arduino IoT: Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Stepper L293D Motor Shield

Es importante ver las especificaciones de cada shield ya que hay muchas y todas se parecen!  En este caso la hoja técnica específica que provee hasta 600mA por canal.  Usaremos nuevamente la fuente de 9V para suplir el motor shield.

 

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO o equivalente.
  3. L293D motor shield
  4. Stepper 12V & 400mA bi-polar (30Ohm por fase)
  5. Battery pack de 6 batteries AA en serie
  6. 6 baterias AA
  7. Arduino IDE (https://www.arduino.cc/en/Main/Software)

Los motores tienen requerimientos especiales para poder.  Es importante recordar que es incompatible la necesidad alta de poder de los motores con las necesidades tan bajas de poder para circuitos de lógica como un microcontrolador.  Las opciones para nuestros proyectos de poder usando la shield L293D son:

USB = UNO + SHIELD

Podemos operar la shield y la UNO desde la USB de la computadora.  Esto no es muy recomendable porque solo son 5V y puede resultar en inestabilidad.

USB = UNO & Ext = SHIELD

Si queremos usar la USB para dar poder a la UNO y usar la fuente externa para el motor shield, debemos remover el jumper de la motor shield.  Este metodo es preferible a suplir poder desde la USB a ambos.

Ext = UNO(*) + SHIELD

Podríamos conectar la fuente de poder por el DC barrel jack de la UNO, la cual tiene un diodo de protección.  Este diodo protege contra polaridad reversada únicamente.  En este caso es necesario asegurar el uso del jumper de la motor shield.

Ext = UNO + SHIELD(*)

En este caso usamos la fuente externa para ambos pero en lugar de conectarla a la UNO, la conectamos a la motor shield.

En este caso para simplificar, operaremos la shield con 9V externos, para lo cual tiene una terminal de bloque marcada Ext donde podemos conectarla.

Recuerden que la fuente de poder de 9V esta compuesta de 6 baterias de 1.5V cada una.  Esto es muy diferente a usar una sola batería de 9V.  Esto se debe a la capacidad.  Ambas tienen un potencial de 9V, pero la energía almacenada en 1 sola batería de 9V es mucho menor a la energía almacenada en 6 veces ese numero de baterías!

 

Ahora veamos el setup:

Arduino (oT): Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino (oT): Simple Tutorial Stepper L293D Motor Shield

 

Siempre es mejor opción usar un stepper driver por el tema de la corriente.  Ahora veamos el proyecto.

El motor es el siguiente:

Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela
Arduino IoT Simple Tutorial Stepper Motors L298N Santiapps.com Marcio Valenzuela

Hacemos nuestras conexiones así:

 

La L293D shield casa perfectamente sobre la UNO.

Terminales M1 ————-2 cables de 1 winding del stepper

Terminales M2 ————-2 cables del otro winding del stepper (bi-polares solo tienen 4 cables)

 

Si vamos a usar la USB para la UNO y el stepper, lo cual ensayamos según nuestra imagen de setup arriba,  simplemente conectamos la USB a la UNO, cargamos el sketch y lo dejamos correr.  Esto esta bien para fines de tutorial.  Sin embargo si vamos a usar la fuente de 9V externa, la conexión es así:

Arduino (oT): Simple Tutorial Stepper L293D Motor Shield Santiapps Marcio Valenzuela
Arduino (oT): Simple Tutorial Stepper L293D Motor Shield

La diferencia importante aquí es que conectamos las terminales del battery pack al Ext de la motor shield.  Aquí aparece el USB conectado a la UNO sin embargo esta desconectado de la computadora.

Y el coding es el siguiente:

#include <AFMotor.h>
// Motor with 200 steps per rev (1.8 degree)
// to motor port #1 (M1 and M2)
AF_Stepper motor(200, 1);
void setup() {
 // set up Serial library at 9600 bps
 Serial.begin(9600);
 Serial.println("Stepper test!");
 motor.setSpeed(60); // 60 rpm 
}
void loop() {
 Serial.println("Single coil steps");
 motor.step(200, FORWARD, SINGLE);
 motor.step(100, BACKWARD, SINGLE);
delay(100);
 Serial.println("Double coil steps");
 motor.step(200, FORWARD, DOUBLE);
 motor.step(100, BACKWARD, DOUBLE);
delay(100);
 Serial.println("Interleave coil steps");
 motor.step(200, FORWARD, INTERLEAVE);
 motor.step(100, BACKWARD, INTERLEAVE);
delay(100);
 Serial.println("Micrsostep steps");
 motor.step(200, FORWARD, MICROSTEP);
 motor.step(100, BACKWARD, MICROSTEP);
delay(100);
}

El coding muestra un poco mas de opciones sobre micro-stepping y la opción de interleave.

El resultado es el siguiente:

y

Ahora veamos …

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s