Saltar al contenido
Stepper Motor

¿Cómo controlar un motor paso a paso 28BYJ-48 con Arduino y ULN2003?

En este artículo aprenderemos a cómo controlar el modelo de motor unipolar 28BYJ-48 (Ver en Amazon), el cual es perfecto para comenzar a trabajar con proyectos de robótica y automatización, debido a que es relativamente más barato y fácil de controlar que la mayoría de motores de pasos.

El control de este motor lo realizaremos mediante una placa Arduino y un módulo de control basado en el circuito integrado ULN2003, lo cual resulta bastante factible, ya que por lo regular estos motores vienen en kits que incluyen a este módulo.

Características técnicas del motor paso a paso unipolar 28BYJ-48

De acuerdo con el fabricante, el 28BYJ-48 tiene las siguientes características

  1. Un voltaje de alimentación de 5 VDC o 12 VDC dependiendo de la variante del modelo de motor. Podemos diferenciar una variante de la otra mediante la etiqueta en su encapsulado, en la cual se especifica el nivel de tensión al cual ha de trabajar el motor. Para nuestro proyecto emplearemos el motor de 5 VDC.
  2. Cuatro fases o pares de bobinas.
  3. Una caja reductora interna con relación de transmisión de 1:64, lo que quiere decir que por cada 64 revoluciones que haga el rotor, el eje externo del motor dará solamente una revolución. De manera que esta reducción permite disminuir la velocidad en el eje externo al mismo tiempo que aumenta el toque de salida.
  4. Un ángulo de pasos: 5.625º/64 ≈ 0.088º. Esto se debe a que, por la configuración interna del motor, el rotor debe dar 64  pasos con la secuencia de medio paso para completar una vuelta, lo cual se traduce en el eje externo mediante la reducción de 1:64 enCálculo de número de pasos motor 28BYJ-48Cálculo de ángulo de pasos motor 28BYJ-48
  5. Torque de salida de 34.3 mN·m
  6. Una frecuencia de 100 Hz. Esto significa que para que el motor opere satisfactoriamente el periodo o delay entre aplicación de pulsos a las bobinas del motor no debe ser menor a 10 ms, ya que el periodo es el reciproco de la frecuencia y por lo tanto 1/100Hz = 10 ms.
  7. Consumo promedio de corriente por bobina de 40 mA
  8. Resistencia DC de 50 Ω
Motor paso a paso unipolar 28BYJ-48
Diagrama esquemático del motor de pasos unipolar 28BYJ-48

En este diagrama esquemático del 28BYJ-48 se muestran los cables correspondientes a las cuatro fases (azul, rosa, amarillo y  naranja) y el cable del neutro (rojo). Para más información acerca del 28BYJ-48 puedes consultar el datasheet dado por el fabricante.

Resolución del motor de pasos unipolar 28BYJ-48

En los programas que haremos más adelante para probar el funcionamiento del 28BYJ-48 utilizaremos el dato del número de pasos que debe dar el eje externo para completar una revolución. La tabla siguiente muestra la resolución de este motor paso a paso según la secuencia de operación empleada

Resolución 28BYJ-48

La distinción entre los ángulos de pasos y los números de pasos por revolución del rotor y del eje externo se debe a reducción mecánica del 28BYJ-48.

Nota: si aun no sabes en qué consisten las tres posibles secuencias de operación del 28BYJ-48, no te preocupes. Puedes consultar nuestro artículo sobre motores paso a paso unipolares, en donde explicamos detalladamente cada una de éstas.

Características del driver ULN2003

Puesto que el consumo de corriente del 28BYJ-48 es mucho mayor que la corriente que nos puede proveer el Arduino a través de uno de sus pines de salida, requeriremos de un driver o controlador. En nuestro caso utilizaremos el integrado ULN2003, el cual soporta una alta corriente de salida de hasta 500 mA, ideal para satisfacer la demanda de nuestro motor paso a paso.

Como podemos apreciar en el diagrama esquemático del ULN2003, este consta internamente  de 7 inversores, que no son más que compuertas lógicas que invierten el nivel lógico de la entrada en la salida. Es decir que si a una de las 7 entrada del ULN2003 mandamos un 1 lógico, en la salida tendremos entonces un 0 lógico y viceversa. Debido a que el módulo controlador está diseñado especialmente para nuestro motor (que es de cuatro hilos) de los 7 inversores disponibles, sólo ocuparemos 4.

Por último cabe mencionar que los cuatro LEDs en el módulo de control sólo hacen la función de indicar cuando una salida tiene un valor lógico alto. Si quieres profundizar más acerca de las características del ULN2003 puedes consulta el datasheet dado por el fabricante.

¿Cómo conectar el motor paso a paso 28BYJ-48 al ULN2003 y al Arduino?

En las entradas IN1, IN2, IN3 e IN4 del ULN2003 conectaremos los pines 8, 9, 10 y 11 del  Arduino (ver figura 1), los cuales configuraremos como salidas digitales en el programa. Por otro lado, conectaremos las cuatro fases de nuestro motor a las salidas OUT1, OUT2, OUT3 y OUT4 del ULN2003 y el neutro (cable rojo) lo conectaremos a los 5 VDC de la fuente de alimentación (Vcc). Todo esto mediante el conector blanco del módulo.

Conexión de motor de pasos 28BYJ-48 con ULN2003 y Arduino
Figura 1. Conexión de motor de pasos 28BYJ-48 con ULN2003 y Arduino

El resultado será que cuando mandemos un nivel lógico alto a una de las entradas del driver, tendremos un cero lógico en la bobina del motor que esté conectada en la salida correspondiente. Como el común de dicha bobina está conectado a Vcc, ésta se energizará. Finalmente si aplicamos la secuencia de pulsos adecuadas en las entradas del driver, conseguimos que el motor se mueva de manera controlada y precisa.

Nota: como podemos ver en la figura 1, debemos alimentar a Arduino con una fuente externa de entre 7 VDC y 12 VCD (recomendado por el fabricante). La alimentación del módulo de control la podemos obtener conectando los pines 5V y GND de Arduino a los pines de alimentación+ y – , tal y como se muestra en la figura .

Programación del Arduino para controlar stepper motor 28BYJ-48 con driver ULN2003

En los incisos anteriores vimos las características más importantes tanto del motor de pasos 28BYJ-48 como del driver ULN2003. Luego aprendimos cómo debemos hacer la conexión entre estos dos componentes  y el Arduino para poder así controlar satisfactoriamente nuestro motor. Finalmente repasamos las secuencias de operación para controlar un motor paso a paso unipolar. Lo único que nos falta por hacer es programar nuestro Arduino.

El objetivo de nuestra práctica será verificar el funcionamiento del motor de pasos 28BYJ-48 al hacer girar su eje externo una revolución completa para luego detenerse por 5 segundos y comenzar nuevamente el ciclo, el cual se repetirá una y otra vez de manera indefinida. A continuación te dejamos los códigos de tres programas sencillos, para realizar dicha tarea empleando cada una de las secuencia de control para el motor de pasos unipolar:

Código para la secuencia wave drive o de paso completo simple

Código para la secuencia de paso completo con dos bobinas

Código para la secuencia de medio paso