Descripción
El motor a pasos 28BYJ-48 unipolar es ideal para aprender sobre el funcionamiento de este tipo de actuadores mediante la realización de prácticas. También es útil para desarrollar pequeños proyectos como plotters, impresoras 3D, routers CNC y maquetas que requieren el posicionamiento de elementos mecánicos con cierta precisión.
Los motores a pasos convierten los impulsos eléctricos en sus terminales en movimientos angulares discretos. Los impulsos deben aplicarse en la secuencia correcta para lograr que el eje del motor gire. Gracias a sus características los motores a pasos son fáciles de usar con microcontroladores para lograr posicionamientos precisos.
Los motores a pasos pueden ser operados a “lazo abierto”, lo que implica que no es necesario ningún hardware adicional como encoders, potenciómetros o sensores para conocer la posición del eje o velocidad, simplemente basta con llevar el conteo de los impulsos aplicados y variar la frecuencia de los mismos para conocer y controlar la posición y velocidad de giro.
Características y especificaciones de motor a pasos 28BYJ-48 unipolar
- Modelo: 28BYJ-48-5V
- Voltaje de operación: 5VDC
- Tipo de motor a pasos: unipolar (5 hilos)
- Consumo de corriente nominal: 100 a 200 mA (dependiendo el modo de funcionamiento)
- Caja de reducción: 1:63.68395 (típicamente aproximado como 1:64)
- Angulo por paso: 11.25 º (antes de la caja reductora)
- Angulo después de reducción mecánica: 0.17665 º
- Pasos por vuelta: 2038 (típicamente redondeado a 2048)
- Resistencia en DC típica: 50Ω ±7% (25℃)
- Frecuencia máxima de operación: > 600Hz
- Torque máximo: 34.3mN.m @ 120Hz
- Longitud del cable: 25 cm (aproximado)
- Peso: 32.15 gramos
- Dimensiones:
- Largo: 4.2 cm
- Ancho: 3.5 cm
- Alto: 3 cm
Documentación
¿Cómo conectar el motor a pasos 28BYJ-48 con Arduino?
Para conectar el motor a pasos 28BYJ-48 con un microcontrolador es necesario utilizar una interfaz de potencia como el módulo driver para motor a pasos ULN2003A, ya que los pines del microcontrolador no pueden proporcionar la corriente necesaria para las bobinas del motor.
El diagrama de conexión con Arduino incluyendo la etapa de potencia se puede encontrar a continuación:

Podemos usar sin problema cualquier combinación de pines de entrada/salida para manejar las bobinas del motor a pasos pero habrá que mantener la secuencia de encendido en el orden correcto.
Código de prueba para Arduino
El código a continuación permite probar el motor a pasos haciéndolo girar en sentido horario y posteriormente en sentido anti horario. El número de vueltas se puede configurar fácilmente cambiando la variable “steps” al inicio del programa.
El programa viene con comentarios que permiten entender su funcionamiento.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /** Geek Factory - "Dale vuelo a tus proyectos" www.geekfactory.mx PROGRAMA DE PRUEBA PARA MOTOR A PASOS UNIPOLAR 28BYJ-48 CONSULTA EL ARCHIVO LICENCIA.TXT PARA CONOCER MÁS SOBRE LOS DERECHOS DE DISTRIBUCIÓN DE ESTE MATERIAL O LA SIGUIENTE URL: HTTPS://WWW.GEEKFACTORY.MX/LICENCIA-CONTENIDO. PUBLICADO BAJO LICENCIA ATTRIBUTION-NONCOMMERCIAL-SHAREALIKE 4.0 INTERNATIONAL (CC BY-NC-SA 4.0). GEEK FACTORY INVIERTE TIEMPO Y RECURSOS EN DESARROLLAR ESTOS EJEMPLOS Y TUTORIALES. SI ENCUENTRAS ÚTIL ESTE CÓDIGO, CONSIDERA REALIZAR UNA COMPRA CON NOSOTROS. Resumen: Este programa gira el motor a pasos una vuelta en sentido horario, luego espera 5 segundos y gira una vuelta en sentido anti horario, espera 5 segundos y vuelve a comenzar. Está diseñado para el motor 28BYJ-48 con el módulo driver ULN2003A. */ // número de pasos por vuelta (aproximado) const uint32_t steps = 2048; // pines utilizados para habilitar las bobinas del motor const int coilPins[] = { 5, 4, 3, 2 }; // secuencia de bobinas para paso completo const int stepSequence[][4] = { { 1, 1, 0, 0 }, { 0, 1, 1, 0 }, { 0, 0, 1, 1 }, { 1, 0, 0, 1 } }; /** Función que cambia los pines de entrada salida a la siguiente combinación necesaria para que el eje del motor se mueva un paso. Recibe un parámetro que indica la dirección: - 1 para avanzar un paso en sentido horario - -1 para avanzar un paso en sentido anti-horario */ void motor_do_step(int direction) { // variable utilizada para llevar el control de los pasos, es declarada // estática para mantener su valor entre llamadas a esta función static int stepIndex = 0; // decidir la dirección del avance stepIndex += direction; // nos mantenemos dentro de los límites del arreglo if (stepIndex > 3) stepIndex = 0; if (stepIndex < 0) stepIndex = 3; // enviamos los valores del arreglo a los pines for (int i = 0; i < 4; i++) digitalWrite(coilPins[i], stepSequence[stepIndex][i]); // esperamos a que el motor realice el movimiento delay(5); } /** Función setup: se ejecuta una vez cuando encendemos el arduino */ void setup() { // configuramos todos los pines usados por el motor como salida for (int i = 0; i < 4; i++) pinMode(coilPins[i], OUTPUT); } /** Función loop: se ejecuta continuamente mientras el arduino permanece encendido */ void loop() { // giro del motor en sentido horario for (int i = 0; i < steps; i++) motor_do_step(1); // esperamos antes de continuar con la otra dirección delay(5000); // giro del motor en sentido anti-horario for (int i = 0; i < steps; i++) motor_do_step(-1); // esperamos antes de continuar con la otra dirección delay(5000); } |
Información relacionada con este producto
- Tutorial básico sobre motores a pasos
- Video con explicación (en inglés)
- Tutorial externo para el motor a pasos unipolar
- Descripción detallada del motor 28BYJ-48 (en inglés)
- Etapa de potencia requerida para el manejo de este motor (driver ULN2003)








Valoraciones
No hay valoraciones aún.