La secuencia de activación en un motor PL15S-020 es la siguiente.
Este es el código que proporciona ArduinoBlocks correspondiente a los bloques anteriores que cargado desde el IDE de Arduino funciona igualmente.
void fnc_dynamic_digitalWrite(int _pin, int _e){pinMode(_pin,OUTPUT);digitalWrite(_pin,_e);}void setup(){
}
void loop()
{
for (int count = 0; count < 40; count++) {
fnc_dynamic_digitalWrite(1, LOW);
fnc_dynamic_digitalWrite(2, HIGH);
fnc_dynamic_digitalWrite(3, HIGH);
fnc_dynamic_digitalWrite(4, LOW);
delay(10);
fnc_dynamic_digitalWrite(1, LOW);
fnc_dynamic_digitalWrite(2, HIGH);
fnc_dynamic_digitalWrite(3, LOW);
fnc_dynamic_digitalWrite(4, HIGH);
delay(10);
fnc_dynamic_digitalWrite(1, HIGH);
fnc_dynamic_digitalWrite(2, LOW);
fnc_dynamic_digitalWrite(3, LOW);
fnc_dynamic_digitalWrite(4, HIGH);
delay(10);
fnc_dynamic_digitalWrite(1, HIGH);
fnc_dynamic_digitalWrite(2, LOW);
fnc_dynamic_digitalWrite(3, HIGH);
fnc_dynamic_digitalWrite(4, LOW);
delay(10);
}
for (int count = 0; count < 40; count++) {
fnc_dynamic_digitalWrite(1, HIGH);
fnc_dynamic_digitalWrite(2, LOW);
fnc_dynamic_digitalWrite(3, HIGH);
fnc_dynamic_digitalWrite(4, LOW);
delay(10);
fnc_dynamic_digitalWrite(1, HIGH);
fnc_dynamic_digitalWrite(2, LOW);
fnc_dynamic_digitalWrite(3, LOW);
fnc_dynamic_digitalWrite(4, HIGH);
delay(10);
fnc_dynamic_digitalWrite(1, LOW);
fnc_dynamic_digitalWrite(2, HIGH);
fnc_dynamic_digitalWrite(3, LOW);
fnc_dynamic_digitalWrite(4, HIGH);
delay(10);
fnc_dynamic_digitalWrite(1, LOW);
fnc_dynamic_digitalWrite(2, HIGH);
fnc_dynamic_digitalWrite(3, HIGH);
fnc_dynamic_digitalWrite(4, LOW);
delay(10);
}
}
De esta manera también funciona.
void setup()
{
pinMode(1,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}
void loop()
{
for (int count = 0; count < 40; count++) {
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(10);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(10);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(10);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(10);
}
for (int count = 0; count < 40; count++) {
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(10);
digitalWrite(1, HIGH);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(10);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
delay(10);
digitalWrite(1, LOW);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(10);
}
}
Programando con el IDE de Arduino se puede conseguir algo similar con este programa.
#include <Stepper.h>const int PasosVuelta = 20; // número de pasos por vueltaStepper myStepper(PasosVuelta, 1,2,3,4); // crea un motor paso a paso llamado 'myStepper' en los pines 1 a 4void setup(){myStepper.setSpeed(60); // establece la velocidad en 60rpm}void loop(){// gira 100 pasosmyStepper.step(100);delay(500);// gira 100 pasos en sentido contrariomyStepper.step(-100);delay(500);}
Utilizando ArduinoBlocs y el bloque específico para motores paso a paso quedaría algo así.
Es importante observar que en el programa anterior los pines 2 y 3 están intercambiados respecto al primer programa de bloques o al realizado en el IDE de Arduino. Si no se hace este cambio el motor se mueve ligeramente a detrás y adelante pero no se desplaza.
Aquí podemos encontrar más información de como accionar este motor MMB PL15S-020-YTE7 (TA2905F) con Arduino, con el programa listado.
No hay comentarios:
Publicar un comentario