I am using the Big Easy Driver and a 400-step stepper motor (ROB-10846 from Sparkfun). This is a 3v 1.7 A NEMA-17 motor, and was suggested to me by Brian Schmalz. I am using it in 16-microstep mode.
The problem I am having is that whenever I reverse the direction of the stepper motor from the previous move, it seems to lose about 8-10 microsteps. Thus if I move it forward (say) 4 full steps, and then back 4 steps, it returns to a position that is 8-10 microsteps away from where it started. Unfortunately, my application requires a positioning repeatability of no more than about 3 or 4 microsteps. If I set it stepping very slowly (~1 microstep/sec), I can see that it’s the first 8-10 microsteps that are lost - I can hear the motor pulsing but it doesn’t move. Any moves in the same direction as immediately prior don’t lose these microsteps.
Changing the current limit into the stepper motor doesn’t seem to help. I have set it to about 0.8 amp, and my power supply is 12 volts rated for 2 amps.
Here is what I am doing. When I initialise the driver, I set it to what is described on the A4988 data sheet as the “home microstep position” by means of the RESET command. All my subsequent moves are multiples of 64 microsteps (4 full steps) which should again leave the driver in this home position. I provide a delay after any change of direction before beginning stepping - even a 1 second delay doesn’t help. I have tried it both with and without going to SLEEP after each move, with similar results.
I am controlling the stepping and positioning with my own Arduino software, as this gives me the best control over what is happening. I don’t need the features or the learning curve of AccelStepper.
I had the same problem with a different stepper motor (200 steps, 12v) and the original Easy Driver.
Does anybody have any thoughts as to what might be causing this problem, or any suggestions as to what I could try?
Or is it too much to ask of the BED/motor combination to get the performance I need?
Thanks,
Paul.
P.S. This may or may not be relevant, but I noticed that pulses 8, 24, 40 and 56 in each sequence of 64 microsteps move the motor twice as far as the others, and each pulse immediately following one of these doesn’t move the motor at all. These positions correspond to the zero-crossing of the current into one or other of the motor coils.