Unusual stepper motor behaviour with Easydriver

I have a Easydriver v4.4 with a mercury stepper motor SM-42BYG011-25

Basically like this:
http://bildr.org/2011/06/easydriver/

Hooked it up and everything seems to be working fine, however the step size is not really what I want.

Based on the easydriver page
http://schmalzhaus.com/EasyDriver/

both MS1 MS2 should be HIGH by default, which I tested to be true, and the step should be the smallest, 1/8 step. However, when I tested it, the step is smallest when MS2 is LOW and MS1 is HIGH. What is even stranger is that when I have MS1 and MS2 at LOW, the motor does not move at all, but instead makes a buzz sound as if its trying to move but couldn’t.

I then tested it and made an approximate comparison with the easydrive page

MS1 | MS2 | Page result | Reality

LOW | LOW | Full step | N/A
HIGH | LOW | 1/2 | ~1/8
LOW | HIGH | 1/4 | ~Full step
HIGH | HIGH | 1/8 | ~1/2

My code is as follow:

int MS1 = 7;
int MS2 = 8;
int dirpin = 2;
int steppin = 3;

void setup() 
{
pinMode(dirpin, OUTPUT);
pinMode(steppin, OUTPUT);
pinMode(MS1, OUTPUT);
pinMode(MS2, OUTPUT);
digitalWrite(MS2, LOW);
digitalWrite(MS1, LOW);
}
void loop()
{

  int i;

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


  for (i = 0; i<4000; i++)       // Iterate for 4000 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(500);      // This delay time is close to top speed for this
  }                              // particular motor. Any faster the motor stalls.

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


  for (i = 0; i<4000; i++)       // Iterate for 4000 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(500);      // This delay time is close to top speed for this
  }                              // particular motor. Any faster the motor stalls.

}

I can’t figure out what I did wrong, can someone tell me.

Thanks

I think you need a pause between setting the step pulse low and setting it high. The Allegro A3967 datasheet says that both low and high must be a minimum of 1 microsecond (usec)

I have used a Pololu A4988 driver (which also uses the A4988 chip which has the same requirement) and I have set the high step to 50usecs and the low step to whatever delay is needed between steps.

With your extremely short pulse the full steps may not work.

...R

Tried it, it works perfectly now!

Thanks!