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*/








1 comentario:

  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