domingo, 4 de mayo de 2014

Arduino y motor de disco duro

Ya hace tiempo subí un vídeo en Youtube donde hacia una prueba de concepto. En la que manejaba  el motor de un disco duro directamente con una placa Arduino.  En este caso el motor del disco duro era un motor paso a paso bipolar de tres hilos.


Del cual me han solicitado varias veces más información sobre él.

Como se ve en la imagen siguiente, el  montaje es muy simple pues es conectar directamente los 3 pines del motor a las tres salidas de la placa Arduino, tal como se ve en la imagen.

Placa Arduino manejando directamente el motor de un disco duro.
Placa Arduino manejando directamente el motor de un disco duro

Y a continuación el código del programa que está ejecutando la placa Arduino.

const int delayInicial = 300;
const int delayFinal = 25;
const int incrementoDelay = 5;

int pin0 = 26;
int pin1 = 24;
int pin2 = 22;

void setup(){
  pinMode(pin0, OUTPUT);
  pinMode(pin1, OUTPUT);
  pinMode(pin2, OUTPUT);
}

void loop(){
 
  //Bucle para ir acelerando el movimiento
  for( int x = delayInicial; x>delayFinal; x=x-incrementoDelay){
   digitalWrite(pin0, true);
   digitalWrite(pin1,true);
   digitalWrite(pin2,false);
   delay(x);
  
   digitalWrite(pin0, false);
   digitalWrite(pin1,true);
   digitalWrite(pin2,true);
   delay(x);
  
   digitalWrite(pin0, true);
   digitalWrite(pin1,false);
   digitalWrite(pin2,true);
   delay(x);
  }

  //Bucle infinito con velocidad fija
  while(true){
   digitalWrite(pin0, true);
   digitalWrite(pin1,true);
   digitalWrite(pin2,false);
   delay(delayFinal);
  
   digitalWrite(pin0, false);
   digitalWrite(pin1,true);
   digitalWrite(pin2,true);
   delay(delayFinal);
  
   digitalWrite(pin0, true);
   digitalWrite(pin1,false);
   digitalWrite(pin2,true);
   delay(delayFinal);
  }
}
Y a continuación el vídeo actualizado del resultado de ejecutar el programa anterior.


Es un ejemplo muy, muy simple de cómo funciona un motor paso a paso, espero que sea de utilidad a todas las personas que me lo han pedido.