A4988 Stepper Driver with 7.5 degree step motor

Good day,

I was reading on the A4988 website and it seems like it banks on the general stepper motor to be a 200 step/rev

I have 48 step/rev motors which i would like to control with them will this be possible? even on full step?


What makes you think this? The number of steps per revolution for your stepper motor is not relevant to the stepper motor driver.

- Ben

[quote]Step (and microstep) size
Stepper motors typically have a step size specification (e.g. 1.8° or 200 steps per revolution), which applies to full steps.[/quote]

I just read that from the site.

Will the driver not then step to fast for the motor ?

The “e.g.” means “for example”. There are many different stepper motors out there. When the driver is in full-step mode, your stepper motor will move one step (in your case, this is 7.5 degrees) every time you pulse the STEP pin. You control how quickly the driver steps, and you need to ensure that you send pulses to the STEP pin at an appropriate rate for your motor.

- Ben

Thank you, I realized this when i played with my settings on grbl.

Another question in regards to the steps,

How do i workout what the best pulse width is?

on grbl (software on ardruino that interprets g code) it has an option where you can enter it in, it recommends 20ms to 30ms (i think its ms) what is recommended for the a4988 driver?

Is there like a figure that works best with the driver?
I have read the smallest one that works is the best. But i wanted to clarify more than this!


The minimum allowed pulse width on the STEP pin is 1 us.

- Ben

Now does that mean that i can set that variable to 1 us ?

I assume not as the motors coil needs time to do its thing, So then would i play around with settings that lets the motor execute a step?

The pulse width is just there to make sure the controller can read it. The controller will then “do the right thing” with the motor windings. There is not a 1:1 relation between the control inputs (step, direction) and the output values from the controller. Once the controller reads the “step” pulse, it will hold the output values to whatever the new state is.

Oh I see, thank you for the nice explanation. So I must literaly just make it as small as I can?

Definitely not. It sounds like you maybe aren’t understanding how the STEP pin works. Every time you send a pulse to that pin, the stepper motor will advance one step in the direction corresponding to the value of the DIR input, so the frequency with which you toggle the pin corresponds exactly with how fast the stepper motor will turn. To ensure that the stepper motor can detect the pulse, its width must be 1 us or greater. So, for example, if you want to take one step every millisecond, you could drive the step pin low for 999 us (it’s probably safe to round this to 1 ms), high for 1 us, low for 999 us, high for 1 us, etc. Alternatively, you could get the same output behavior by driving it low for 500 us, high for 500 us, low for 500 us, high for 500 us, etc. The period (high time + low time) is going to be the duration between stepper motor steps. You can use any high time and low time you want so long as the sum gives you the speed you want and high time and low time are each individually at least 1 us long.

- Ben