Auto offset calibration of hot-end vs z-probe
-
Hi all!
I'm setting up my voron 2.4r2 and it looks like I'm "implementing my own bicycle". I'm sure there is a solution in RRF.
What I'm trying to achieve is to automatically calibrate offset of hot-end using both z-endstop and z-probe.
There are static distances that aren't changed when hot-end is changed:
- z-endstop vs bed
- bed vs z-probe (inductive probe trigger height)
- z-probe vs head (it's mounted on the head)
There is a dynamic distance "hot-end vs head" that changes when hot-end is changed. But since hot-end presses directly to z-endstop and also we can calculate "z-endstop vs head" distance via that chain of dependencies, so there is no need in paper-test after hot-end changes, since we can calculate it.
Initially I set up
G31 Z*
with a paper-test. Now I'm simulating hot-end length change and trying to re-tune offset automatically.Currently I'm playing with
G30 S-*
command parameters but can't find a solution for the issue. They change not what I need to change, do they?Looks like I'm missing something trivial?
-
@toxs said in Auto offset calibration of hot-end vs z-probe:
But since hot-end presses directly to z-endstop and also we can calculate "z-endstop vs head" distance via that chain of dependencies, so there is no need in paper-test after hot-end changes, since we can calculate it.
can you expand on this a bit more. Do you touch the nozzle off the Z endstop like a tool setter to set the new hotend offset?
-
@T3P3Tony yep, voron 2.4 touches z-endstop with a nozzle tip (by default), not with a gantry
-
@toxs ahh ok, then if that switch position is known and fixed then with you reference hotend you can determine the offset (for example home against it using G1 H3 and then use the position it triggers to update the offset.
-
Ended up with the following macros:
var paperTest = 1.1 M290 R0 S0 ; babystepping = 0 G29 S2 ; turn off bedmesh M98 P"/macros/Drive/home_if_not.g" ; home if needed M98 P"/macros/Printing/nozzle_brush.g" G28 Z ; home Z G1 X245 Y300 F99999 ; go to probe point var lastStopHeight = -1 while iterations < 2 || abs(sensors.probes[0].lastStopHeight - var.lastStopHeight) > 0.005 set var.lastStopHeight = sensors.probes[0].lastStopHeight G30 S-1 ; probe without setting G1 Z5 F99999 var newTriggerHeight = var.lastStopHeight + var.paperTest var deltaTriggerHeight = var.newTriggerHeight - sensors.probes[0].triggerHeight echo "Trigger Height Old, New, Delta: " ^ sensors.probes[0].triggerHeight ^ ", " ^ var.newTriggerHeight ^ ", " ^ var.deltaTriggerHeight G30 ; probe
-
@toxs
There is an easier way...
Your are trying to calculate a sensor trigger height, but mechanically it does not change at all....
Use the endstop to set the Z0 datum
Use the sensor to align the print bed or generate the mesh.First get Z0 at the end stop, then use the sensor to align the bed, after that get Z0 again at the end stop.
Do the same procedure to generate the bed mesh.
There are some videos on youtube on how to do this.