Slowing speed with Easydriver v4.3

I just starting to play around with steppers in the attempts to have a very slow rpm motor. I've been working through an Easydriver v4.3. After some research and helpful code and tips via posts and blogs I've had enough success in having something move, but I haven't worked out the end result which is this:

A speed of 0.2 rpm or about 1rph. I'm using a 200step, 330ma, 12v bipolar stepper via Uno Arduino.

My attempts often end up in stalling or 2 steps forward 1 step back results. Would adjusting the mircosteps help (ie full step to 1/8 step or visa versa) Is there a sample of code using the setSpeed(rpm) or step(200) that could work? Any advice on acheiving such a slow speed? I've done the route of gearhead dc motors and would prefer an alternative.


1 rph = 2.25 seconds per step if microstepping at 1/8

so set MS1 and MS2 high (the default as it happens)

while (true)
  digitalWrite(step_pin, HIGH);
  digitalWrite(step_pin, LOW);

and Bob = Mother's brother!


thanks for this:

while (true)
digitalWrite(step_pin, HIGH);
digitalWrite(step_pin, LOW);

it tried it out. works better than I had but it still creates an issue with the motor occasionally stepping backward.

here’s something else I have going which is working to some extent but still runs issue with the occasional backward step as well. It’s also quite jerky. Here is:

// Stepper Motor skecth for use with the EasyDriver 3.1 ///////////////////////
// Dan Thompson 2008 // 
// modified by Robert Hengeveld 2011 //
// Inpired by the code and chat on this thread. 
// // 
// Use this code at your own risk. // For all the product details visit 
// For the full tutorial visit // 

int dirpin = 3; 
int steppin = 12; 

void setup() { 

pinMode(dirpin, OUTPUT); 
pinMode(steppin, OUTPUT);

void loop() { 

int i; 

digitalWrite(dirpin, LOW); // Set the direction. 


for (i = 0; i<20; i++) // Iterate for 20 microsteps. 
digitalWrite(steppin, LOW); // This LOW to HIGH change is what creates the 
digitalWrite(steppin, HIGH); // "Rising Edge" so the easydriver knows to when to step. 
delayMicroseconds(300); // 
} // particular motor. Any faster the motor stalls. (could maybe go faster - decrease the Microseconds between steps)

digitalWrite(dirpin, HIGH); // Change direction. 

} // end of loop

I’ve been looking into the option of coding in ‘setSpeed(rpm)’ or ‘step(200)’ but haven’t found the right sample code or tutorial. I’ve also consider having it switching the ‘sleep’ or ‘enable’ high and low in order to slow things down while conserving some energy at the same time?

suspect you need to look at:

a) is your power supply reliable
b) make sure you set MS1, MS2, Enable, Sleep, Direction either HIGH or LOW; don’t let them float

When I first set up my stepper motors they were all over the place
Seems the EasyDriver can pick up noise (motors are quite good at making noise) and changing direction while I wasn’t looking!

PS setting enable HIGH stops the main circuitry and reduces power a very lot

I've run through these suggestions. Thanks. It doesn't seem to solve the issues.

defaults are enable, MS1, MS2 = LOW, sleep = HIGH. I've tried them with different combinations of pulled to GND and 5v+. In the end I've left MS1, MS2, and enable GNDed and Sleep to 5v which mirrors the defaults.

power supply is fine.

everything works at higher speeds. I just run into issues when trying to slow it down.