Stepper motors divide a full rotation into hundreds of discrete steps, which makes them ideal to precisely control movements, be it in cars, robots, 3D printers or CNC machines. Most stepper motors you’ll encounter in DIY projects, 3D printers, and small CNC machines are bi-polar, 2-phase hybrid stepper motors, either with 200 or — in the high-res variant — with 400 steps per revolution. This results in a step angle of 1.8 °, respectively 0.9 °.
In a way, steps are the pixels of motion, and oftentimes, the given, physical resolution isn’t enough. Hard-switching a stepper motor’s coils in full-step mode (wave-drive) causes the motor to jump from one step position to the next, resulting in overshoot, torque ripple, and vibrations. Also, we want to increase the resolution of a stepper motor for more accurate positioning. Modern stepper motor drivers feature microstepping, a driving technique that squeezes arbitrary numbers of microsteps into every single full-step of a stepper motor, which noticeably reduces vibrations and (supposedly) increases the stepper motor’s resolution and accuracy.
On the one hand, microsteps are really steps that a stepper motor can physically execute, even under load. On the other hand, they usually don’t add to the stepper motor’s positioning accuracy. Microstepping is bound to cause confusion. This article is dedicated to clearing that up a bit and — since it’s a very driver dependent matter — I’ll also compare the microstepping capabilities of the commonly used A4988, DRV8825 and TB6560AHQ motor drivers.