Group macros by topic, add Blobifier, fix first tool change
- Split the macro files into folders by topic (print, heating, afc, pressure_advance, spoolman, leds, sensors); klipper-macros.cfg is the one file printer.cfg includes. Macros moved unchanged; the effective config is identical apart from the paths of the PA shell scripts. - Add the modified Blobifier (Turtleblobifier for AFC) and define [save_variables] once in save_variables.cfg instead of in both blobifier.cfg and the PA macros (same file, bd_pa_variables.cfg). - PRINT_WARMUP: heat to the loaded lane's temperature before the first tool change. AFC skips heating when the loaded lane's tool number is not in the print file's temperature list, and the unload then failed below min_extrude_temp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
6dbb4ca3fb
commit
eaf9c82617
27 files changed
+1366
-340
No files matched your search
@@ -0,0 +1,173 @@
|
||||
# Bed fans driven by the bed heater (based on Ellis' bed fan macros)
|
||||
|
||||
############### Config options ##################
|
||||
|
||||
[gcode_macro _BEDFANVARS]
|
||||
variable_threshold: 50 # If bed temp target is above this threshold, fans will be enabled. If temp is set to below this threshold, fans will be disabled.
|
||||
variable_fast: 1.0 # Fan speed once bed temp is reached
|
||||
variable_slow: 0.5 # Fan speed while bed is heating
|
||||
variable_cooldown_temp: 40 # NEW: fans stop below this temp
|
||||
gcode:
|
||||
|
||||
########## Aliases #########
|
||||
|
||||
[gcode_macro BEDFANSSLOW]
|
||||
gcode:
|
||||
# Vars
|
||||
{% set SLOW = printer["gcode_macro _BEDFANVARS"].slow|float %}
|
||||
|
||||
SET_FAN_SPEED FAN=BedFans SPEED={SLOW}
|
||||
|
||||
[gcode_macro BEDFANSFAST]
|
||||
gcode:
|
||||
# Vars
|
||||
{% set FAST = printer["gcode_macro _BEDFANVARS"].fast|float %}
|
||||
|
||||
SET_FAN_SPEED FAN=BedFans SPEED={FAST}
|
||||
|
||||
[gcode_macro BEDFANSOFF]
|
||||
gcode:
|
||||
SET_FAN_SPEED FAN=BedFans SPEED=0
|
||||
|
||||
############ Command overrides ############
|
||||
|
||||
# Override, set fan speeds to low and start monitoring loop.
|
||||
[gcode_macro SET_HEATER_TEMPERATURE]
|
||||
rename_existing: _SET_HEATER_TEMPERATURE
|
||||
gcode:
|
||||
# Parameters
|
||||
{% set HEATER = params.HEATER|default("None") %}
|
||||
{% set TARGET = params.TARGET|default(0)|int %}
|
||||
# Vars
|
||||
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
|
||||
{% set COOLDOWN = printer["gcode_macro _BEDFANVARS"].cooldown_temp|int %}
|
||||
|
||||
{% if HEATER|lower == "extruder" %}
|
||||
M104 S{TARGET}
|
||||
|
||||
# {% elif HEATER|lower == "iHeater_H" %}
|
||||
# _SET_HEATER_TEMPERATURE {rawparams}
|
||||
|
||||
{% elif HEATER|lower == "heater_bed" %}
|
||||
M99140 S{TARGET}
|
||||
|
||||
# Always cancel cooldown loop first (prevents overlap)
|
||||
UPDATE_DELAYED_GCODE ID=bedfancooldown DURATION=0
|
||||
|
||||
# --- NEW LOGIC BLOCK ---
|
||||
{% if TARGET == 0 %}
|
||||
# Bed turning off → start cooldown behavior
|
||||
{% if printer.heater_bed.temperature|int > COOLDOWN %}
|
||||
BEDFANSSLOW
|
||||
UPDATE_DELAYED_GCODE ID=bedfancooldown DURATION=5
|
||||
{% else %}
|
||||
BEDFANSOFF
|
||||
{% endif %}
|
||||
|
||||
# Stop normal heating loop if running
|
||||
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=0
|
||||
|
||||
{% elif TARGET >= THRESHOLD %}
|
||||
# Heating above threshold
|
||||
BEDFANSSLOW
|
||||
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=1
|
||||
|
||||
{% else %}
|
||||
# Low temp request
|
||||
BEDFANSOFF
|
||||
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=0
|
||||
{% endif %}
|
||||
# --- END NEW LOGIC ---
|
||||
|
||||
{% else %}
|
||||
# {action_respond_info("(Bedfans macro)Heater %s not supported (trying classic _SET_HEATER_TEMPERATURE)" % HEATER)}
|
||||
_SET_HEATER_TEMPERATURE {rawparams}
|
||||
{% endif %}
|
||||
|
||||
# Override M190 (Wait for Bed Temperature)
|
||||
# As a bonus, use TEMPERATURE_WAIT so we don't have to wait for PID to level off.
|
||||
[gcode_macro M190]
|
||||
rename_existing: M99190
|
||||
gcode:
|
||||
# Parameters
|
||||
{% set S = params.S|int %}
|
||||
# Vars
|
||||
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
|
||||
|
||||
{% if S >= THRESHOLD %}
|
||||
BEDFANSSLOW # >= Threshold temp: Low speed fans while heating
|
||||
{% else %}
|
||||
BEDFANSOFF # < Threshold temp: Turn bed fans off
|
||||
{% endif %}
|
||||
|
||||
M140 {% for p in params
|
||||
%}{'%s%s' % (p, params[p])}{%
|
||||
endfor %} # Set bed temp
|
||||
|
||||
{% if S != 0 %}
|
||||
TEMPERATURE_WAIT SENSOR=heater_bed MINIMUM={S|int} MAXIMUM={S|int + 5} # Wait for bed temp within 5 degrees
|
||||
{% endif %}
|
||||
|
||||
# Post-heating fan speeds
|
||||
{% if S >= THRESHOLD %}
|
||||
BEDFANSFAST # >= Threshold temp: Higher speed fans after heating finished
|
||||
{% endif %}
|
||||
|
||||
# Replace M140 (Set Bed Temperature) to just be an alias of SET_HEATER_TEMPERATURE (which has associated bed fan logic if enabled)
|
||||
[gcode_macro M140]
|
||||
rename_existing: M99140
|
||||
gcode:
|
||||
# Parameters
|
||||
{% set S = params.S|float %}
|
||||
|
||||
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={S}
|
||||
|
||||
# Replace TURN_OFF_HEATERS
|
||||
# [gcode_macro TURN_OFF_HEATERS]
|
||||
# rename_existing: _TURN_OFF_HEATERS
|
||||
# gcode:
|
||||
# BEDFANSOFF
|
||||
# _TURN_OFF_HEATERS
|
||||
[gcode_macro TURN_OFF_HEATERS]
|
||||
rename_existing: _TURN_OFF_HEATERS
|
||||
gcode:
|
||||
# Vars
|
||||
{% set COOLDOWN = printer["gcode_macro _BEDFANVARS"].cooldown_temp|int %}
|
||||
|
||||
# Only keep fans running if bed is still hot
|
||||
{% if printer.heater_bed.temperature|int > COOLDOWN %}
|
||||
BEDFANSSLOW
|
||||
UPDATE_DELAYED_GCODE ID=bedfancooldown DURATION=5
|
||||
{% else %}
|
||||
BEDFANSOFF
|
||||
{% endif %}
|
||||
|
||||
_TURN_OFF_HEATERS
|
||||
|
||||
################ Monitoring loop #####################
|
||||
|
||||
# Turns bed fans to "fast" speed once target bed temp is reached.
|
||||
[delayed_gcode bedfanloop]
|
||||
gcode:
|
||||
# Vars
|
||||
{% set THRESHOLD = printer["gcode_macro _BEDFANVARS"].threshold|int %}
|
||||
|
||||
{% if printer.heater_bed.target >= THRESHOLD %} # Continue only if target temp greater than threshold.
|
||||
{% if printer.heater_bed.temperature|int >= (printer.heater_bed.target|int - 1) %}
|
||||
BEDFANSFAST # If within 1 degree of target temp: Higher speed fans
|
||||
{% else %}
|
||||
UPDATE_DELAYED_GCODE ID=bedfanloop DURATION=5 # If temp not reached yet: loop again
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
[delayed_gcode bedfancooldown]
|
||||
gcode:
|
||||
# Vars
|
||||
{% set COOLDOWN = printer["gcode_macro _BEDFANVARS"].cooldown_temp|int %}
|
||||
|
||||
{% if printer.heater_bed.temperature|int > COOLDOWN %}
|
||||
BEDFANSSLOW
|
||||
UPDATE_DELAYED_GCODE ID=bedfancooldown DURATION=10
|
||||
{% else %}
|
||||
BEDFANSOFF
|
||||
{% endif %}
|
||||
Reference in new issue
Block a user