Files
AON3D-M2/klipper/macros.cfg
Anto01 ef868e7953 Initial AON3D M2+ dual MCU configuration
- Octopus Pro: Motors (MOTOR0-7), bed heater (PA1), chamber heater (PB10)
- Azteeg X3: Thermistors, endstops, probe, fan, hotend heaters
- IDEX setup with external DM542T drivers
- Includes wiring documentation and swap guide

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 20:52:58 -05:00

277 lines
8.7 KiB
INI

# AON3D M2+ Macros
# For BTT Octopus Pro with IDEX configuration
# ================================================================================
# Cancel Print
# ================================================================================
[gcode_macro CANCEL_PRINT]
description: Cancel the actual running print
rename_existing: CANCEL_PRINT_BASE
gcode:
PARK_{printer.toolhead.extruder}
CANCEL_PRINT_BASE
# ================================================================================
# Pause / Resume
# ================================================================================
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(1)|float %}
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
[gcode_macro RESUME]
rename_existing: BASE_RESUME
gcode:
{% set E = params.E|default(1)|float %}
G91
G1 E{E} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
# ================================================================================
# End Print
# ================================================================================
[gcode_macro END_PRINT]
gcode:
{% set Z = params.Z|default(10)|float %}
{% set E = params.E|default(5)|float %}
# Turn off heaters and fan
M106 S0
SET_HEATER_TEMPERATURE HEATER=extruder TARGET=0
SET_HEATER_TEMPERATURE HEATER=extruder1 TARGET=0
SET_HEATER_TEMPERATURE HEATER=heater_bed TARGET=0
SET_HEATER_TEMPERATURE HEATER=chamber TARGET=0
G91
G1 E-{E} F2100
G1 Z{Z}
PARK_{printer.toolhead.extruder}
# Disable steppers
M84
# ================================================================================
# Homing Override
# ================================================================================
[homing_override]
set_position_z: 10
gcode:
SAVE_GCODE_STATE NAME=home_z_state
G91
G1 Z10 F480
G28 X0 Y0
G28 Z0
G90
G1 Z3 F600
RESTORE_GCODE_STATE NAME=home_z_state
axes: z
# ================================================================================
# Idle Timeout
# ================================================================================
[idle_timeout]
timeout: 86400 # 24 hours
# ================================================================================
# IDEX Toolhead Macros
# ================================================================================
# Primary toolhead (T0) park position
[gcode_macro PARK_extruder]
gcode:
SAVE_GCODE_STATE NAME=park0
G90
G1 X-85 F12000
RESTORE_GCODE_STATE NAME=park0
# Activate primary extruder
[gcode_macro T0]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=0
SET_GCODE_OFFSET Z=0
# Input shaper for carriage 0 (calibrate these values for your machine)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
# Secondary toolhead (T1) park position
[gcode_macro PARK_extruder1]
gcode:
SAVE_GCODE_STATE NAME=park1
G90
G1 X518 F12000
RESTORE_GCODE_STATE NAME=park1
# Activate secondary extruder
[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET Z=-0.45
# Input shaper for carriage 1 (calibrate these values separately)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
# ================================================================================
# Calibration Macro
# ================================================================================
[gcode_macro CALIBRATE_M2]
description: Calibrate the current tool with a mesh centered at Z=0
gcode:
G28
G1 Z15 F600
G1 X200 Y200 F6000
Z_ENDSTOP_CALIBRATE
PROBE
TESTZ Z=-.001
G4 P500
M400
ACCEPT
SET_KINEMATIC_POSITION Z=0
BED_MESH_CALIBRATE
[gcode_macro Calibrate_Tool_Offset]
gcode:
z_endstop_calibrate
# ================================================================================
# Temperature Command Overrides (for chamber heater compatibility)
# ================================================================================
[gcode_macro M140]
rename_existing: M140.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M140.1 { rawparams }
[gcode_macro M190]
rename_existing: M190.1
gcode:
{% if params.S is defined %}
SAVE_VARIABLE VARIABLE=bedtemp VALUE={params.S}
{% endif %}
M190.1 { rawparams }
[gcode_macro M104]
rename_existing: M104.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M104.1 { rawparams }
{% endif %}
[gcode_macro M109]
rename_existing: M109.1
gcode:
{% if params.T is defined and params.T == "3"%}
SET_HEATER_TEMPERATURE HEATER=chamber TARGET={params.S if params.S is defined else "0"}
TEMPERATURE_WAIT SENSOR=chamber MINIMUM={params.S} MAXIMUM={params.S}
{% else %}
{% if params.S is defined %}
{% set varname = "t1temp" if params.T is defined and params.T == "1" else "t0temp" %}
SAVE_VARIABLE VARIABLE={varname} VALUE={params.S}
{% endif %}
M109.1 { rawparams }
{% endif %}
# ================================================================================
# G-code Offset Management
# ================================================================================
[gcode_macro SET_GCODE_OFFSET]
rename_existing: _SET_GCODE_OFFSET
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
{% else %}
{% set offsets = {'x': None,'y': None,'z': None} %}
{% endif %}
{% set ns = namespace(offsets={'x': offsets.x,'y': offsets.y,'z': offsets.z}) %}
_SET_GCODE_OFFSET {% for p in params %}{'%s=%s '% (p, params[p])}{% endfor %}
{%if 'X' in params %}{% set null = ns.offsets.update({'x': params.X}) %}{% endif %}
{%if 'Y' in params %}{% set null = ns.offsets.update({'y': params.Y}) %}{% endif %}
{%if 'Z' in params %}{% set null = ns.offsets.update({'z': params.Z}) %}{% endif %}
SAVE_VARIABLE VARIABLE=gcode_offsets VALUE="{ns.offsets}"
[delayed_gcode LOAD_GCODE_OFFSETS]
initial_duration: 2
gcode:
{% if printer.save_variables.variables.gcode_offsets %}
{% set offsets = printer.save_variables.variables.gcode_offsets %}
_SET_GCODE_OFFSET {% for axis, offset in offsets.items()
if offsets[axis] %}{ "%s=%s " % (axis, offset) }{% endfor %}
{ action_respond_info("Loaded gcode offsets from saved variables [%s]" % (offsets)) }
{% endif %}
# Initialize input shaper on startup (for dual_carriage compatibility)
[delayed_gcode INIT_INPUT_SHAPER]
initial_duration: 3
gcode:
# Set default input shaper for carriage 0 (T0)
SET_INPUT_SHAPER SHAPER_FREQ_X=60 SHAPER_TYPE_X=ei SHAPER_FREQ_Y=40 SHAPER_TYPE_Y=ei
{ action_respond_info("Input shaper initialized for dual carriage") }
# ================================================================================
# Utility Macros
# ================================================================================
[gcode_macro LOAD_FILAMENT]
description: Load filament into current extruder
gcode:
{% set TEMP = params.TEMP|default(220)|float %}
{% set LENGTH = params.LENGTH|default(100)|float %}
M109 S{TEMP}
G91
G1 E{LENGTH} F300
G90
[gcode_macro UNLOAD_FILAMENT]
description: Unload filament from current extruder
gcode:
{% set TEMP = params.TEMP|default(220)|float %}
{% set LENGTH = params.LENGTH|default(100)|float %}
M109 S{TEMP}
G91
G1 E10 F300
G1 E-{LENGTH} F1000
G90
[gcode_macro PID_EXTRUDER]
description: PID tune the current extruder
gcode:
{% set TEMP = params.TEMP|default(240)|float %}
PID_CALIBRATE HEATER=extruder TARGET={TEMP}
[gcode_macro PID_EXTRUDER1]
description: PID tune extruder 1
gcode:
{% set TEMP = params.TEMP|default(240)|float %}
PID_CALIBRATE HEATER=extruder1 TARGET={TEMP}
[gcode_macro PID_BED]
description: PID tune the heated bed
gcode:
{% set TEMP = params.TEMP|default(100)|float %}
PID_CALIBRATE HEATER=heater_bed TARGET={TEMP}
[gcode_macro PID_CHAMBER]
description: PID tune the heated chamber
gcode:
{% set TEMP = params.TEMP|default(70)|float %}
PID_CALIBRATE HEATER=chamber TARGET={TEMP}