Should I do a delta calibration when I switch between print surfaces?

Basic Information:

Printer Model: FLSUN QQ
MCU / Printerboard: MKS
Host / SBC: Pi 3B+
klippy.log.zip (22.0 KB)

Describe your issue:

I have a magnetic plate on top of which I can put different print beds for different textures. When I switch from one bed to another, I’d like to use a z-probe to set the new bed height. Do I need to run DELTA_CALIBRATE or is there another command that only adjusts the z origin?

You shouldn’t call DELTA_CALIBRATE as this command can change endstop offsets, Delta radius, etc …

Just use probe to detect new Z-Height
command: PROBE

Or (if you know bed height differences) - then you can use one bed as a true reference and when using other you can manually define Z offset via G92 command - it can re-define current Z position in runtime.

if you can control bed in slicer then G92 can be integrated in slicer, something like this:

G0 X0 Y0 Z200.2
G92 Z200

this will offset Z0 coordinate to 0.2mm higher, this will hold until G28 (Homing) is called, which usually always present in beginning of print.

The PROBE command only prints the bed height to the console, doesn’t it? I still have to copy the number and then issue a command to set it?

In the fluidd UI there is also a z-offset function that sends the gcode SET_GCODE_OFFSET Z_ADJUST=... MOVE=0. Is that different from the G92 command?

By the code of SET_GCODE_OFFSET and G92
I would say following:
G92 - will update just base_position - current position of a toolhead
SET_GCODE_OFFSET - will do the same update of base_position but additionally it will update homing_position - which will be used on next homing sequence

So I would say SET_GCODE_OFFSET - offsets will survive G28 (Re-Homing) but not klipper restart, G92 - offsets will be reset after G28 (Re-Homing)

Yes PROBE is just prints bed height to the console, but it also remember it in internal variable probe variable
so you can build simple MACRO which can use it and invoke G92, something like this:
P.S. this is simplified macro which just use probe value for new Z position, it needs additional calculations as current position of toolhead most probably is different than when it was probed

[gcode_macro APPLY_PROBE_TO_Z_OFFSET]
gcode:
  {% set z_probe = printer.probe.last_z_result|float %}
  {% if z_probe > 0. %}
     G92 Z{z_probe}
  {% endif %}

Then you can call PROBE and then your MACRO, but those should be called separately, they can’t be joined under single macro because MACRO will not see updated variables in PROBE.

You still can override G28 and include PROBE there and integrate APPLY_PROBE_TO_Z_OFFSET into your START_PRINT macro as G28 and START_PRINT are called separately.

2 Likes

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.