Clamping a long-stroke dial indicator to the M2’s X axis gantry:
Then stuffing manual G-Code into Pronterface produced some data on Z-axis accuracy, repeatability, and hysteresis:
Note that the commanded positions are in 0.001 mm units (25 = 0.025 mm) and the observed positions are in mils (1 = 0.001 inch). The arrows indicate which way the stage moved, with positive Z increments moving the stage down.
I summarized this as part of a discussion on the Makergear Google Group…
The overall distance seems to be quantized at 0.0150 mm = 6 step intervals. You can command a motion between those steps (G0 Z0.0025, G0 Z0.0075, etc), but the motor doesn’t turn until the distance exceeds the next interval (G0 Z0.0150 causes motion). This isn’t stiction, because the firmware isn’t activating the motor.
Stepping up and down in 0.025 mm increments (10 steps, but not an even multiple of the 6 step quantization intervals) over a 0.100 mm range produces about 0.01 mm = 4 steps of backlash. Some of that definitely comes from the quantization interval, but it’s not consistent, so there’s also mechanical backlash.
Frankly, that’s better than I expected, but any motion less than about 4 steps probably won’t happen and the errors are on the same order. Whether the firmware itself can compute and apply a smaller motion isn’t clear.
The controller doesn’t know where the platform is, at least in an open-loop stepper system. That means when the commanded motion is on the same order as the backlash, the controller can’t make the proper adjustments. As long as the positioning error remains smaller than the tolerance, it’s all good; expecting 0.020 mm resolution and accuracy seems reasonable.
But it’s only a quick-and-dirty test, so I wouldn’t read too much into it.