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 Motor paso a paso unipolar 28BYJ-48
↑↑ Vista 1, conexión ↑↑
↑↑ Vista 2, conexión ↑↑
↑↑ Vista 3, conexión ↑↑
El codigo es el siguiente:
[code]
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));
}
[/code]
Referencias:
– Prometec