¿Qué es un motor paso a paso?
Un motor paso a paso es un dispositivo electromecánico que es capaz de convertir señales eléctricas (impulsos) en movimientos angulares, tienen una alta precisión y repetitividad.
¿Dónde se usan los motores paso a paso?
Estos motores se usan donde es necesario conocer la posición exacta de un móvil con gran precisión, así que los campos más utilizados son en robótica, impresoras, impresoras 3d, automatización, relojes discos duros, lectores etc.
Tipos de motores paso a paso.
De reluctancia variable:
El rotor es multipolar de hierro y en el estator se encuentran los bobinados.
El motor gira cuando los dientes más cercanos del rotor son atraídos por las bobinas del estator que están alimentadas, es un motor con una respuesta muy rápida además de con muy poca inercia en la carga.
Cuando las bobinas no están alimentadas el par estático de este motor es cero.
Con rotor de imán permanente:
Este tipo de motor puede tener un par diferente de cero cuando las bobinas no están alimentadas.
El ángulo de rotación va depender del número de polos del estator.
Según este construido el motor se pueden obtener pasos angulares de 7.5, 11.25, 15, 18, 45 o 90º.
Híbrido:
Este motor tiene varios dientes en el rotor y en el estator.
El rotor es un imán concéntrico magnetizado axialmente alrededor de su eje.
En definitiva es una mezcla de los dos anteriores.
Tienen una alta precisión y torque.
Dentro de estos tres tipos, nos vamos a centrar en los motores de imán permanente ya que para el tipo de proyectos que abordaremos serán los más utilizados.
Dentro de los motores de imanes permanentes se clasifican en:
-Motores unipolares.
-Motores bipolares.
*En esta ocasión estudiaremos el motor paso a paso unipolar en concreto el modelo 28BYJ-48 con su módulo controlador o driver.

Si quieres convertirte en un experto en Arduino pincha en el siguiente botón
¿Cómo funciona un motor paso a paso unipolar?
Estos motores normalmente tienen 5 o 6 cables, tienen 4 bobinas o lo que es lo mismo dos divididas por un punto central o común, dependiendo de si el cable del punto intermedio es independiente o compartido por cada grupo de bobinas como se aprecia en la imagen de hay que tengan 5 0 6 cables.



Driver controlador ULN2003
El punto medio se conecta a positivo de la alimentación, mientras que los extremos de las bobinas se conectan a tierra mediante una tarjeta controladora o driver en este caso al ULN2003.
Esta tarjeta controladora dispone de 4 entradas para excitar a cada uno de los extremos de las bobinas, mediante un conector de 5 pines se conecta el motor a la tarjeta.
Mediante un microcontrolador o un circuito electrónico se irán excitando los terminales de las bobinas en una secuencia indicada por el fabricante.
El corazón de esta tarjeta controladora es el ULN2003
Un circuito integrado compuesto internamente por 7 drivers de los que solo usaremos 4, cada driver está compuesto por dos transistores en configuración par Darlington, para poder proporcionar corriente suficiente para alimentar al motor, con lo que podremos controlar motores de corriente elevada con una corriente de entrada o control muy baja.
Nótese que cada driver es inversor por lo que daremos una señal positiva en el terminal IN_ correspondiente y el driver lo invertirá sacando a su salina GND o masa.


-Diferentes formas de controlar un motor paso a paso unipolar:
Paso simple:
En este caso alimentamos solo una bobina a la vez o fase, al alimentarla el rotor que es un imán permanente se alineará con la bobina correspondiente, proporcionando una secuencia correcta de alimentación se ira alimentando de forma rotativa y cíclica a cada bobina y por lo tanto el rotor se irá alineando con la bobina excitada en ese momento con lo que así se consigue que el rotor gire.
El rotor en color azul se alinea con el bobinado excitado del estator correspondiente representado en color rojo.

La secuencia para excitar a las bobinas A-B-A’-B’
1=ON +5v, 0=OFF
Sería la siguiente:

Paso doble:
En este caso energizamos dos bobinas continuas a la vez, por lo que el imán del rotor se alineará en la dirección entre estas dos bobinas energizadas.
Debido al energizar dos bobinas a la vez obtendremos un par mayor que si solo energizamos una, derivado de esto también aumentará el consumo de corriente.
Veamos esto de forma gráfica:


Medios pasos:
En este caso vamos a ir alternando la secuencia alimentando una bobina y en el siguiente paso dos bobinas, de esta forma conseguimos mayor precisión.


