Está en la página 1de 9

Control de Motores 2

8vo Ingeniería en Mecatrónica

Motor Paso a paso con 28BYJ-48 Driver


ULN2003 y Arduino
El motor paso a paso es muy utilizado actualmente ya que podemos obtener con él un control de
movimiento y un posicionamiento preciso, algo que no podemos lograr con un motor DC. Lo
podemos encontrar en todo tipo de impresoras, máquinas CNC, escáneres, lentes de cámaras,
equipos biométricos y un largo etcétera.

Pasos por revolución en un motor paso a paso

Según como se polaricen las bobinas de un motor paso a paso, podemos tener tres tipos
de funcionamiento:

• Paso completo (full-step)

También llamado movimiento por ola (wave drive). Aquí se excita una bobina y luego la
otra, se consigue un buen torque y consumo medio de potencia.

Sabemos que el círculo se divide en 360° y el eje de un motor paso a paso al hacer un giro
completo, puede hacerlo en una determinada cantidad de pasos, que dependerán del
fabricante del motor.

Para calcular el número de grados por cada giro completo del eje del motor paso a paso,
usamos la siguiente fórmula:

Por ejemplo, el motor paso a paso NEMA 17, que es uno de los más utilizados, gira una
revolución completa en 200 pasos y por tanto si dividimos 360°/200, resulta que cada
paso del motor equivale a 1.8°.

Otro motor paso a paso muy utilizado es el 28BYJ-48, da 64 pasos por revolución, por
tanto 360°/64 nos resulta 5.62° para cada paso del motor.

En ocasiones nos darán el número de grados y nos pedirán el número de pasos o saltos
para realizar una vuelta completa.

Si nuestro motor paso a paso gira en saltos de 90° ¿cuál será el número de pasos en un
giro completo del eje?
Control de Motores 2
8vo Ingeniería en Mecatrónica

Es decir, el número pasos para dar un giro completo son 4.

• Medio paso (half-step)

Aquí se excitan dos bobinas simultáneamente, se consigue el máximo torque, pero


también el mayor consumo de potencia.

En este caso el número de grados por paso se divide entre dos. Por ejemplo, un motor
paso paso NEMA 17 gira una revolución completa en 200 pasos o 1.8° por paso,
trabajando en modo paso completo, en funcionamiento de medio paso sería de 0.9° por
paso o 400 pasos por giro.

Para lograr esto y como se muestra en la imagen superior se deben energizar las dos
bobinas con las polaridades adecuadas para colocar el rotor en una posición intermedia
por estar atraído por ambas bobinas.
Control de Motores 2
8vo Ingeniería en Mecatrónica

En el caso que ya hemos estudiado de paso completo, eran 4 pasos por giro completo del
motor, ahora serán 8. Como consecuencia, al duplicar la resolución angular, lograremos
mayor torque y suavidad en el desplazamiento.

• Micropaso (microstep)

En este modo el ángulo de paso natural de un motor paso a paso puede ser dividido en
ángulos mucho menores, generalmente entre 10 y 256.

Como ejemplo el motor paso a paso NEMA 17, que gira 1.8° por cada paso, con una
división entre 10 se movería a 0.18° por paso, lo que equivale a 2000 pasos por
revolución.

Para trabajar en modo micropaso, la corriente que se proporciona a las dos bobinas del
motor paso a paso debe ser limitada y debe ser controlada en forma secuencial. Un
método que se utiliza para lograrlo es mediante la técnica de modulación de ancho de
pulso PWM (Pulse Width Modulation).

En el funcionamiento por micropasos se logra la mayor suavidad en el desplazamiento y la


mayor resolución en los pasos del motor.

Ventajas y desventajas de un motor paso a paso

Ventajas:

• Al ser un motor sin escobillas es más confiable y duradero


• Trabaja en lazo abierto, no necesita retroalimentación (encoders)
• Excelente respuesta en el arranque y en la parada del motor
• Mayor facilidad para controlar su velocidad
• Mejor precisión en los desplazamientos
• Gran rango en la velocidad de rotación
• Aunque el par motor disminuye al aumentar la velocidad, es superior en baja velocidad a
un motor DC
• Torque de detención, que significa que se mantiene firme en su posición cuando no está
girando
• Rápido arranque por el torque elevado a baja velocidad

Desventajas:

