Macros as they run on the printer (Voron 2.4 + AFC Box Turtle + Blobifier + Beacon + bd_pressure + bdwidth + iHeater), the Klipper modules they need (xy_drift, bdwidth_status, bdpressure_check), MCU firmware update scripts, install.sh with Moonraker update manager support, and READMEs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
279 lines
9.4 KiB
INI
279 lines
9.4 KiB
INI
# Print start/end macros. Included by klipper-macros.cfg.
|
|
|
|
# [dynamicmacros]
|
|
# configs: Macros/dynamicmacros.cfg
|
|
|
|
# [gcode_button kill_switch]
|
|
# pin: gpio7
|
|
# press_gcode: M112
|
|
|
|
[idle_timeout]
|
|
gcode:
|
|
TURN_OFF_HEATERS
|
|
iHEATER_OFF ; Turns off the chamber heater
|
|
M84
|
|
# reset paused flag
|
|
{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
|
|
_TOOLHEAD_PARK_PAUSE_CANCEL
|
|
{% endif %}
|
|
_status_ready
|
|
# A list of G-Code commands to execute on an idle timeout. See
|
|
# docs/Command_Templates.md for G-Code format. The default is to run
|
|
# "TURN_OFF_HEATERS" and "M84".
|
|
timeout: 85400 # 24 hours
|
|
# Idle time (in seconds) to wait before running the above G-Code
|
|
# commands. The default is 600 seconds.
|
|
|
|
#####################################################################
|
|
# Macros
|
|
#####################################################################
|
|
|
|
# [gcode_macro PRINT_START]
|
|
# gcode:
|
|
# PRINT_WARMUP BED={params.BED} EXTRUDER={params.EXTRUDER} CHAMBER={params.CHAMBER|default("0")} TOOL={params.TOOL|default("0")}
|
|
# PRINT_START_2 EXTRUDER={params.EXTRUDER}
|
|
|
|
[gcode_macro PRINT_WARMUP]
|
|
description: Perform initial homing and heating tasks
|
|
gcode:
|
|
{% set target_bed = params.BED|int %}
|
|
{% set target_extruder = params.EXTRUDER|int %}
|
|
{% set target_chamber = params.CHAMBER|default("0")|int %}
|
|
# {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
|
|
# {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}
|
|
{% set initial_tool = params.TOOL|default("0")|int %}
|
|
|
|
{% set chamber_temp = printer["temperature_sensor chamber"].temperature|float %}
|
|
|
|
RESET_FAILURE
|
|
CLEAR_PAUSE
|
|
|
|
_motion_detected
|
|
|
|
#SET_PIN PIN=caselight VALUE=1.00
|
|
UPDATE_DELAYED_GCODE ID=_delayed_motors_off DURATION=0
|
|
|
|
BED_MESH_CLEAR
|
|
SET_GCODE_OFFSET Z=0
|
|
|
|
CLEAR_PAUSE
|
|
|
|
SKEW_PROFILE LOAD=Califlower
|
|
|
|
{% set current_temp = printer.extruder.temperature %}
|
|
{% if current_temp > 150 %}
|
|
RESPOND MSG="nozzle to hot, lowering to 150"
|
|
M104 S150 ; set nozzle temp to 150
|
|
M109 S150 ; wait until nozzle reaches 150 ; wait until nozzle reaches 0
|
|
{% endif %}
|
|
|
|
_status_homing
|
|
RESPOND MSG="homing"
|
|
HOME
|
|
RESPOND MSG="homing finished"
|
|
# G0 Z2 ; position beacon at 2mm for heat soak
|
|
|
|
{% if target_bed < 60 %}
|
|
RESPOND MSG="Using PID for <60°C bed"
|
|
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={target_bed} PID_KP=33.606 PID_KI=0.694 PID_KD=407.058
|
|
{% else %}
|
|
RESPOND MSG="Using PID for ≥60°C bed"
|
|
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET={target_bed} pid_Kp=46.843 pid_Ki=2.002 pid_Kd=274.034
|
|
{% endif %}
|
|
|
|
G1 X175 Y175 Z2 F1200
|
|
_status_heating
|
|
RESPOND MSG="heating"
|
|
{% if target_bed > 0 %}
|
|
M140 S{target_bed} ; start bed heater
|
|
M104 S150 ; set nozzle temp to 150
|
|
M109 S150 ; wait until nozzle reaches 150 ; wait until nozzle reaches 0
|
|
M190 S{target_bed} ; wait on bed temperature
|
|
{% endif %}
|
|
|
|
HOME
|
|
QUAD_GANTRY_LEVEL
|
|
BLOBIFIER_CLEAN ; call another macro to wipe nozzle if available
|
|
G1 X175 Y175 Z5 F1200
|
|
|
|
T{initial_tool} #PURGE_LENGTH=100 #Load Initial Tool
|
|
M104 S{target_extruder} ; set extruder to print temp
|
|
M109 S{target_extruder} ; wait for extruder temp
|
|
G10 ; retract
|
|
|
|
M104 S150 ; set nozzle temp to 150
|
|
M109 S150 ; wait until nozzle reaches 150 ; wait until nozzle reaches 0
|
|
|
|
BLOBIFIER_CLEAN ; call another macro to wipe nozzle if available
|
|
|
|
G1 X175 Y175 Z5 F1200
|
|
{% if target_chamber > 30 %}
|
|
RESPOND MSG="waiting for chamber temperature"
|
|
M141 S{target_chamber}
|
|
# M191 S{target_chamber} ; Waits until the chamber temperature reaches 60°C
|
|
# TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber}
|
|
|
|
M106 S255
|
|
# HEAT_SOAK HEATER='heater_bed' TARGET={BED_TEMP} SOAKER='temperature_sensor iHeater_S' SOAK_TEMP={target_chamber} TIMEOUT=60 CANCEL='_NOTHING'
|
|
HEAT_SOAK HEATER='heater_bed' TARGET={target_bed} SOAKER='temperature_sensor chamber' SOAK_TEMP={target_chamber} TIMEOUT=60 CANCEL='_NOTHING'
|
|
# (CANCEL='_NOTHING') and having unreachable SOAK_TEMP makes it run till the TIMEOUT and continue without canceling the print.
|
|
{% else %}
|
|
RESPOND MSG="waiting for bed core temperature"
|
|
|
|
HEAT_SOAK HEATER='heater_bed' TARGET={target_bed} SOAKER='temperature_sensor bed_core' SOAK_TEMP={target_bed - 5} TIMEOUT=30 CANCEL='_NOTHING'
|
|
# (CANCEL='_NOTHING') and having unreachable SOAK_TEMP makes it run till the TIMEOUT and continue without canceling the print.
|
|
{% endif %}
|
|
|
|
[gcode_macro _NOTHING]
|
|
gcode:
|
|
_HEAT_SOAK__BASE_RESUME
|
|
|
|
[gcode_macro PRINT_START]
|
|
gcode:
|
|
RESPOND MSG="print start macro continued"
|
|
|
|
_motion_detected
|
|
|
|
{% set target_extruder = params.EXTRUDER|int %}
|
|
|
|
M106 S0
|
|
|
|
M104 S150 ; set nozzle temp to 150
|
|
M109 S150 ; wait until nozzle reaches 150 ; wait until nozzle reaches 0
|
|
|
|
HOME
|
|
BLOBIFIER_CLEAN ; call another macro to wipe nozzle if available
|
|
|
|
_status_calibrating_z
|
|
G28 Z METHOD=CONTACT CALIBRATE=1 ; calibrate z offset and beacon model hot
|
|
|
|
_status_leveling
|
|
RESPOND MSG="quad ganrty level"
|
|
QUAD_GANTRY_LEVEL
|
|
|
|
_status_meshing
|
|
RESPOND MSG="meshing"
|
|
BED_MESH_CALIBRATE RUNS=2 ; bed mesh in scan mode
|
|
|
|
BLOBIFIER_CLEAN ; call another macro to wipe nozzle if available
|
|
|
|
M104 S150 ; set nozzle temp to 150
|
|
M109 S150 ; wait until nozzle reaches 150 ; wait until nozzle reaches 0
|
|
|
|
_status_calibrating_z
|
|
G28 Z METHOD=CONTACT CALIBRATE=1 ; calibrate z offset and beacon model hot
|
|
|
|
_status_heating
|
|
M104 S{target_extruder} ; set extruder to print temp
|
|
M109 S{target_extruder} ; wait for extruder temp
|
|
|
|
# ; needs fine tuning, long meltzones require more
|
|
# SET_GCODE_OFFSET Z_ADJUST={OFFSET} ; apply optional material squish via slicer
|
|
#SET_GCODE_OFFSET Z=-0.06 ; squish
|
|
# SET_GCODE_OFFSET Z=0.02 ; squish # worked before but a bit to high now
|
|
# SET_GCODE_OFFSET Z=-0.05 ; squish
|
|
SET_GCODE_OFFSET Z=-0.00 ; squish
|
|
|
|
RESPOND MSG="starting"
|
|
;PRIME_NOZZLE ; call another macro to purge or prime nozzle
|
|
# WIPE_NOZZLE ; call another macro to wipe nozzle if available
|
|
# Line_Purge
|
|
# AFC_POOP PURGE_LENGTH=100
|
|
# AFC_KICK
|
|
|
|
BLOBIFIER_CLEAN
|
|
|
|
PA_CALIBRATE_ALL_LANES LANES="lane1,lane2,lane3,lane4,lane5"
|
|
|
|
M104 S{target_extruder} ; set extruder to print temp
|
|
M109 S{target_extruder} ; wait for extruder temp
|
|
|
|
BLOBIFIER_CLEAN
|
|
|
|
; start printing
|
|
|
|
G90 ; absolute positioning
|
|
G1 Z20 F30000 ; move nozzle away from bed
|
|
G1 X175 Y175 F30000 ; move nozzle away from bed
|
|
|
|
G28 XYZ
|
|
|
|
#G11 ; unretract
|
|
|
|
_AFC_STORE_HOME_REFERENCE
|
|
|
|
SET_BDWIDTH NAME=fila_width_0 COMMAND=ENABLE_ALL
|
|
# SET_BDWIDTH NAME=fila_width_0 COMMAND=ENABLE_MOTION
|
|
|
|
_status_printing
|
|
|
|
|
|
[gcode_macro PRINT_END]
|
|
# Use PRINT_END for the slicer ending script - please customise for your slicer of choice
|
|
gcode:
|
|
# safe anti-stringing move coords
|
|
{% set th = printer.toolhead %}
|
|
{% set x_safe = th.position.x + 20 * (1 if th.axis_maximum.x - th.position.x > 20 else -1) %}
|
|
{% set y_safe = th.position.y + 20 * (1 if th.axis_maximum.y - th.position.y > 20 else -1) %}
|
|
{% set z_safe = [th.position.z + 2, th.axis_maximum.z]|min %}
|
|
|
|
SAVE_GCODE_STATE NAME=STATE_PRINT_END
|
|
|
|
_motion_detected
|
|
|
|
M221 S100
|
|
|
|
M400 ; wait for buffer to clear
|
|
G92 E0 ; zero the extruder
|
|
# G1 E-0.5 F1800 ; retract filament
|
|
G10 ; retract
|
|
|
|
TURN_OFF_HEATERS
|
|
iHEATER_OFF ; Turns off the chamber heater
|
|
|
|
G90 ; absolute positioning
|
|
G0 X{x_safe} Y{y_safe} Z{z_safe} F20000 ; move nozzle to remove stringing
|
|
G0 X{th.axis_maximum.x//2} Y{th.axis_maximum.y - 5} F3600 ; park nozzle at rear
|
|
M107 ; turn off fan
|
|
|
|
{% if printer.pause_resume.is_paused|lower == 'false' and park|lower == 'true'%}
|
|
_TOOLHEAD_PARK_PAUSE_CANCEL
|
|
{% endif %}
|
|
|
|
SET_BDWIDTH NAME=fila_width_0 COMMAND=DISABLE ;disable the bdwidth
|
|
|
|
#SET_PIN PIN=caselight VALUE=0.03
|
|
_status_part_ready
|
|
|
|
UPDATE_DELAYED_GCODE ID=_delayed_motors_off DURATION=3600
|
|
|
|
BED_MESH_CLEAR
|
|
SET_SKEW CLEAR=1
|
|
RESTORE_GCODE_STATE NAME=STATE_PRINT_END
|
|
|
|
[delayed_gcode _delayed_motors_off]
|
|
gcode:
|
|
M84
|
|
|
|
# [gcode_macro QUAD_GANTRY_LEVEL]
|
|
# rename_existing: _QUAD_GANTRY_LEVEL
|
|
# gcode:
|
|
# _QUAD_GANTRY_LEVEL
|
|
# _QUAD_GANTRY_LEVEL PROBE_METHOD=contact
|
|
|
|
### bed warp visualizer
|
|
[gcode_macro SOAK_MY_BED]
|
|
description: Heat soak bed and live meassure
|
|
rename_existing: SOAK_MY_BED_BASE
|
|
gcode:
|
|
{% set temp = params.TEMPERATURE|default(60) %}
|
|
{% set duration = params.DURATION|default(10) %}
|
|
{% set heater = params.HEATER|default("heater_bed") %}
|
|
{% set mesh = params.MESH_COMMAND|default("BED_MESH_CALIBRATE METHOD=beacon") %}
|
|
|
|
G28
|
|
QUAD_GANTRY_LEVEL
|
|
|
|
SOAK_MY_BED_BASE TEMPERATURE={temp} DURATION={duration} HEATER={heater} MESH_COMMAND="{mesh}"
|
|
|