I've been looking into how auto z works and hoping someone here can help point out what I'm missing. I had it set up and seemingly working fine. Recently I switched to the lightweight gantry and had to move my klicky dock up by about 1mm. I figured my probe z offset might change but thought this is where auto z would handle it. The nozzle ended up too close to the bed and after a lot of tinkering with the config, the only way I could fix it was by redoing probe calibrate. This got me thinking and took a closer look into how auto z calculates the offset. From what I can tell, it's really just calculating the distance from the bed to the trigger point of the z endstop and adjusting your current offset accordingly. So this works if you have a good offset currently and it can handle for changes in the build plate but I'm not understanding how it accommodates different nozzle lengths. The formula used in the documentation is:
probe offset = probed height - ( switch height - nozzle height + switch offset)
For the sake of simplicity, let's assume we can probe the bed and switch on the same spot (so no switch offset) and our z homing is perfectly consistent (so nozzle height is always zero). This then simplifies to:
probe offset = probed height - switch height
This is just the difference between when klicky hits the bed and when klicky hits the endstop, which is just the distance from the bed to the endstop. Auto z then issues gcode command to modify your offset by this amount. The problem is it never actually references your existing offset or sets a new offset, it just tweaks the existing one without ever looking at it. I've done some testing and have been able to dial in some first layer tests by tweaking my probe z offset value. This value shouldn't matter if auto z was fully handling calculating offsets.
Given how widely used auto z is I'm sure I'm just missing something or doing something wrong. Hoping someone someone can point me in the right direction