I’ve been fighting a Z-Banding problem in one of my 3d printers for some time. I’ve swapped lead screws and nuts, added many types of Z isolation, motors, alignment, but I always end up in the same place, banding.
It occured to me that there are likely 2 causes that are leadscrew related.
- Leadscrew Warp.
- Inaccuracies in the threads on the leadscrews or nuts.
To test the positional accuracy (#2) of the leadscrews I fashioned a crude caliper that measures the height of the X gantry at any point in the Z travel. Like others my banding seems to happen with a full rotation of the leadscrew. And using my crude measuring device I can see real positional errors at multiples of 8mm (4 start 8mm screws). I’m seeing up to .06mm-.09mm errors in the position that the gantry is, vs where its commanded to goto. I’m in the process of setting up a DRO with glass scales to mount rigidly to the gantry to provide a more confident test. This DRO has a usb connection so the values displayed in the DRO screen can also be read programatically.
— Feature Request —
I propose a new feature that acts similar to ABL that maps the actual position of a leadscrew(s) vs the commanded position. So, if the Z axis was sent to 20mm, and the measured position was 19.82mm Klipper would command the axis to 20.18. The DRO could be used programatically to determine the actual position of the gantry to build the map. This could be a command (z_leadscrew_map) to create a 1 time map and you remove the DRO and glass scales after the map has been made. If banding occurs in the future the DRO could be reinstalled to build a current map.
Thank you for your consideration,