Tutorial: Motor paso a paso unipolar 28BJY-48 con Arduino UNO

En este nuevo tutorial te enseñaremos el motor paso a paso unipolar 28BYJ-48

Este motor va junto con un módulo controlador con el chip ULN2003, es un motor pequeño y lo mas importante, a un precio muy asequible.

Los motores paso a paso son dispositivos electromagnéticos que convierten impulsos eléctricos en rotación, mediante un impulso estos motores avanzan un paso los cuales oscilan entre 1.8º y 90º todo esto dependiendo de la referencia de motor que tengamos, el 28BYJ-48 tiene un paso de 5.625º por paso, lo que se traduce en que es un motor de 64 pasos por vuelta.

Características del 28BYJ-48:

Voltaje: 5 VDC
Número de Fases: 4
Resistencia: 50Ω ± 7%
Torque: 34.3 N
consumo: 55 mah

Estos motores funcionan con 4 bobinas las cuales son excitadas secuencialmente para el movimiento del eje, en este ejemplo el código se ha realizado para hacer medios pasos; estos consisten basicamente en activar la bobina 1, después la 1 con la 2, luego la 2, la 2 con la 3 y así hasta completar el ciclo con la bobina 4 y volver a partir desde la 1, el nombre de esta secuencia es “Half-step”.

Existen otros tipos de secuencias, las diferencias entre si son la cantidad de bobinas excitadas a la vez, la velocidad, el consumo, entre otras.


↑↑ Stepper 28BYJ-48 con el controlador ULN2003 en su módulo ↑↑

↑↑ Módulo con controlador ULN2003 ↑↑

Características del chip ULN2003:

Corriente de salida: 0.5A
Tensión de salida: 2-50V
Número de canales: 7
Temperatura de trabajo: -40 a 85°C
Tensión de entrada: 30V

↑↑ ULN2003 ↑↑

 ↑↑ Puertos ULN2003 ↑↑

 

Cabe resaltar que existen dos referencias en este controlador, el ULN2003APG y el ULN2003A, entre ambas no existe ningún tipo de diferencia en su funcionamiento, modo de uso o conexiones.

Para este tutorial utilizaremos:

1 Arduino Uno R3 + Cable USB

1 Motor paso a paso unipolar 28BYJ-48

↑↑ Vista 1, conexión ↑↑

↑↑ Vista 2, conexión ↑↑

↑↑ Vista 3, conexión ↑↑

 

El codigo es el siguiente:


int motorPin1 = 8; // Azul - 28BYJ48 pin 1 motor
int motorPin2 = 9; // Rosa - 28BYJ48 pin 2 motor
int motorPin3 = 10; // Amarillo - 28BYJ48 pin 3 motor
int motorPin4 = 11; // Naranja - 28BYJ48 pin 4 motor
// Rojo - 28BYJ48 pin 5 (VCC) motor

int motorSpeed = 1200; //variable para fijar la velocidad del motor (el retraso entre cada secuencia)
int count = 0; // cuenta de los pasos dados
int countsperrev = 512; // número de pasos por vuelta completa
int lookup[8] = {B01000,B01100,B00100,B00110,B00010,B00011,B00001,B01001};

void setup() {
//declare the motor pins as outputs
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
Serial.begin(9600);
}

void loop(){
if(count < countsperrev )
clockwise(); //sentido agujas del reloj
else if (count == countsperrev * 2)
count = 0;
else
anticlockwise(); //sentido antihorario
count++;
}

//creación funciones giro horario y antihorario
void anticlockwise()
{
for(int i = 0; i < 8; i++) { setOutput(i); delayMicroseconds(motorSpeed); } } void clockwise() { for(int i = 7; i >= 0; i--)
{
setOutput(i);
delayMicroseconds(motorSpeed);
}
}

void setOutput(int out) //función secuencia giro
{
digitalWrite(motorPin1, bitRead(lookup[out], 0));
digitalWrite(motorPin2, bitRead(lookup[out], 1));
digitalWrite(motorPin3, bitRead(lookup[out], 2));
digitalWrite(motorPin4, bitRead(lookup[out], 3));
}

Stepper motor unipolar driver 28byj

Referencias:

El cajón de ardu

Toshiba (ULN2003APG)

Prometec