Printer Model: Tronxy X5SA Pro 330
MCU / Printerboard: Factory F446
Host / SBC: Pi 3B 1GB
klippy.log: unimportant
Describe your issue:
Hello,
I’ve a printer that has a physical Z endstop along with a dockable probe. Running bed meshing after homing the printer results in a bed mesh that sits at a Z level different than zero (understandably as the probe itself is around 8mm taller than the nozzle).
Question is - is there a way to make Klipper account for this? The workflow in my head would be:
Zero the bed (which also by how I designed this, also zeroes the nozzle)
Attach the probe and measure its height relative to the endstop
Mesh the bed, subtracting the probe relative height from the value
Store that mesh as a true nozzle mesh.
Instead, by current Klipper probe workflow, setting the probe Z offset as a probe-to-nozzle distance means it prints mid air, which makes perfect sense in a printer where the probe is permanently mounted higher than the nozzle, but not in the case of a detachable probe.
How would I go about configuring Klipper for this particular case?
At the moment all I do is use the meshing procedure to see how far off from square the bed is, then adjust the screws accordingly. At no point I load the mesh, which is not really how it’s meant to be used I imagine!
The printer has a small but significant variation between endstop derived Z position and probe derived Z position due to thermal drift and whatnot that is cancelled out by applying a gcode offset for Z based on a separate probe measurement. It turns out that while the probe is quite repeatable within one attachment cycle, there is some variability from probe attachment to attachment, so probe offset is done in several measurement rounds with attach and detach between.
Thank you @bozzo , I’ve been having a look while I set up some new bits in the machine, but I still have some reading to do. My probing procedure is inifinitely simpler and inherently less robust:
gcode_macro ABL]
gcode:
M104 S150 ; Heat up hot end before bed calibration
; Move to the right of the clicky sensor location , lower a bit, get inline with it on Y, go down until the magnets pull, then raise up.
G0 X50
G0 Z10 Y310
G0 X12
G1 Z5
G1 Z50
G0 X50
BED_MESH_CALIBRATE ; do the pokey probe thing, stores to default profile
; Do the same as before, but backwards. First raise Z to avoid collisions, align on Y, get to its right, align on X, lower the probe in to the stowage, then move away from it.
G0 Z30
G0 Y310
G0 X50
G0 X12
G0 Z5
G0 X50
G0 Z20
I wonder if simply setting SET_GCODE_OFFSET Z to match the probe offset after loading the mesh would do it.
Obviously the mes would be as good as unreadable given it’s not centered around 0, but it would print at the right height (unless the slicer uses that command for something else…)
I can probably also write a new mesh with the values derived from the initial probe Z calculations, load that mesh in and it should, in theory, print properly?
maye this is causing issues? higher than nozzle is negative Z territory. Z measures distance from nozzle to bed, regardless of bed or nozzle moving in Z. so detachable probe z is always between nozzle and bed and so always positive…
Physically speaking it’s a dual Z stepper/lead screw with tied drivers (so they move together). There’s a Z endstop used to zero the bed, which is set at somewhere around 0,2mm nozzle-bed distance. The bed probe itself is a detachable magnetic microswitch.
Your point makes sense - but I’d be surprised if klipper didn’t account for the possibility of a probe being between the bed and the nozzle, not the nozzle and the carriage. In effect I’m using a deployable probe (BLTouch style) but instead of deploying it you need to attach it. Granted I use none of the BLTouch macros.