/*
Motor paso a paso bipolar y controlador A4988 (driver).
El motor bipolar es para trabajos mas serios y pesados en comparación con el motor unipolar.
NEMA 17 es un estandar industrial, no es la marca del fabricante.
No se puede manejar el motor paso a paso directamente desde arduino, por esto
se utiliza un controlador o drive. El modelo A4988 es ampliamente utilizado por tener
muchos años en el mercado, su fiabilidad y bajo costo.
El driver tiene un preset para limitar la corriente máxima para no dañar el motor.
Si se supera la corriente máxima se corta de forma automática la alimentación de las bobinas.
Gracias a la inteligencia del circuito integrado, con solo enviar un pulso al circuito step
se logra dar un paso, si necesidad de otras complejidades como las vistas para el motor paso a paso unipolar.
Con el pin DIR se indica el sentido de giro.
Parte izqueirda del módulo se corresponde con el control del motor.
Parte derecha se corresponde conexiones con el motor.
En el conexionado falta un capacitor de 100 uF en paralelo con la alimentación de la fuente externa.
Capacitor recomendado por el fabricante. Capacitor del tipo electrolítico, posee polaridad y NO debe conectarse al revez.
Para este motor una fuente de 2 amper es lo ideal.
No se necesita incluir librería, definir pasos o matrices.
Tener cuenta que a medida que se incrementa la resolución, el torque se disminuye
*/
// No se usa el clásico "int STEP = 4", ...
// No tiene sentido crear una variable de 15 bits para almacenar un número de un solo dígito
// Además el valor no se modificará. Se usa esta directiva al compilador para ahorrar memoria.
#define STEP 4
#define DIR 5
void setup() {
pinMode(STEP, OUTPUT);
pinMode(DIR, OUTPUT);
}
void loop() {
digitalWrite(DIR, LOW); // Se establece el sentido de giro del motor, HIGH o LOW
// Señal cuadrada que el módulo interpreta como un paso que debe dar el motor
// Se dan 200 pasos
for (int i = 0; i < 200; i++){ // para motor de 0.9° 200 pasos = 180°
digitalWrite(STEP, HIGH); // para motor de 1.8° se requieren solo 100 pasos
delay(10);
digitalWrite(STEP, LOW);
delay(10);
}
delay(2000); // Delar para apreciar mejor el cambio de giro
// Se gira la misma cantidad de pasos en el sentido contrario
// SOLO SE CAMBIA HIGH POR LOW EN EL PIN DE DIR
digitalWrite(DIR, LOW);
for (int i = 0; i < 200; i++){
digitalWrite(STEP, HIGH);
delay(10);
digitalWrite(STEP, LOW);
delay(10);
}
delay(2000); // Delar para apreciar mejor el cambio de giro
}