Saltar al contenido
Stepper Motor

¿Cómo utilizar la librería Stepper.h de Arduino?

Este artículo tiene como finalidad enseñar a cómo hacer uso de la librería Stepper de Arduino, la cual incluye una serie de funciones que son especiales para el control de motores de pasos tanto unipolares como bipolares y que por consiguiente nos facilita bastante las cosas a la hora de programar nuestro Arduino (Ver en Amazon).

La librería Stepper viene incorporada por defecto en la IDE de Arduino, por lo que no es necesario descargarla. Para poder hacer uso de ella tan sólo tenemos que ir al menú superior de nuestra IDE de Arduino, nos paramos sobre la pestaña Programa > Incluir librería > y hacer click en Stepper. Al hacer esto te aparecerá la siguiente sentencia sentencia al inicio del código:

 

Funciones de la librería Stepper

Stepper(steps, pin1, pin2, pin3, pin4)

 Con esta función podemos crear una instancia u objeto de la clase Stepper, que representa un motor paso a paso particular conectado a nuestra placa Arduino. Los parámetro que recibe esta función son: el número de pasos que tiene que dar nuestro motor para completar una revolución (steps) y los pines (pin1, pin2, pin3 y pin4) que emplearemos para controlarlo. De estos 4 pines los dos últimos son opcionales. Por ejemplo, en el caso hipotético que quisiéramos controlar un motor unipolar 28BYJ-48, deberíamos crear un objeto de la siguiente forma:

Si quieres saber de dónde sale el 2048 como número de pasos de revolución para el 28BYJ-48, puedes consultar el artículo de  cómo controlar motor paso a paso 28BYJ-48 con Arduino y ULN2003, en donde se explica paso a paso cómo calcularlo.

SetSpeed(rpm)

Esta función nos sirve únicamente para ajustar la velocidad de giro del eje de nuestro motor. El parámetro que recibe dicha función es un número entero, el cual representa la velocidad de rotación (en RPM) que deseamos darle a nuestro motor. Por lo tanto no es una función que retorne ningún valor.

Aunque esta función acepta que se le  ingrese cualquier número entero, debemos respectar la frecuencia máxima admisible entre pulsos dada por el fabricante del motor. Para el caso en concreto del 28BYJ-48 este valor es de 100 Hz, es decir un delay o demora entre pulsos de 1/100=0.01 segundos o 10 milisegundos. Con la finalidad de asegurarnos de que el valor que ingresemos a la función setSpeed cumpla con esta especificación podemos realizar el siguiente cálculo:

o lo que equivale a decir que por cada 60 segundos hay una revolución completa del eje externo del motor. Si dividimos entonces esos 60 segundos entre el número de pasos por revolución del  motor, que ya habíamos dicho que son 2048, obtenemos un delay o demora entre pulsos de 0.02929 segundos = 29.3 ms. Por lo tanto una velocidad de giro de 1 RPM está dentro de la especificación. Si repetimos el procedimiento anterior con 2 y 3 RPM obtenemos que el delay entre pulsos es de 14.65 ms y 9.8 ms (≈ 10 ms). Con lo cual concluimos que los valores para el parámetro rpm de la función setSpeed son 1, 2 y 3 RPM.

Desde luego que un rango de tres valores de RPM no nos da una amplia libertad de control de velocidad, pero esto se de este debe al hecho de que la transmisión mecánica de este motor hace que sea necesario dar relativamente muchos pasos para completar una vuelta. Existen otros motores que pueden ser operados con una velocidad de hasta 20 RPM.

Step(steps)

Esta función manda a girar el motor una cantidad especifica de pasos igual al valor del parámetro steps ingresado en la misma. La velocidad de rotación en cada paso estará determinada por la llamada más reciente de la función setSpeed(). Si queremos invertir el sentido de giro de nuestro motor basta con colocar la cantidad de pasos precedida por el signo menos. Por ejemplo, si quimereamos que nuestro 28BYJ-48 diera un cuarto de vuelta en sentido contrario al original debemos hacer la siguiente llamada

El siguiente vídeo muestra cómo aplicar cada una de estas funciones en una serie de programas muy sencillos. Además en la página oficial de Arduino podrás encontrar ejemplos útiles para el uso de esta librería.

Podemos concluir entonces que se puede controlar un motor paso a paso de una manera sumamente fácil con tan sólo emplear tres funciones de la librería Stepper de Arduino. Ya para terminar, cabe destacar que esta librería únicamente nos permite trabajar con la secuencia de paso completo con dos bobinas, por lo que si quisiéramos operar nuestro motor paso a paso unipolar en las otras dos secuencias debemos utilizar los códigos que se explican en el artículo cómo controlar motor paso a paso 28BYJ-48 con Arduino y ULN2003.