Motor paso a paso con Arduino
A continuación, se presenta como realizar un circuito con un motor paso a paso y Arduino.
Un motor paso a paso puede ser unipolar o bipolar, donde el unipolar es de 6-5 hilos y el bipolar de 4, esto debido a que uno tiene un devanado central en sus bobinas y el otro no, como se muestra en la figura 1.
Figura 1. Motor unipolar / Motor bipolar
Para poder usar cualquiera de los 2 se necesita un driver especifico para cada motor o ya sea transistores Darlington para el unipolar o puentes H para el bipolar, en este caso vamos a utilizar transistores Darlington para un motor unipolar.
Materiales:
- 1 Arduino
- 1 Motor paso a paso
- 1 ULN2803A o ULN2003
Diagrama del circuito:
Figura 2. Diagrama del circuito
Para programar este circuito en Arduino hay 2 opciones:
- Programar desde cero utilizando las secuencias presentadas en las siguientes tablas, donde después de cada secuencia se debe poner como mínimo un delay de 20ms.
- Programar utilizando la librería que se encuentra en el IDE de Arduino
Secuencia para controlar motores paso a paso Unipolares:
En las siguientes tablas los extremos mencionados hacen referencia a los extremos presentados en la figura 1.
En la tabla 1 se presenta la secuencia "simple" donde únicamente se activa una bobina a la vez, haciendo que el motor tenga menos torque pero siendo más suave el giro.
Tabla 1. Secuencia simple
En la secuencia "normal" vista en la tabla 2 es la más utilizada y recomendada por los fabricantes, esta secuencia hace que el motor avance un paso cada vez ya que siempre hay 2 bobinas activadas y gracias a eso se obtiene un mayor torque.
Tabla 2. Secuencia normal
Por último en la tabla 2 se muestra la secuencia "medio paso" donde el motor avanza solo la mitad del paso real ya que primero se activan 2 bobinas, luego solo una y así sucesivamente, percutiendo en un giro más suave y con mayor precisión
En este caso se va a utilizar la segunda opción que es programar utilizando la librería que se encuentra en el IDE de Arduino.
Código de Arduino:
#include <Stepper.h>
#define STEPS 200 //número de pasos que necesita para dar una vuelta, en nuestro caso son 200
Stepper stepper(STEPS, 8, 9, 10, 11); //Stepper "nombre motor" (número de pasos por vuelta, pins de control)
void setup()
{
stepper.setSpeed(100);// Velocidad del motor en RPM
}
void loop()
{
//Girar una vuelta entera en un sentido y una pequeña pausa
stepper.step(200);
delay(1000);
//Girar una vuelta entera en sentido contrario y una pequeña pausa
stepper.step(-200);
delay(1000);
}
Video del funcionamiento:
Comentarios
Publicar un comentario