- Aclaraciones:
Paso es cada vez que se introduce una nueva combinación y por lo tanto hay un movimiento del rotor, con lo que en este caso, para pasos completos con cuatro pasos se hace un giro completo y para medios pasos cada 8.
Lo que nos viene a indicar es que cada paso completo el eje primario del rotor gira 90º, pero esto no siempre es así como veremos a continuación en el modelo concreto 28BYJ-48.
Ciclo es cada vez que recorremos todas las posibles combinaciones admitidas.
Características del motor paso a paso unipolar 28BYJ-48.
Relación de reducción: 1:64 esto quiere decir que para que el eje secundario o exterior de una vuelta el primario tiene que dar 64.
Angulo de paso: 5,625º/64 esto quiere decir que mientras el primario gira 5,625º el secundario gira 0,088º debido a la reductora, por lo que para que el secundario de una vuelta completa, el primario tendrá que dar 4096 pasos en modalidad de medios pasos.
Ya que 360º/5.625ºpor medios pasos=64 pasos del primario para dar una vuelta completa en modalidad de medios pasos o 32 en modalidad de pasos completos.
Para que el secundario de una vuelta completa, habrá de dar 64 el primario, de hay 64(pasos del primario)*64 (vueltas del primario)=4096 pasos del primario en modalidad de medios pasos para que el secundario de una vuelta completa.
Para que te quede aún más claro ya que esto es algo un poco lioso.
Si quiero que el eje secundario (el que vemos externamente) gire una vuelta, el primario tendrá que dar 64.
Para que el primario de 64 vueltas ha de dar 4096 pasos en modalidad de medios pasos ya que 1 vuelta del primario son 64 medios pasos x 64 vueltas que debe dar para que el secundario de una vuelta completa.
Si optamos por la modalidad de pasos simples o dobles tendremos que dar 2048 pasos para conseguir el mismo efecto de hacer girar el secundario una vuelta completa.
*debido al redondeo de decimales realmente el número de pasos es de 4076.
Alimentación:5 voltios de corriente continua, viene indicado en la carcasa, existe también un modelo de 12voltios.
Par máximo: 0,3Kgf*cm es decir es capaz de mover 0,3Kg (300g) si colocamos en su eje una polea de 1cm de diámetro.
Número de cables: 5

Frecuencia máxima: 100Hz eso son 40 segundos por vuelta o velocidad de 1,5rpm
La velocidad de giro del motor lograremos variarla, incrementando o disminuyendo la velocidad a la que transmitimos desde el circuito controlador (microcontrolador por ejemplo) los pulsos a los distintos terminales de las bobinas del motor.
En este el tiempo mínimo comprobado prácticamente es de 5ms, si aumentamos esta velocidad de transmisión el motor no girará o comenzara a vibrar sin moverse.
Resistencia interna: 60Ω
Consumo de corriente:83mA
Programa para controlar dos motores paso a paso:
/*AUTOR: JOSE ANTONIO RIVERA MORALES *FECHA: 29-11-2019 *www.pasionelectronica.com * motores paso a paso primero gira uno en un sentido * durante una vuelta a continuación se para y el segundo * gira también una vuelta pero en sentido contrario * y asà sucesivamente */ int in1=2;//definimos los pines donde int in2=3;//conectaremos las fases int in3=4;//de los 2 motores int in4=5; int in5=6; int in6=7; int in7=8; int in8=9; //guardamos las secuencias en ambas matrizes //para girar en ambos sentidos const int codifPasosDch[4]={B1100,B0110,B0011,B1001}; const int codifPasosIzq[4]={B1001,B0011,B0110,B1100}; void setup() { pinMode(in1,OUTPUT);//los pines serán salidas pinMode(in2,OUTPUT); pinMode(in3,OUTPUT); pinMode(in4,OUTPUT); pinMode(in5,OUTPUT); pinMode(in6,OUTPUT); pinMode(in7,OUTPUT); pinMode(in8,OUTPUT); } void loop() { //bucle for para contar el número de ciclos //1ciclo=4pasos*512veces=2048pasos 1 vuelta //completa del secundario a pasos doble for (int i=0;i<512;i++){ int numPasos=0; //controlamos que cada ciclo tenga 4 pasos for (int j=0;j<4;j++){ digitalWrite(in1,bitRead(codifPasosIzq[numPasos],0));//obtenemos el bit 0 de la matriz digitalWrite(in2,bitRead(codifPasosIzq[numPasos],1));//al paso correspondiente digitalWrite(in3,bitRead(codifPasosIzq[numPasos],2)); digitalWrite(in4,bitRead(codifPasosIzq[numPasos],3)); numPasos++; delay(5);//tiempo de espera entre pasos } } //Paramos movimiento a izquierdas digitalWrite(in1,LOW); digitalWrite(in2,LOW); digitalWrite(in3,LOW); digitalWrite(in4,LOW); //Repetimos para el otro motor //pero invertimos secuencia para //que gire al contrario for (int k=0;k<512;k++){ int numPasos=0; for (int l=0;l<4;l++){ digitalWrite(in5,bitRead(codifPasosDch[numPasos],0)); digitalWrite(in6,bitRead(codifPasosDch[numPasos],1)); digitalWrite(in7,bitRead(codifPasosDch[numPasos],2)); digitalWrite(in8,bitRead(codifPasosDch[numPasos],3)); numPasos++; delay(5); } } //Paramos giro a derechas digitalWrite(in5,LOW); digitalWrite(in6,LOW); digitalWrite(in7,LOW); digitalWrite(in8,LOW); }

Si te ha sido de ayuda este post compartelo en tus redes sociales, muchas gracias por tu colaboración.