El motor a pasos 28BYJ-48 es un motor unipolar que funciona a 5V, ciertamente podríamos hacer funcionar este motor activando sus bobinas secuencialmente por medio de transistores, sin embargo explicaremos el uso de ese motor por medio del driver que más usualmente se usa con este: el ULN2003.
Este driver tiene un conector hembra donde el conector del motor encaja perfectamente, también es de notar que éste tiene sólo 4 entradas, por lo cual nuestro podremos usar nuestro motor unipolar como un motor bipolar. El módulo cuenta también con leds que nos indican cuáles bobinas están activadas en cada momento.
A continuación proveemos un ejemplo en el cual usaremos arduino para hacer mover un conjunto motor-driver:
Esquema de conexión con Arduino UNO
Código Arduino
int time_delay = 10;
// FUNCION PARA HACER GIRAR EL MOTOR HACIA LA DERECHA
void step_right(int a, int b, int c, int d)
{
digitalWrite(a, LOW); // VAMOS ACTIVANDO LAS BOBINAS EN
digitalWrite(b, LOW); // EN UNA SECUENCIA ESPECÍFICA
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
delay(time_delay);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
delay(time_delay);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
delay(time_delay);
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(time_delay);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
delay(time_delay);
}
//FUNCION PARA HACER GIRAR EL MOTOR HACIA A IZQUIERDA
void step_left(int a, int b, int c, int d)
{
digitalWrite(a, HIGH); // VAMOS ACTIVANDO LAS BOBINAS EN
digitalWrite(b, HIGH); // UNA SECUENCIA INVERSA A LA ANTERIOR
digitalWrite(c, LOW);
digitalWrite(d, LOW);
delay(time_delay);
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
delay(time_delay);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
delay(time_delay);
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
delay(time_delay);
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
delay(time_delay);
}
void setup() {
pinMode(8, OUTPUT);//IN4
pinMode(9, OUTPUT);//IN3
pinMode(10, OUTPUT);//IN2
pinMode(11, OUTPUT);//IN1
delay(1);
digitalWrite(8, LOW); // damos valores iniciales
digitalWrite(9, LOW);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
delay(100);
}
void loop() {
for (int i = 0; i < 100 ; i++) { // MOVEMOS EL MOTOR A LA DERECHA
step_right(8, 9, 10, 11);
}
for (int i = 0; i < 100 ; i++) { // MOVEMOS EL MOTOR A LA IZQUIERDA
step_left(8, 9, 10, 11);
}
}
Al subir este código veremos al motor moverse en una dirección y luego en la dirección contraria, repitiendo esto una y otra vez.
FIN DEL POST
0 comentarios:
Publicar un comentario