Chamber prints: unload a lane that is not the first tool before the soak
With the chamber heated, a filament left in the toolhead path softens in the PTFE tube (PLA loaded, ASA print). After the first HOME, PRINT_WARMUP unloads the loaded lane when it is not mapped to the print's first tool (PRINT_START would swap it anyway). A failed unload stops the print before the chamber heats. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6cc43f951d
commit
2100857846
1 file changed
+36
@@ -19,6 +19,7 @@ description: Print start before HEAT_SOAK: home while the bed heats, wait for th
|
|||||||
gcode:
|
gcode:
|
||||||
{% set target_bed = params.BED|int %}
|
{% set target_bed = params.BED|int %}
|
||||||
{% set target_chamber = params.CHAMBER|default("0")|int %}
|
{% set target_chamber = params.CHAMBER|default("0")|int %}
|
||||||
|
{% set initial_tool = params.TOOL|default("0")|int %}
|
||||||
|
|
||||||
RESET_FAILURE
|
RESET_FAILURE
|
||||||
CLEAR_PAUSE
|
CLEAR_PAUSE
|
||||||
@@ -48,6 +49,9 @@ gcode:
|
|||||||
_NOZZLE_CONTACT_TEMP
|
_NOZZLE_CONTACT_TEMP
|
||||||
RESPOND MSG="homing"
|
RESPOND MSG="homing"
|
||||||
HOME
|
HOME
|
||||||
|
{% if target_chamber > 30 %}
|
||||||
|
_UNLOAD_FOR_CHAMBER TOOL={initial_tool}
|
||||||
|
{% endif %}
|
||||||
G1 X175 Y175 Z5 F1200
|
G1 X175 Y175 Z5 F1200
|
||||||
|
|
||||||
_STATUS STATE=heating_bed
|
_STATUS STATE=heating_bed
|
||||||
@@ -67,6 +71,38 @@ gcode:
|
|||||||
HEAT_SOAK HEATER='heater_bed' TARGET={target_bed} SOAKER='temperature_sensor bed_core' SOAK_TEMP={target_bed - 5} TIMEOUT=30 CANCEL='_NOTHING'
|
HEAT_SOAK HEATER='heater_bed' TARGET={target_bed} SOAKER='temperature_sensor bed_core' SOAK_TEMP={target_bed - 5} TIMEOUT=30 CANCEL='_NOTHING'
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
# With the chamber heated, a filament that stays in the toolhead path softens
|
||||||
|
# in the PTFE tube (PLA loaded, ASA print). PRINT_START would swap a lane that
|
||||||
|
# is not the first tool's anyway, so unload it now, before the chamber heats.
|
||||||
|
# AFC moves the filament back into the Box Turtle, outside the chamber.
|
||||||
|
[gcode_macro _UNLOAD_FOR_CHAMBER]
|
||||||
|
description: Before a chamber soak: unload the toolhead when its lane is not mapped to TOOL (the print's first tool)
|
||||||
|
gcode:
|
||||||
|
{% set tool = 'T' ~ params.TOOL|default(0)|int %}
|
||||||
|
{% set cur = printer.AFC.current_load if 'AFC' in printer else none %}
|
||||||
|
{% if cur and ('AFC_stepper ' ~ cur) in printer %}
|
||||||
|
{% set lane = printer['AFC_stepper ' ~ cur] %}
|
||||||
|
{% if lane.map != tool %}
|
||||||
|
RESPOND MSG="Chamber heating: unloading {cur} ({lane.material}, {lane.map}), the print starts with {tool}"
|
||||||
|
_HEAT_FOR_LOADED_LANE TOOL={params.TOOL|default(0)|int}
|
||||||
|
TOOL_UNLOAD LANE={cur}
|
||||||
|
_UNLOAD_FOR_CHAMBER_VERIFY LANE={cur}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
# Separate macro: rendered after TOOL_UNLOAD has run. A failed unload stops
|
||||||
|
# the print before the chamber heats.
|
||||||
|
[gcode_macro _UNLOAD_FOR_CHAMBER_VERIFY]
|
||||||
|
description: Helper for _UNLOAD_FOR_CHAMBER: stop the print when the lane is still loaded
|
||||||
|
gcode:
|
||||||
|
{% if printer.AFC.current_load %}
|
||||||
|
_ERROR MSG="Chamber heating: {params.LANE} could not be unloaded ({printer.AFC.current_load} still in the toolhead), print stopped before the chamber heats" DISPLAY="Unload failed, print stopped"
|
||||||
|
{% else %}
|
||||||
|
# The filament the retract was remembered for is gone
|
||||||
|
SAVE_VARIABLE VARIABLE=nozzle_retract VALUE=0
|
||||||
|
M104 S150
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
# Beacon contact refuses a nozzle above contact_max_hotend_temperature (180C)
|
# Beacon contact refuses a nozzle above contact_max_hotend_temperature (180C)
|
||||||
[gcode_macro _NOZZLE_CONTACT_TEMP]
|
[gcode_macro _NOZZLE_CONTACT_TEMP]
|
||||||
description: Nozzle to 150C for Beacon contact; wait only while it is above MAXIMUM (default 170C), WAIT=1 also waits until it is at least 145C
|
description: Nozzle to 150C for Beacon contact; wait only while it is above MAXIMUM (default 170C), WAIT=1 also waits until it is at least 145C
|
||||||
|
|||||||
Reference in new issue
Block a user