Ever since I first levelled the bed on my newly built Prusa i3, I have wanted an easily adjustable z end stop so I could set z0 without having to go around the 4 bed levelling screws. So I was happy when I saw that the Marlin menu tree pdf had an item called “z offset”.
Last weekend I finally got around to installing an LCD on my Prusa, but was disappointed to find that “z offset” is only available if you enable auto bed levelling, and I don’t have a bed levelling probe.
I had been achieving the effect of a firmware adjustable z end stop prior to this by setting the hardware z end stop about 0.5 mm above the bed and using M206 to offset z0 to be below this so the nozzle was just above the bed, followed by M500 to store that in EEPROM. But what I really wanted was a knob to allow me to adjust the height of the nozzle after homing, so I have now added that functionality to my fork of Marlin.
Of course, allowing z0 to be a little below the end stop position does mean you are relying on the flex in the micro-switch arm, since the first layer or two are printed below the min end stop position, but this does not seem to be a problem for offsets < 1 mm. I added a line in Configuration.h
#define Z_MAX_TRAVEL_PAST_ENDSTOP_MM 1
so that I could leave min_software_endstops set true for safety.
So the steps for firmware end stop adjustment procedure using the menus in the photo are:
Auto Home
Move Z (in 0.02 mm increments)
Set Z0 Here (this is the new menu command)
Store memory.
So, is there a better way to do this already in Marlin? If not, is this useful enough that I should submit a pull request?
