Un motor paso a paso es un dispositivo electromecánico que convierte pulsos eléctricos en movimientos mecánicos discretos. El eje de un motor paso a paso gira en incrementos discretos cuando impulsos de mando eléctrico se aplican a él en la secuencia correcta.
La secuencia de los pulsos aplicados se relaciona directamente con la dirección de rotación de ejes motor. La velocidad de la rotación de los ejes motor está directamente relacionada con la frecuencia de los pulsos de entrada y la duración de la rotación está directamente relacionada con el número de pulsos de entrada aplicada.
Una de las ventajas más importantes de un motor paso a paso es su capacidad para ser controlado con precisión en un sistema de lazo abierto. Control de lazo abierto significa que ninguna información de retroalimentación de posición es necesario. Este tipo de control elimina la necesidad de costosos dispositivos de detección y regeneración como codificadores ópticos.
Esquema eléctrico:
El motor paso a paso del kit es 28BYJ-48 y los parámetros del motor paso a paso son:
- Modelo: 28BYJ-48
- Tensión nominal de entre 5V y 12 V.
- 4 Fases.
- Resistencia 50 Ω.
- Par motor de 34 Newton / metro más o menos 0,34 Kg por cm.
- Consumo de unos 55 mA.
- 64 pasos por vuelta (con medios pasos).
- Reductora de 1 / 64.
- Ángulo de paso: 5,625 °
- Frecuencia: 100Hz
- Resistencia de la C.C.: 50Ω±7 %(25 ° C)
- En tracción par > 34.3mN.m(120Hz)
- Posicionamiento automático par > 34.3mN.m
- Par de fricción: 600-1200 gf.cm
- Resistencia de aislamiento > 10MΩ(500V)
- Aislantes de electricidad : 600VAC/1mA/1s
- Grado de aislamiento : A
- Subida de temperatura < 40K(120Hz)
- Ruido < 35dB (120Hz, No carga, 10cm)
El 28BYJ-48 tiene un paso de 5.625 grados (64 pasos por vuelta usando half-step). El reductor interno tiene una relación de 1/64. Combinados, la precisión total es de 4096 pasos por vuelta, equivalente a un paso de 0.088º, que es una precisión muy elevada.
Datasheet: http://robocraft.ru/files/datasheet/28BYJ-48.pdf
Más información sobre motores paso a paso: https://dronebotworkshop.com/stepper-motors-with-arduino/
Driver para Motor Bipolar 28BYJ-48
Driver del motor
- Tamaño: 42mmx30mm
- Chip de controlador de uso ULN2003, 500mA
- LEDs A, B, C, D indica las cuatro fases las condiciones de trabajo motor paso a paso.
- Conector blanco estándar motor paso a paso.
- Pines de alimentación separados
Conexiones de la placa de driver:
El motor de pasos bipolar tiene generalmente cuatro cables que salen de él. A diferencia de los motores PAP unipolares, steppers bipolares no tienen ninguna conexión común de centro. Tienen dos juegos independientes de bobinas en lugar de otro. Se pueden distinguir de steppers unipolares midiendo la resistencia entre los cables. Debe encontrar dos pares de cables de igual resistencia. Si tienes las puntas de su medidor conectado a dos cables que no están conectados (es decir, no conectada a la bobina del mismo), debería ver resistencia infinita (o sin continuidad).
Modos de control:
Full-step, Half-step y microsteps: https://www.rs-online.com/designspark/stepper-motors-and-drives-what-is-full-step-half-step-and-microstepping
Vamos a usar la secuencia de medios pasos. Con esta secuencia conseguimos una precisión de la mitad del paso. El par desarrollado varía ya que en algunos pasos activamos dos bobinas y en otras solo una, pero a la vez el giro se encuentra más “guiado”, por lo que en general ambos efectos se compensan y el funcionamiento es bueno, salvo en aplicaciones donde estemos muy al límite del par máximo.
Expresando la secuencia en forma de tabla resulta:
Medio-paso | A | B | A’ | B’ |
1 | ON | OFF | OFF | OFF |
2 | ON | ON | OFF | OFF |
3 | OFF | ON | OFF | OFF |
4 | OFF | ON | ON | OFF |
5 | OFF | OFF | ON | OFF |
6 | OFF | OFF | ON | ON |
7 | OFF | OFF | OFF | ON |
8 | ON | OFF | OFF | ON |
Modo de medio paso: secuencia de señal de control 8 pasos (recomendada) 5.625 grados por paso / 64 pasos por una revolución del eje del motor interno. Relación de transmisión 64. Total 64 x 64 = 4096 pasos.
Modo de paso completo: secuencia de señal de control de 4 pasos 11.25 grados por paso / 32 pasos por una revolución de la interna eje de motor. Relación de transmisión 64. Total 64 x 32 = 2048 pasos.
Ejemplo 1 – Uso Arduino con Motor 28BYJ-48 sin librería
Esquema de conexión:
Ejercicio basado en http://www.prometec.net/motor-28byj-48/
Otros tutoriales:
- https://www.luisllamas.es/motor-paso-paso-28byj-48-arduino-driver-uln2003/
- https://programarfacil.com/blog/motor-paso-a-paso/
- http://www.web-robotica.com/arduino/motor-de-pasos-28byj-48-con-driver-uln2003-y-arduino-uno
Para ver los pasos que da, los grados y las bobinas activas ver: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_ver_pasos/stepper_ver_pasos.ino
Ejemplo 2 – Uso Arduino con Motor 28BYJ-48 y Librería Stepper
La otra manera de programar un motor 28BYJ-48 es utilizar la librería Steper que viene incluida con el entorno de desarrollo oficial de Arduino. Esta librería nos facilita el uso de este tipo de motores y viene adaptada para motores bipolares. En este caso la librería stepper usa el modo de paso completo en lugar del medio paso. En este caso el nº de pasos por vuelta es 2048.
Llevando esta secuencia de encendido a una tabla, que posteriormente usaremos para el código, la secuencia quedaría de la siguiente forma:
Paso | A | B | A’ | B’ |
1 | ON | OFF | OFF | OFF |
2 | OFF | ON | OFF | OFF |
3 | OFF | OFF | ON | OFF |
4 | OFF | OFF | OFF | ON |
Código para mover el motor:
#include <Stepper.h> #define STEPS 2048 Stepper stepper(STEPS, 8, 9, 10, 11); void setup() { stepper.setSpeed(10); } void loop() { stepper.step(2048); }
Ejecutar el código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/06-Motor_Paso_a_Paso/stepper_oneRevolution/stepper_oneRevolution.ino
La librería de pasos por defecto que viene pre-instalado con el Arduino IDE sólo admite el método de paso completo y ha limitado características. No se ejecuta el motor 28BYJ-48 de manera muy eficiente y conseguir que dos de ellos se muevan al mismo tiempo para un robot de accionamiento diferencial es un poco más difícil. Se encuentran ejemplos de código que utilizan el método de medio paso, sin bibliotecas adicionales como hemos visto anteriormente.
Existe una librería para half-step: https://www.arduinolibraries.info/libraries/half-stepper
Para mejorar el rendimiento disponemos de la biblioteca AccelStepper https://www.arduinolibraries.info/libraries/accel-stepper. Se ejecutan los motores por pasos 28BYJ-48 steppers de manera muy eficiente y también es compatible con la aceleración (que permite el paso a paso para llegar a una velocidad más alta).