sábado, 30 de junio de 2012

Control de motor paso a paso con Inversor de giro

Después de tanto tiempo, volvemos con una práctica sencilla y la verdad que muy útil si sabemos donde utilizarlo. 
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 



6 comentarios:

  1. 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?
    seria bueno que publicaras un esquema para ver las conexiones...
    igualmente gracias por el aporte!

    ResponderEliminar
  2. en la placa dice el numero del pin TX y RX son para envio de datos en paralelo

    ResponderEliminar
  3. la 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

    ResponderEliminar
  4. Hola, 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
    Gracias!

    ResponderEliminar
  5. hola me gustaria saber como utilizar un potenciometro en ves de un pulsador¡¡

    ResponderEliminar
  6. Buenos días
    Soy 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

    ResponderEliminar