Print start: soak before QGL and Z, load after Z, PA per lane temperature
PRINT_WARMUP: bed heats during the warmup, the nozzle only waits while it is above 170C (Beacon contact limit 180C), one HOME to get over the bed, then M190 and HEAT_SOAK. No more filament load and 220->150C cycle there. PRINT_START (on the soaked bed): one QGL, one contact Z calibration, mesh, heat over the bucket, load the initial tool, PA for all lanes, load the initial tool again if a calibration changed lanes, G28 X Y reference. Loading after the contact keeps ooze off the nozzle for the calibration. PA: calibrate each lane at its own filament temperature (was the temperature from before CHANGE_TOOL), and apply the loaded lane's PA after PA_CALIBRATE_ALL_LANES (the last cached lane's PA won before). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e5be65834e
commit
6cc43f951d
2 files changed
+92
-132
No files matched your search
@@ -422,11 +422,14 @@ gcode:
|
||||
{% else %}
|
||||
CHANGE_TOOL LANE={lane}
|
||||
|
||||
# Nozzle temp: use the extruder's current target, which AFC
|
||||
# already sets from Spoolman when the lane was loaded. Fall
|
||||
# back to the configured default if nothing is set yet.
|
||||
# Nozzle temp: the lane's own filament temperature (AFC, from
|
||||
# Spoolman). Not printer.extruder.target: the template is rendered
|
||||
# before CHANGE_TOOL runs, so that is still the previous lane's
|
||||
# (or the print's) temperature. PA_CALIBRATE heats to it (M109).
|
||||
{% set lane_obj = printer["AFC_stepper " ~ lane] if ("AFC_stepper " ~ lane) in printer else {} %}
|
||||
{% set lane_temp = lane_obj.extruder_temp|default(0, true)|float %}
|
||||
{% set target = printer.extruder.target|default(0)|float %}
|
||||
{% set nozzle_temp = target if target > 0 else cfg.fallback_nozzle_temp|float %}
|
||||
{% set nozzle_temp = lane_temp if lane_temp > 0 else (target if target > 0 else cfg.fallback_nozzle_temp|float) %}
|
||||
|
||||
{action_respond_info("Calibrating PA for %s (spool %d) at %.0fC..." % (lane, spool_id, nozzle_temp))}
|
||||
M117 Calibrating PA: {lane}
|
||||
@@ -619,6 +622,19 @@ gcode:
|
||||
UPDATE_DELAYED_GCODE ID=_PA_POLL_LANE_CHANGE DURATION=2
|
||||
|
||||
|
||||
# PA_CALIBRATE_ALL_LANES sets the PA of every lane in turn (the last one
|
||||
# wins), and the lane-change poll only reacts to a change of the loaded lane.
|
||||
# Run this after it so the PA matches the lane that is actually loaded.
|
||||
[gcode_macro _PA_APPLY_LOADED_LANE]
|
||||
description: Apply the cached PA of the lane loaded in the toolhead
|
||||
gcode:
|
||||
{% set lane = printer.AFC.current_load|default(none) if "AFC" in printer else none %}
|
||||
{% if lane %}
|
||||
_PA_APPLY_FOR_LANE LANE={lane}
|
||||
{% else %}
|
||||
RESPOND MSG="_PA_APPLY_LOADED_LANE: no lane loaded, PA unchanged"
|
||||
{% endif %}
|
||||
|
||||
[gcode_macro _PA_APPLY_FOR_LANE]
|
||||
description: Internal -- applies cached PA for a lane without calibrating
|
||||
# LANE=<lane_name>
|
||||
|
||||
Reference in new issue
Block a user