A 3D printer that printed fine at 80 mm/s but skipped steps at 100 mm/s. The skip happened on the X axis, always in the same direction, always around the same spot on the bed. The customer tightened the belts, replaced the pulleys, even swapped the stepper driver. Nothing helped. The skip was speed-dependent, not load-dependent. That’s the giveaway.

A stepper motor isn’t a smooth motor. It moves in discrete steps. Between steps, the rotor is a spring-mass system. It oscillates around the target position before settling. If the step frequency lands near the rotor’s natural resonance (usually 1-3 kHz for a NEMA 17 with a light load), the oscillations reinforce. The rotor overshoots. It loses synchronism. The axis skips.

At 80 mm/s, the X axis runs at about 4800 steps/s with 1/16 microstepping and a 20-tooth pulley. That’s well past the resonance band. At 100 mm/s it’s 6000 steps/s — still past it. But the acceleration profile passes through the resonance band twice per move. The printer does fast moves, so it spends a fraction of a second at 1-2 kHz every time it accelerates. Under the right load conditions, that brief pass is enough to knock the rotor out of sync. The skip is random but reproducible on the same geometry because the resonance depends on the mechanical setup.

What fixed it

Three changes, and the printer ran clean after the first one.

1. Switched from 1/16 to 1/32 microstepping. The microstep resolution doesn’t change the physical step count, but it changes how the drive excites the resonance. With 1/32 stepping the current waveform is smoother, the torque ripple is lower, and the resonance amplitude drops. The skip disappeared at 100 mm/s. This is a one-line firmware change.

2. Adjusted the acceleration curve. The printer’s firmware allowed 4000 mm/s². At that rate the axis passes through the resonance band in about 0.05 s — enough to excite it. Dropping to 2500 mm/s² means the axis spends more time at low speed but the excitation is gentler. It sounds backwards (slower accel fixes skipping) but it works, because the skip was a resonance problem, not a torque problem.

3. Added a damper. When the skip came back on a heavier print head, we added a rubber-damped pulley (a toothed pulley with a silicone ring around the bore). The damper absorbs the resonance energy at the source. It’s a $5 part that eliminates most mid-speed stepper noise and skip issues.

How to find the resonance speed on your machine

Run the axis at increasing speeds from standstill. Note where it buzzes, whines, or skips. That’s the resonance band. Mark it. If your travel speeds put you inside the band, either change the microstepping, change the pulley diameter (moves the step frequency), or avoid the speed. A bigger pulley means fewer steps per mm, which moves the resonance speed up. It also changes resolution, so check your steps-per-mm value after.

For a NEMA 17 with a typical light load, the resonance band sits around 1-2 kHz. At 1/16 stepping with a 20-tooth GT2 pulley (80 steps/mm), that’s 12-25 mm/s. Most machines accelerate through this range so fast it never matters. It starts mattering when you add mass — a heavier gantry, a bigger extruder, a probe attached to the carriage. More mass lowers the resonance frequency and widens the band.

What not to do

Don’t crank the current higher to “push through” the resonance. More current makes the resonance worse — it increases the torque ripple at the resonant frequency. Don’t loosen the belt either. A loose belt lowers the system stiffness and drops the resonance frequency into your working range. If you suspect resonance, tighten the belt first, then test.

The speed-dependent skip on a stepper is resonance, not torque. Change microstepping, adjust acceleration, or add a damper. Crank the current and you’ll make it worse. A machine that skips at 100 mm/s but prints fine at 80 isn’t underpowered — it’s running through its natural frequency.