Hola, encontré una biblioteca para arduino (version mas reciente AccelStepper-1.51.zip) con muchísimas funciones para controlar un motor paso a paso
Pagina del proyecto
http://www.open.com.au/mikem/arduino/AccelStepper un ejemplo simple que encontré
#include <AccelStepper.h>
AccelStepper stepper(1, 9, 8);//(define el tipo de control del motor,pin de paso,pin dirección)
int pos = 100;
void setup()
{
stepper.setMaxSpeed(800); //velocidad máxima permitida
stepper.setAcceleration(500);// relación entre aceleración/desaceleracion
}
void loop()
{
if (stepper.distanceToGo() == 0)//distancia de la posición actual y la destino
{
delay(500);
pos = -pos;
stepper.moveTo(pos);//establece la posición de destino
}
stepper.run();
}
Conexión solo 2 pines de control STEP y DIR


la idea es montar el circuito anterior usando el Driver (DRV8825 Stepper Motor Driver) o similar y explorar las muchísimas funciones que trae la biblioteca, como acelaracion, y hacer cambios de los micropasos, se requiere 3 pines de conexión adicionales.
MODE0 M1 M2 Microstep Resolution
Low Low Low Full step
High Low Low Half step
Low High Low 1/4 step
High High Low 1/8 step
Low Low High 1/16 step
High Low High 1/32 step
Low High High 1/32 step
High High High 1/32 step
Por mi parte ya monte el circuito, y aunque estaba escribiendo mi propia biblioteca, que la publique en este mismo foro, la biblioteca AccelStepper esta super completa e interesante, quien se une a montar el circuito y compartir sus experiencias
lista de funciones
AccelStepper (uint8_t interface=AccelStepper::FULL4WIRE, uint8_t pin1=2, uint8_t pin2=3, uint8_t pin3=4, uint8_t pin4=5, bool enable=true)
AccelStepper (void(*forward)(), void(*backward)())
void moveTo (long absolute)
void move (long relative)
boolean run ()
boolean runSpeed ()
void setMaxSpeed (float speed)
float maxSpeed ()
void setAcceleration (float acceleration)
void setSpeed (float speed)
float speed ()
long distanceToGo ()
long targetPosition ()
long currentPosition ()
void setCurrentPosition (long position)
void runToPosition ()
boolean runSpeedToPosition ()
void runToNewPosition (long position)
void stop ()
virtual void disableOutputs ()
virtual void enableOutputs ()
void setMinPulseWidth (unsigned int minWidth)
void setEnablePin (uint8_t enablePin=0xff)
void setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false)
void setPinsInverted (bool pin1Invert, bool pin2Invert, bool pin3Invert, bool pin4Invert, bool enableInvert)
bool isRunning ()