• No son convenientes si la inercia del sistema es alta, o sea, que el tiempo de aceleración y
desaceleración sea largo.
• No hay forma de conocer dónde está ubicado el motor paso a paso en el momento del
arranque, por eso necesita algún tipo de sensor de fin o inicio de carrera, los servomotores
superan esta dificultad; aunque al colocar el motor paso a paso en un circuito de lazo
cerrado, esta dificultad queda salvada y se mejoran las características del motor paso a
paso.
Control de Motores 2
8vo Ingeniería en Mecatrónica
• Necesitan de una programación (software) específico para la activación secuencial
correcta de las fases del motor, para lograr su adecuado funcionamiento.
• Mayor gasto de energía, al consumir en reposo y en funcionamiento.

Conectar motor paso a paso a Arduino

Para realizar las conexiones que aparecen en el diagrama pictórico inferior, utilicemos
como guía la siguiente tabla.
Control de Motores 2
8vo Ingeniería en Mecatrónica

Programando el motor paso a paso

Como de costumbre podemos programar utilizando una librería o de forma manual.


Empecemos sin usar librerías realizando pruebas con el motor paso a paso 28BYJ- 48 y el
driver ULN2003.

Debido a que el 28BYJ-48 es un motor unipolar (4 bobinas), lo podemos mover de tres


maneras diferentes, movimiento por ola o paso completo, movimiento normal y
movimiento de medio paso. Veamos como funcionan cada uno de estos movimientos.

Paso Completo

Podemos lograr el paso completo del motor paso a paso unipolar 28BYJ-48 de dos
formas:

1. Movimiento por ola, como muestra la tabla inferior. Al energizar solo una bobina por
paso, el torque y consumo son moderados.
Control de Motores 2
8vo Ingeniería en Mecatrónica
Código en Arduino
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
// Secuencia de pasos (par máximo)
int paso [4][4] =
{
{1, 0, 0, 0},
{0, 1, 0, 0},
{0, 0, 1, 0},
{0, 0, 0, 1}
};
void setup()
{
// Todos los pines en modo salida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop()
{
for (int i = 0; i < 4; i++)
{
digitalWrite(IN1, paso[i][0]);
digitalWrite(IN2, paso[i][1]);
digitalWrite(IN3, paso[i][2]);
digitalWrite(IN4, paso[i][3]);
delay(10);
}
}

Movimiento Normal (par maximo) . Como recomienda el fabricante según muestra la


tabla de abajo, donde vemos que con un pequeño «truco» se logra el paso completo
alimentando las dos bobinas en solo 4 pasos, logrando mayor torque, pero mayor
consumo de potencia.
Control de Motores 2
8vo Ingeniería en Mecatrónica
Código en Arduino
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
// Secuencia de pasos (par máximo)
int paso [4][4] =
{
{1, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 1},
{1, 0, 0, 1}
};
void setup()
{
// Todos los pines en modo salida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}

void loop()
{
for (int i = 0; i < 4; i++)
{
digitalWrite(IN1, paso[i][0]);
digitalWrite(IN2, paso[i][1]);
digitalWrite(IN3, paso[i][2]);
digitalWrite(IN4, paso[i][3]);
delay(10);
}
}

Movimiento de medio paso

Es una solución intermedia, que logra un movimiento lento y suave. Conseguimos el


medio paso del motor paso a paso unipolar 28BYJ-48 alimentando sus 4 bobinas como
muestra la tabla inferior:
Control de Motores 2
8vo Ingeniería en Mecatrónica

Código en Arduino
// Definimos los pines donde tenemos conectadas las bobinas
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
// Secuencia de pasos (par máximo)
int paso [8][4] =
{
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
void setup()
{
// Todos los pines en modo salida
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}

void loop()
{
for (int i = 0; i < 8; i++)
{
digitalWrite(IN1, paso[i][0]);
digitalWrite(IN2, paso[i][1]);
digitalWrite(IN3, paso[i][2]);
digitalWrite(IN4, paso[i][3]);
delay(10);
}
}

Programación del motor paso a paso a través de una librería

Las librerías nos facilitan mucho la existencia, lo comprobamos con este sencillo programa
que utiliza la librería Stepper.
Control de Motores 2
8vo Ingeniería en Mecatrónica
Código en Arduino
// Incluímos la librería para poder utilizarla
#include <Stepper.h>
// Esto es el número de pasos por revolución
#define STEPS 4096
// Número de pasos que queremos que de
#define NUMSTEPS 100
// Constructor, pasamos STEPS y los pines donde tengamos
conectado el motor
Stepper stepper(STEPS, 8, 9, 10, 11);
void setup() {
// Asignamos la velocidad en RPM (Revoluciones por Minuto)
stepper.setSpeed(5);
}
void loop() {
// Movemos el motor un número determinado de pasos
stepper.step(NUMSTEPS);
delay(2000);
}

También podría gustarte