
Simple Tutorial Stepper Motor con L298N
Eventualmente nuestros proyectos pueda que requieran dexteridad como la de un brazo robótico. Para ello podemos hacer uso de un motor que sea mas preciso, mas responsive y mas fino en su movimiento. Es decir, los motores DC son potentes pero no muy precisos para arrancar o detenerse en ciertas posiciones. Los servos son precisos pero no tienen mucho torque y tardan en responder o cambiar de rumbo.
En este tutorial exploramos los servos. Los servos son interesantes porque nos permiten mover componentes revés y derecho como un brazo que sube y baja o una mano que abre y cierra. También si lo combinamos con 2 dimensiones, podemos hacer que un componente se mueva de izquierda a derecha y de arriba a abajo, como una CNC o una impresora.
Hay bastante teoría sobre motores steppers ya que son motores mucho mas complejos que los simples DC. Referencia (http://homepage.cs.uiowa.edu/~jones/step/). Básicamente hay 2 tipos, unipolares y bi-polares. Lo peculiar sobre los motores en general es:
P = t * s (Power = torque x velocidad)
t = P/s (es decir, el torque es 1/∝ a la velocidad)
t ∝ Amperios-vueltas
L ∝ Hz * s
I = V/R
I = V/(Hz * s)
I 1/∝ s (es decir, la corriente es 1/∝ a la velocidad)
t ∝ Amperios-vueltas
Amperios 1/∝ s
t 1/∝ s
I ∝ t
En fin, a velocidad s=0, t & I = ∞! Esto es importante porque significa que debajo de cierta velocidad, la torque y por ende la I suben tanto que pueden dañar el motor. Es por ello que para poder operar steppers se usan stepper drivers como el A4988 o DRV8825:

La función principal de estos drivers es que limitan la corriente para proteger el motor. Debido a que muchas veces los motores mas potentes son de mayor voltage y los queremos operar con el mayor torque posible, necesitamos que el driver limite la corriente que estos motores quieren demandar a la fuente de poder. Si los motores requieren demasiado torque, pueden demandar demasiada corriente y arruinarse!
Sin embargo también se requiere la funcionalidad de un H-bridge para hacer que el torque se mueva en diferentes direcciones. En nuestro tutorial usaremos un L298N driver board. En realidad este es un h-bridge y no un stepper driver, por ende no protegerá nuestro motor, pero ya que el motor que usamos esta calificado a 12V y 400mA mientras que usaremos una fuente de poder de 9V, es muy improbable que el motor obtenga mucha mas corriente de la que pueda demandar al driver. Ademas solo alcanzaríamos máximo torque con una carga pesada que lleve el motor a su maxima corriente. Pero como no vamos a cargar el motor para este tutorial, estamos seguros.
Requisitos:
- Computadora (mac)
- Arduino UNO o equivalente.
- L298N driver board
- Stepper 12V & 400mA bi-polar (30Ohm por fase)
- Battery pack de 6 batteries AA en serie
- 6 baterias AA
- Arduino IDE (https://www.arduino.cc/en/Main/Software)
El H-bridge que usaremos es el siguiente. Es capaz de suplir hasta 2A pero nuestro motor solo demandara 400mA:

El motor es el siguiente:

Hacemos nuestras conexiones así:

El alambrado es basicamente asi:
L298N——————————
Out1 & Out2 ————-2 cables de 1 winding del stepper
Out3 & Out4 ————-2 cables del otro winding del stepper (bi-polares solo tienen 4 cables)
In1,In2,3&4 ————- Pines digitales 8,9,10 & 11 de la Arduino UNO
Vcc ———————— + de 9V
GND ———————- GND de Arduino UNO
5V ————————- 5V de Arduino UNO
[GND de Arduino UNO a – de 9V]
Al final se mira asi:

Y con la Arduino UNO:

Y el coding es el siguiente:
[pre]
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
// for your motor
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(60);
// initialize the serial port:
Serial.begin(9600);
}
void loop() {
// step one revolution in one direction:
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
delay(500);
// step one revolution in the other direction:
Serial.println(“counterclockwise”);
myStepper.step(-stepsPerRevolution);
delay(500);
}
[/pre]
Este es el código de stepper_oneRevolution incluido con el Arduino IDE. Simplemente hace que el motor se mueva en una dirección, se detenga y luego se mueva en la otra dirección y continua en ese loop indefinidamente. El resultado es el siguiente:
Ahora veamos como controlar un stepper con un driver un poco mas seguro, un L293D motor shield, el cual si limita la corriente a 600mA para mas seguridad. Finalmente veremos como usar un stepper driver para estar 100% seguros de proteger nuestro stepper. Al final, sera cuestión de armar el robot ya con la carga que va a tener que soportar y poder así medir la corriente que demandará el motor como máximo para saber cual escoger.