Files
klipper-macros/macros/print/nozzle_guard.cfg
T
mangavalkandClaude Opus 5.5 b9d2f3a062 Nozzle guard in stop mode (brush log-only), wait for the nozzle before HOME
Test print start: guard peaks 1-8 in every phase except the brush scrub
(peak 47, 4 reads above 30 in a row), 0 I2C errors; a light finger push
gives 41. Stop mode for all phases, the brush stays log-only.

The contact homing in HOME restarted 6 times (sample spread too large)
while the nozzle was still heating to 150C; PRINT_WARMUP now waits for a
steady contact temperature first, as PRINT_START does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 23:25:28 +02:00

36 lines
1.3 KiB
INI

# Nozzle collision guard: bd_pressure watches the nozzle force during moves
# that must not touch anything (needs extras/bdp_guard.py and the bd_pressure
# load-check firmware). See extras/bdp_guard.py.
#
# mode: stop shuts Klipper down on a touch; log only measures and reports
# each phase (console and klippy.log, "bdp_guard:"). A phase can override it
# with _GUARD_ON MODE=log (the brush does).
# Measured 2026-10-18: peaks 1-8 in all phases except the brush (47); a
# light finger push on the cold nozzle gives 41.
[bdp_guard]
sensor: bd_pa
mode: stop
threshold: 30
samples: 3
interval: 0.02
# M400 first: BDP_GUARD_ARM/DISARM act at once, not in the move queue, so
# without it the guard would watch moves that are still queued (contact
# homing, extrusion) or stop watching before the armed moves ran.
[gcode_macro _GUARD_ON]
description: Arm the nozzle guard for PHASE=<name> [MODE=log|stop] after the queued moves (nothing without [bdp_guard])
gcode:
{% if 'bdp_guard' in printer %}
M400
BDP_GUARD_ARM PHASE={params.PHASE|default('armed')} {('MODE=' ~ params.MODE) if 'MODE' in params else ''}
{% endif %}
[gcode_macro _GUARD_OFF]
description: Disarm the nozzle guard after the queued moves (nothing without [bdp_guard])
gcode:
{% if 'bdp_guard' in printer %}
M400
BDP_GUARD_DISARM
{% endif %}