diff --git a/CLAUDE.md b/CLAUDE.md index 009f3e6..7025dd5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,8 +97,10 @@ detection, `filament_error_sensitivity`), iHeater chamber heater. 13-18 s, peak 64-181; empty nozzle about 30 ms. A real failed load in a print start (AFC reported the lane loaded, nothing reached the nozzle): longest 1915 ms, peak 45, caught by the 5000 ms limit. -- Nozzle guard (bdp_guard): reading at rest and in travel peaks about 2; a - light finger push on the cold nozzle gives 41 (threshold 30). +- Nozzle guard (bdp_guard): peaks 1-8 in home_xy, QGL, Z homing, mesh and + the Z check; the brush scrub 47 (4 reads above 30 in a row, so it runs + in log mode); a light finger push on the cold nozzle gives 41 + (threshold 30). - Z check after a contact homing: Beacon vs Klipper Z about 0.06 mm. - XY drift check: endstop noise about 0.01-0.02 mm; limit 0.1 mm (one motor skipping one cycle = 0.4 mm shows as 0.2 mm in X and Y). diff --git a/README.md b/README.md index d59471b..1c89067 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ everything below, grouped by topic. Comment out what you do not use there. | `pause_resume.cfg` | `PAUSE`, `RESUME`, `CANCEL_PRINT`, `M600` (RESUME also handles a running `HEAT_SOAK`, and after a PAUSE purges 40 mm with `BLOBIFIER_CHECKED` first: a failed check keeps the print paused, `RESUME PURGE=0` skips the purge; CANCEL_PRINT runs the same cleanup as `PRINT_END`) | `heating/heat_soak.cfg`, `leds/`, `blobifier/`, `afc/purge_check.cfg` | | `filament.cfg` | `LOAD_FILAMENT`, `UNLOAD_FILAMENT` | — | | `homing.cfg` | `HOME`: X/Y, then Z always with Beacon contact (also when already homed); `_Z_CHECK`: stops the print when Klipper's Z and the Beacon reading differ (run in `PRINT_START` after the soak) | Beacon | -| `nozzle_guard.cfg` | `[bdp_guard]`, `_GUARD_ON PHASE=`, `_GUARD_OFF`: bd_pressure watches the nozzle force during print-start moves where nothing should touch it (QGL, Z homing, mesh); `mode: log` only reports the peak per phase, `mode: stop` shuts Klipper down on a touch | `extras/bdp_guard.py` + bd_pressure load-check firmware | +| `nozzle_guard.cfg` | `[bdp_guard]`, `_GUARD_ON PHASE=`, `_GUARD_OFF`: bd_pressure watches the nozzle force during print-start moves where nothing should touch it (QGL, Z homing, mesh); `mode: stop` shuts Klipper down on a touch (the brush runs log-only), `mode: log` only reports the peak per phase | `extras/bdp_guard.py` + bd_pressure load-check firmware | | `test_speed.cfg` | `TEST_SPEED`: skipped-steps test for speed and acceleration | — | | `idle_timeout.cfg` | `[idle_timeout]`: heaters, chamber heater and motors off | iHeater macros | | **heating/** | | | diff --git a/macros/print/nozzle_guard.cfg b/macros/print/nozzle_guard.cfg index 0a79f00..c12c75b 100644 --- a/macros/print/nozzle_guard.cfg +++ b/macros/print/nozzle_guard.cfg @@ -2,13 +2,15 @@ # that must not touch anything (needs extras/bdp_guard.py and the bd_pressure # load-check firmware). See extras/bdp_guard.py. # -# mode: log only measures and reports each phase (console and klippy.log, -# "bdp_guard:"). Run a few print starts in log mode, set threshold well -# above the peaks the phases show, then switch to mode: stop. +# 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: log +mode: stop threshold: 30 samples: 3 interval: 0.02 diff --git a/macros/print/print_start_end.cfg b/macros/print/print_start_end.cfg index b9365ce..6e806cf 100644 --- a/macros/print/print_start_end.cfg +++ b/macros/print/print_start_end.cfg @@ -49,7 +49,9 @@ gcode: # Only to get the toolhead over the bed for the soak; the Z that counts # is the contact calibration in PRINT_START on the soaked bed _STATUS STATE=homing - _NOZZLE_CONTACT_TEMP + # HOME homes Z with Beacon contact: wait for a steady nozzle temperature, + # a nozzle still heating spreads the contact samples (6 restarts seen) + _NOZZLE_CONTACT_TEMP WAIT=1 RESPOND MSG="homing" HOME {% if target_chamber > 30 %} @@ -193,8 +195,9 @@ gcode: _GUARD_ON PHASE=z_home G28 Z - # Own phase: the bristles press on the nozzle too - _GUARD_ON PHASE=brush + # Own phase, log only: the bristles press on the nozzle (peak 47, + # 4 reads above 30 in a row), stop mode would shut down every start + _GUARD_ON PHASE=brush MODE=log BLOBIFIER_CLEAN _GUARD_OFF _STATUS STATE=calibrating_z