Resumen de las características principales del motor paso a paso 28BYJ-48

Fuente: https://programarfacil.com/blog/motor-paso-a-paso/

  • Motor paso a paso con 5 cables (unipolar 4 bobinas)
  • Voltaje de funcionamiento 5V o 12V
  • Viene con un circuito integrado
  • 4 LEDs que indican cuando se excita una bobina
  • 4 resistencias para proteger los LEDs
  • Chip ULN2003 que contiene 3 transistores Darlington
  • 4 entradas para el controlador, por donde entran los pulsos.
  • Jumpers para seleccionar el voltaje de funcionamiento (5V o 12V)
  • Hay que puentear el voltaje que no se utiliza
  • Cada paso avanza 5,625º
  • Caja reductora mediante engranajes 1/64
  • Se consigue un paso de 5,625/64 = 0,088º
  • Resistencia del bobinado de 50 Ω
  • Torque de 34 Newton Metro más o menos 35 gramos por cm
  • Frecuencia máxima 100Hz que equivale a un delay de 10 m

               

 

Motor paso a paso conectado a Arduino

Antes de ver las conexiones, hay que aclarar que este tipo de motores lleva un driver o etapa de potencia. Este componente nos permite suministrar la energía suficiente al motor paso a paso para que se mueva.

Alimentación con 5V del motor 28BYJ-48

Ten mucho cuidado con los jumpers de alimentación. Para alimentar el motor 28BYJ-48desde una placa de Arduino, tenemos que puentear las conexiones con un jumper. Estos jumpers nos permiten seleccionar una alimentación de 5V o de 12V. Recuerda que el Arduino UNO trabaja con 5V cómo máximo.

 

Funcionamiento del motor unipolar de 4 bobinas

Debido a que el 28BYJ-48 es un motor unipolar (4 bobinas), lo podemos mover de tres maneras diferentes, movimiento normal, movimiento por ola o paso completo y movimiento de medio paso. Veamos como funcionan cada uno de estos movimientos.

Movimiento normal (par máximo)

Consiste en excitar, administrar corriente, a dos bobinas a la vez en cada paso. Se consigue el máximo par pero también es el máximo consumo.

 

 

PASO BOBINA A BOBINA B BOBINA C BOBINA D  
1 HIGH HIGH LOW LOW
2 LOW HIGH HIGH LOW
3 LOW LOW HIGH HIGH
4 HIGH LOW LOW HIGH

Movimiento por ola o paso completo (par menor)

Consiste en excitar una bobina cada vez. El consumo se reduce pero también el par, por lo tanto es un consumo y par moderados.

 

 

PASO BOBINA A BOBINA B BOBINA C BOBINA D  
1 HIGH LOW LOW LOW movimiento-ola
2 LOW HIGH LOW LOW
3 LOW LOW HIGH LOW
4 LOW LOW LOW HIGH

Movimiento de medio paso

Se consigue un movimiento lento y suave con un par y consumo entre medias de los otros dos movimientos.

 


 
PASO BOBINA A BOBINA B BOBINA C BOBINA D  
1 HIGH LOW LOW LOW movimiento-medio
2 HIGH HIGH LOW LOW
3 LOW HIGH LOW LOW
4 LOW HIGH HIGH LOW
5 LOW LOW HIGH LOW
6 LOW LOW HIGH HIGH
7 LOW LOW LOW HIGH
8 HIGH LOW LOW HIGH

Podemos diseñar programas de Arduino para estos casos, sin necesidad de una libreria, como se ve en los ejemplos dados.

Pero a continuacion se mostrara mediante el uso de una libreria que ya viene en el IDE de Arduino.

La otra manera de programar un motor 28BYJ-48 no es tan artesanal y reduce el código bastante. Se trata de utilizar la librería Steper que viene incluida con el entorno de desarrollo oficial de Arduino. Esta librería nos facilita el uso de este tipo de motores y viene adaptada para motores bipolares.

 

/*Creado: Luis del Valle (ldelvalleh@programarfacil.com
  Utilización librería Steper con motor 28BYJ-48
  https://programarfacil.com
*/

// Incluímos la librería para poder utilizarla
#include <Stepper.h>

// Esto es el número de pasos en un minuto
#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);
}
 

Biblioteca Stepper

 
Esta biblioteca le permite controlar motores paso a paso unipolares o bipolares. Para utilizarlo se necesita un motor paso a paso, y el hardware adecuado para su control. Para más información sobre esto, vea las un tutorial sobre los motores paso a paso 

FUNCIONES

Stepper(steps, pin1, pin2)

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

Descripción:
Esta función crea una nueva instancia de la clase Stepper que representa un motor paso a paso, conectado a la placa Arduino. Utilicelo en la parte superior de su programa, por encima de setup () y loop (). El número de parámetros depende de cómo haya conectado el cable a su motor - ya sea utilizando dos o cuatro pines de la placa Arduino.

Parámetros:

steps: el número de pasos en una revolución de su motor. Si su motor da el número de grados por paso, dividir ese número por 360 para obtener el número de pasos (por ejemplo 360 / 3.6 da 100 pasos). (int)
pin 1, pin 2: dos pines que están conectados al motor (int)
pin3, pin4: opcional los últimos dos pines unidos al motor, si está conectado a cuatro pines(int)

Retornos:

Una nueva instancia de la clase Stepper

Ejemplo:

Stepper myStepper = Stepper(100, 5, 6);
________________________________________________________________________

setSpeed(rpms)

Descripción:

Configura la velocidad del motor en revoluciones por minuto (RPM). Esta función no hace que el motor gire, simplemente selecciona la velocidad a la que girará cuando de llame a step ().

Parámetros:

rpm: la velocidad a la cual el motor debe girar en revoluciones por minuto - un número positivo (long)

Retornos:
Ninguno
_________________________________________________________________________________

step(steps)

Descripción:
Enciende el motor durante un número determinado de pasos, a una velocidad determinada por la llamada más reciente a setSpeed (). Esta función es bloqueante; es decir, se va a esperar hasta que el motor se haya terminado de mover para pasar el control a la siguiente línea en su programa. Por ejemplo, si se establece la velocidad de, digamos, 1 RPM y se llama a step(100) en un motor de 100 pasos, esta función podría tardar un minuto en resolver. Para un mejor control, mantenga la velocidad alta y sólo ir unos pasos con cada llamada a step().

Parámetros:

steps: el número de pasos a activar el motor - positivo para girar en una dirección, negativo para girar en la otra (int)

Retornos:
Ninguno
_________