I am trying to understand the concept of stepper motor error. A typical Nema17 stepper takes 1.8 degree steps and has an accuracy of +/-5%.

Consider the diagram below:

stepper plate

In the diagram, 4 stepper motors each coupled to lead screws are being controlled to vertically lift a rectangular plane. If we command all 4 steppers to begin to rotate and the lead screws are infinitely long will the plane being lifted become increasing unlevel with time?

  • 2
    \$\begingroup\$ Well, there's still a known number of steps per revolution... \$\endgroup\$
    – Hearth
    Commented Jun 8, 2021 at 3:30
  • 1
    \$\begingroup\$ @Hearth correct. So after the controller has requested 100,000 steps from each stepper will the plate be as level as it was after 1,000 steps? \$\endgroup\$
    – Feynman137
    Commented Jun 8, 2021 at 3:34
  • 3
    \$\begingroup\$ An ideally set up stepper, if not going too fast and no excessive load, will not lose steps the whole time it is powered up, so no accumulated error. \$\endgroup\$
    – Pete W
    Commented Jun 8, 2021 at 3:51
  • 1
    \$\begingroup\$ Yeah, only to be ideal you need to take hell of a margin both in the stepper size and the drive current. And to only work slow. Really in 2021 you should only take BLDC for applications where losing steps matters \$\endgroup\$
    – user76844
    Commented Jun 8, 2021 at 4:39
  • 6
    \$\begingroup\$ If the probability of single failure of single device (e.g. a missed step) is not zero, then the average number of failures in the course of N steps will grow as N grows. That's just math. Whether those accumulated failures are distributed evenly arcoss all 4 motors, is another question. Most likely, uneven load (you can't make it absolutely even, right?) would mean slightly different probability of failure of each motor. I wouldn't be surprised if they piled up on one motor more than on its siblings. \$\endgroup\$
    – Igor G
    Commented Jun 8, 2021 at 11:44

1 Answer 1


A stepper motor rotates in discrete steps. You command it to rotate one step at a time. A NEMA-17 motor has 200 such steps to a revolution. If you rotate the shaft yourself you can feel the locations of each of the 200 steps.

The locations of the steps are fixed inside the motor, so after 200 steps the shaft has rotated 360 degrees. The angle between the location within the motor of any particular step N and N+1 may have up to 5% error, but since the sum of the angles between each step add up to 360 you'll be back to where you started from after 200 steps.

The datasheet includes the 5% error figure so that you know how evenly the steps are positioned around the circle.

The biggest problem with stepper motors is that they can miss a step. That is, the motor is at position N and after you command it to step it fails to move to position N+1. This is usually due to the load on the motor being too large -- the motor doesn't have enough torque to move to the next step with the load. This may also be caused by trying to step the motor too fast.

In your table scenario the table can become uneven if one or more of the motors misses a step. Usually, however, if a motor is able to move one step it is able to move through all 200 steps in the cycle if the load doesn't change.

The most common way to detect if a stepper motor has missed a step is to use an optical encoder which can be used to determine the position of the shaft.

  • 5
    \$\begingroup\$ The angle between the location within the motor of any particular step N and N+1 may have up to 5% error, but since the sum of the angles between each step add up to 360 you'll be back to where you started from after 200 steps. \$\endgroup\$
    – ErikR
    Commented Jun 8, 2021 at 3:42
  • 2
    \$\begingroup\$ If you miss a step while moving relatively fast, there is no guarantee that the motor will even pick up the speed again, can get stuck. \$\endgroup\$
    – user76844
    Commented Jun 8, 2021 at 4:41
  • \$\begingroup\$ with stepper motors it is extremely helpful to implement a constant acceleration algorithm. Practically this means that the pulses are widely spaced when starting from rest, and get more frequent until some desired maximum is reached. As F=mA this keeps the force required from the motor at some manageable and more or less constant level, as long as the load does not change much. I've done this successfully by using a look up table which was generated with a python script, using equations derived from this article. embedded.com/generate-stepper-motor-speed-profiles-in-real-time \$\endgroup\$
    – danmcb
    Commented Jun 8, 2021 at 13:47
  • \$\begingroup\$ @GregoryKornblum Indeed. This phenomenon is known as a "stall" - the stepper indexer in this state is still commanding rotation of the motor and the magnetic field continues to rotate but the speed of the field rotation is high enough that the rotor can no longer follow it and it comes to a stop. The telltale for this condition is that the motor continues to emit the typical coil whine of at-speed operation but the shaft remains motionless. \$\endgroup\$
    – J...
    Commented Jun 8, 2021 at 16:11
  • 1
    \$\begingroup\$ Well, i don't think motor has to stop at each step, i mean, i know for a fact that's not the intended use. But for me even the possibility of a slip or stall is bad enough to stay away from steppers. A closed loop stepper is another thing, but anyway for all my applications i use bldc. \$\endgroup\$
    – user76844
    Commented Jun 8, 2021 at 19:47

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.