360/angle × microstepping steps per revolution, and the axis moves whatever the
transmission gives per revolution — pulley teeth × belt pitch, or the screw lead. Divide one by
the other and you have steps per mm, which is the number your firmware wants.
Microstepping does not buy you accuracy. It smooths motion and reduces resonance, but
the incremental torque holding a microstep in place falls with the sine of the step angle, so
at 1/256 the motor cannot resist even small forces at that resolution — the position is a
suggestion. Real positioning accuracy is set by the mechanics: belt stretch, backlash, screw
error. Treat resolution as the number your controller commands, not the tolerance you will
hold. Watch the step rate too: a fine microstep setting at high feedrate can ask for more pulses
per second than the controller can issue, and the axis simply stops accelerating.
| GT2 belt, 20 T pulley, 1.8°, 1/16 | 80 steps/mm | Ender 3 and most bed-slinger X/Y axes |
|---|---|---|
| GT2 belt, 16 T pulley, 1.8°, 1/16 | 100 steps/mm | Common on CoreXY builds |
| GT2 belt, 20 T pulley, 0.9°, 1/16 | 160 steps/mm | 0.9° motor, same mechanics |
| T8 leadscrew, 8 mm lead, 1.8°, 1/16 | 400 steps/mm | Ender 3 Z axis — 4-start, 2 mm pitch |
| T8 leadscrew, 2 mm lead, 1.8°, 1/16 | 1600 steps/mm | Single-start T8, much finer and much slower |
| Ballscrew, 5 mm lead, 1.8°, 1/8 | 320 steps/mm | Typical CNC router Z |
| M8 threaded rod, 1.25 mm lead, 1.8°, 1/16 | 2560 steps/mm | Old RepRap Z — accurate but very slow |
A 1.8° motor is 200 full steps per revolution; a 0.9° motor is 400. Belt travel per revolution is pulley teeth × belt pitch, so a 20-tooth GT2 pulley moves 40 mm per turn.