I used an Arduino Uno with A4988 driver with 1/16 microstepping and tried to achive the highest speed possible. Using AccelStepper library


the speed was not satisfying. I got smoother and also slower result with DRV8825 and lv8729. In the AccelStepper library help it says:

The maximum speed achievable depends on your processor and clock speed.

I know Uno and Mega have the same clock speed (16 MHz) so I migrated to Arduino Due which is known to be about 7 times faster. having 84 MHz clock speed. I also needed a logic level convertor. enter image description here

I was expecting to have a 7 times faster performance BUT unfortunately I get the same result as I got with Uno and Mega.

How can I have at least 5 times faster performance while using microstepping?

  • \$\begingroup\$ DRV8825 has max 250kHz on STEP input. What frequency are you feeding it? \$\endgroup\$
    – bobflux
    Oct 18, 2021 at 14:50
  • \$\begingroup\$ @bobflux I get the same speed after about 2000 steps/sec \$\endgroup\$
    – 2012User
    Oct 18, 2021 at 15:27
  • 1
    \$\begingroup\$ Your speed requirements might want a lower-inductance stepper motor, or higher-voltage stepper power supply. \$\endgroup\$
    – glen_geek
    Oct 18, 2021 at 16:05
  • \$\begingroup\$ @glen_geek Does that means a 24v Nema23 stepper can perform faster and smoother? \$\endgroup\$
    – 2012User
    Oct 18, 2021 at 16:09
  • 1
    \$\begingroup\$ Not enough specs. Look @ Torque vs. speed - they conflict. At high speed, you run out of torque. Higher voltage can help some, but might run warm. \$\endgroup\$
    – glen_geek
    Oct 18, 2021 at 17:06

1 Answer 1


5x jump is a big jump and doubtfully possible in microsteps.

If you need 5x more speed, why do you also need microstepping? What application are you working on that needs such angular precision at such high speed?

I'd Use the extra Arduino pins and the inputs on the controller you have to adjust between regular steps and microsteps. Regular steps for high speed, microsteps for the last final positioning.

  • 1
    \$\begingroup\$ I agree with this; you'll get better results by managing the inertia in the system, using conventional stepping to make the big movements and then switching to microstepping for the last few steps, which you want to be at lower speed to avoid overshoot. \$\endgroup\$
    – pjc50
    Oct 18, 2021 at 14:03
  • \$\begingroup\$ @GT Electronics I need it for robotic applications. I want know how can I achieve the best performance possible. That is a great Idea!!! I guess we don't need micro stepping after the acceleration reaches zero. \$\endgroup\$
    – 2012User
    Oct 18, 2021 at 14:05
  • \$\begingroup\$ @GT Electronics How about the clock speed? why I got the same result with Due? \$\endgroup\$
    – 2012User
    Oct 18, 2021 at 14:06
  • 1
    \$\begingroup\$ The problem is not the speed of the pulses, it is the speed that you can energize a coil on the stepper motor and have the motor react to that tiny motion. A motor coil is an inductor, current lags voltage in an inductor. It takes some time for the motor to mechanically react to the change. Ideally, your coils would have zero lag between applying current and achieving the full magnetic response. AND your motor would have zero inertia. In the end, it is some combination of the two non-ideal parts. \$\endgroup\$ Oct 18, 2021 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.