¿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.

curso arduino
Curso Arduino

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.

motor paso a paso 28BYJ-48
motor paso a paso 28BYJ-48 parte delantera
motor paso a paso 28BYJ-48 parte trasera
motor paso a paso 28BYJ-48 parte trasera
motor paso a paso unipolar bobinados
motor paso a paso unipolar bobinados

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.

Circuito integrado ULN2003
Circuito integrado ULN2003
Pcb Driver ULN2003
Pcb Driver ULN2003

-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.

paso simple motor paso a paso
paso simple motor paso a paso

La secuencia para excitar a las bobinas A-B-A’-B’

1=ON +5v, 0=OFF

Sería la siguiente:

Paso simple tabla de exitación de bobinas motor paso a paso
Paso simple tabla de excitación de bobinas motor paso a paso

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:

paso doble motor paso a paso
paso doble motor paso a paso
Paso doble tabla de excitación de bobinas motor paso a paso
Paso doble tabla de excitación de bobinas motor paso a paso

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.

medios pasos doble motor paso a paso
medios pasos doble motor paso a paso
Paso simple tabla de excitación de bobinas motor paso a paso
Paso simple tabla de excitación de bobinas motor paso a paso
  • 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

Conector motor paso a paso
Conector motor paso a paso

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);
    
}

esquema de montaje motores paso a paso
esquema de montaje motores paso a paso

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