I'm having an issue with my stepper motor, while I am aware they should make a noise that is dependent on the current and speed of the stepping, the issue I'm having is the noise is changing. For example, if I tell it to take 5000 micro steps (1/16), 1 every 700 micro seconds, perhaps after 500 steps, the frequency of the sound changes for a brief period (perhaps 1/4 second) then returns to what it was.

The typical sound is a fairly high pitched whine, the "different" sound is a slightly lower pitched sound.

The reason I ask is that I am having accuracy issues with this stepper, it is attached to an axis and if I move it 5000 steps forward, then 5000 steps backward, in some cases (not all) it is not in precisely the same position.

The power supply used is just a regular computer PSU (I had one spare) and the connector is providing 12V at upto 40 amps, the manual on the PSU states that the current is regulated to within 5% and the volts may fluctuate by upto 120mv, could this fluctuation be causing the issue? If so, how can I rectify this?

I'm working with this stepper motor: https://www.sparkfun.com/products/13656 and this driver: http://www.robotshop.com/ca/en/pololu-single-bipolar-stepper-motor-driver.html

  • \$\begingroup\$ Sounds like it is skipping steps. You are probably going faster than the motor can keep up with (it loses torque as it goes faster because of inductance) - especially if you are using microstepping, maximum torque is gained by doing half-stepping or possibly full-stepping depending on the motor. Try running at a lower speed and see if your accuracy improves. \$\endgroup\$ May 21, 2016 at 3:55
  • \$\begingroup\$ @TomCarpenter, That was my initial thought, but it does it at different speeds too. \$\endgroup\$ May 21, 2016 at 4:19
  • \$\begingroup\$ Definitely you miss steps. just going slower is not enough. You must use position profile- accelerate and decelerate instead just jumping between 0 and max speed. Adjust voltage to 24V, it will allow higher speed and better current regulation. You have a potentiometer there- make sure you allow maximum current. remove the load... \$\endgroup\$
    – user76844
    May 21, 2016 at 4:49
  • \$\begingroup\$ You don't mention WHAT you are programming that is creating those steps? Are you using a computer or microcontroller which may be intermittently going off handling interrupts or doing other business? \$\endgroup\$ May 21, 2016 at 5:16
  • \$\begingroup\$ @RichardCrowley, its a Raspberry Pi (one of the older models, I forget which). The Pi isn't doing anything else, other than idle OS tasks. \$\endgroup\$ May 21, 2016 at 5:18

1 Answer 1


Because "5000" steps one way and then "5000" the other doesn't result in the original position, it's indisputable that you're missing steps. A could of ideas to narrow it down:

  • Try without micro-stepping. Repeat the 5000 step exercise with full steps.
  • Change the speed. You might be right on the edge of a resonant speed, which can cause the change in pitch you describe.
  • And yes, definitely use a trapezoidal speed profile as another suggested already. Going from stopped to 1428 steps/sec is an abrupt start for sure.
  • 1
    \$\begingroup\$ what? Motor are first-order system, they can't change speed instantly therefore putting u(t) command will not result in any problems.... \$\endgroup\$
    – MathieuL
    May 21, 2016 at 13:14
  • \$\begingroup\$ @MathieuL Perhaps true on paper but practical experience with some of the low-cost drivers suggests differently. We're talking about a $5 driver board here. Microstepping (particularly smaller like 1/4 or higher) is not perfectly linear and I've seen it cause exactly the step loss the OP is describing, especially under load. \$\endgroup\$
    – TomServo
    May 21, 2016 at 13:28

Your Answer

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

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