Steps Per mm Formula
Steps per mm formulas for belt axes and leadscrew Z.
Covers motor steps, microstepping, pulley teeth, belt pitch, and leadscrew lead with examples.
Belt Axis (X, Y)
| Variable | Meaning |
|---|---|
| motor_steps | Full steps per motor revolution (NEMA 17 = 200) |
| microstepping | Driver subdivision (1, 2, 4, 8, 16, 32...) |
| belt_pitch | Distance between belt teeth in mm (GT2 = 2 mm) |
| pulley_teeth | Number of teeth on the drive pulley |
NEMA 17 (200 steps), 16x microstepping, GT2 belt (2mm pitch), 20-tooth pulley
steps/mm = (200 × 16) / (2 × 20) = 3200 / 40
80 steps/mm (most common belt printer value)
Leadscrew Axis (Z)
Lead is the axial distance traveled per one full rotation of the screw. For a multi-start leadscrew, lead = pitch x starts. A T8 leadscrew with 2mm pitch and 4 starts has 8mm lead, not 2mm.
200-step motor, 16x microstepping, T8 leadscrew with 8mm lead
steps/mm = (200 × 16) / 8 = 3200 / 8
400 steps/mm
Extruder
BMG extruder: 200-step motor, 16x microstepping, 3:1 gear ratio, 7.5mm hobbed gear
steps/mm = (200 × 16 × 3) / (π × 7.5) = 9600 / 23.56
407.4 steps/mm (typical BMG value is 415, tuned empirically)
Key Notes
- These formulas give the theoretical starting value. Extruder steps should always be verified empirically by marking filament 100mm from the extruder inlet, commanding 100mm, and measuring the actual distance moved. Adjust proportionally.
- More microstepping does not increase real positioning accuracy proportionally. The motor holds intermediate positions with reduced torque, and there is backlash hysteresis. Microstepping primarily reduces vibration and smooths motion at low speeds.
- In Klipper, steps/mm is replaced by rotation_distance. Convert with: rotation_distance = full_steps_per_rotation x microstepping / steps_mm.
- If you change your pulley size (say from 20T to 16T), your steps/mm changes by the inverse ratio: 16T gives 100 steps/mm instead of 80 with a 20T. Update firmware before printing.