Steps per millimeter
How the controller maps motor steps to physical distance. Get this wrong and every cut is the wrong size.
The controller tells the motor "move N steps". The motor moves a fraction of a turn per step, and the belt / pulley / leadscrew converts that to linear motion. Steps per millimeter is the conversion factor, the number of motor steps that produce 1 mm of linear travel.
If steps/mm is wrong by 5%, every cut is 5% the wrong size. Most setup problems where parts come out consistently the wrong size trace back to steps/mm.
The basics
Each axis has its own steps/mm. In GRBL, the settings are $100 (X), $101 (Y), $102 (Z).
A typical 16-tooth GT2 pulley with 200-step motor at 1/16 microstepping computes to about 100 steps/mm:
steps/mm = (motor_steps_per_rev × microsteps) / (belt_teeth × belt_pitch)
= (200 × 16) / (16 × 2)
= 100(The math varies by mechanical setup. The number is whatever it is for your machine.)
How to verify
- Tell the machine to move some distance, say 100 mm in X.
- Measure how far it actually moved.
- The ratio tells you whether steps/mm is correct.
If you commanded 100 mm and it moved 95 mm, your current steps/mm value needs to increase by about 5.26%. Multiply by 100 / 95 to correct.
Beam Bench's framing function is a good way to verify: have it frame a 100 mm × 100 mm rectangle, then measure with calipers.
How Beam Bench handles it
Steps/mm lives in the controller's firmware, not in Beam Bench. Beam Bench just sends G-code; the controller does the conversion.
To set steps/mm, first read the current values with $$, calculate the replacement for each axis, then use $100=… and $101=… as syntax templates. Replace each ellipsis with the calculated machine-specific value; do not paste either template unchanged. The changes persist in the controller's EEPROM.
The GRBL Settings tab of Device Settings provides a UI for viewing and editing these values. Changes to $100, $101, and $102 persist in the controller's EEPROM. Apply to Active Profile does not copy steps/mm; it only copies a valid $30 into S-value Max and the lower valid rate from $110 / $111 into Max Speed.
When it matters
- After you change anything mechanical: motor, pulley, belt, leadscrew, microstepping setting.
- When you swap controllers.
- The first time you set up a new machine.
When it does not
After it is dialed in once, steps/mm does not drift. Unless you change something physical, you do not need to redo it.
Related
- Console panel,
$$to dump current values - Device Settings → GRBL Settings tab
- Dollar settings reference guide
- GRBL essentials