La practica creada gracias a la colaboración de J, consiste en el control de un motor paso a paso, con un pulsador para hacer una inversión de giro. Es decir:
Al arrancar nuestro Arduino, el motor comenzará a girar en el sentido de las agujas del reloj, y en el momento que activemos el pulsador se producirá una inversión de giro, girando en sentido anti-horario.
Materiales empleados:
- Nuestro Arduino.
- 1 motor paso a paso 5 vdc 4 fases, con una controladora ULN2003.
- 1 pulsador.
Motor paso a paso:
Este motorcito con la controladora, lo podremos adquirir en ebay por unos 8€.
Esquema de conexionado:
El conexionado lo realizaremos tal y como se muestra en la siguientes imágenes:
Los pines 8 9 10 y 11, los conectaremos a las correspondientes salidas digitales de nuestro Arduino.
La alimentación podemos emplear la propia del arduino, o una fuente externa como en este caso(5Vdc).
Y el pulsador lo conectaremos como una entrada en el Pin 2.
Aquí nuestro resultado...
Sketch:
/* Motor paso a paso 5VDC+ controladora UNL2003 */
int motorPin1 = 8;
int motorPin2 = 9;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 15; // delay que determina el tiempo cada vez que cambia de paso
int buttonPin = 2;
int estado = 0;
void setup() {
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop() {
estado = digitalRead(buttonPin);
if(estado==HIGH)
{
digitalWrite(motorPin1, LOW); // sentido anti-horario
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}
else
{
digitalWrite(motorPin1, HIGH); // sentido agujas del reloj
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}
}
/* Colabo Redfox y J*/
Espero que te haya gustado este tuto, me despido dejándote unos links directos al motor paso a paso empleado.
-Motor Paso a Paso con controladora ULN2003
https://s.click.aliexpress.com/e/_olOqzv8
mi pregunta es... el pulsador esta conectado en el pin 2 de la placa arduino, que esta marcada como tx1? y entre el pin de tierra?
ResponderEliminarseria bueno que publicaras un esquema para ver las conexiones...
igualmente gracias por el aporte!
en la placa dice el numero del pin TX y RX son para envio de datos en paralelo
ResponderEliminarla verdad me sirvio tu ayuda, tenia uno de estos motores PAP pero no sabia el pinout por eso no me habia atrevido a conectarlo, pero gracias por el tutorial y el codigo para probarlo, Saludos desde EL SALVADOR
ResponderEliminarHola, me parece muy útil el sketch que has colgado pero me gustaría saber si puedes aclararme como podría hacerlo con un motor bipolar, ya que solo tiene dos pines en su controladora: STEP y DIR
ResponderEliminarGracias!
hola me gustaria saber como utilizar un potenciometro en ves de un pulsador¡¡
ResponderEliminarBuenos días
ResponderEliminarSoy nuevo en esto.
Ante todo agradecer la gran labor que realizas con tus artículos.
Sería posible hacer que, mientras pulsamos un botón gire en un sentido y cuando pulsamos otro gire al contrario?
Repito soy nuevo, estoy en los comienzos
Un cordial saludo