mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
docs: record what the factory does about fans, temperature and coolant
Next-work item 19 carried three open questions about the factory's operating envelope. All three are answered now, so the item states the policy instead of the guess. A fan tach alert during a cut pauses the print, taking the same transition a user pause takes, and two of the factory's three tach monitors cannot fire at all: they treat a zero limit as unconfigured and the limits arrive zero anyway. So a stalled extraction fan is caught by the temperature it causes, not by its tachometer. Every temperature alert pauses as well, and a critical fails the machine outright, which is a different state and not a pause. The scale question behind the header's ceilings is answered by the coolant family, which the factory carries twice, once in raw ADC counts where the tag named min is the hot limit, and once in millidegrees. And the factory does not verify coolant flow at all, so the cooling engine's flow check is ahead of the factory rather than behind it. The crash, tilt and beam-detect bullets gain the same grading: an alert threshold that pauses and a separate abort threshold that aborts. Also drops references to paths that resolve outside this repo, in both documents and in two bench scripts, naming the artifact instead. In CAMPAIGN-LOG that is a wording substitution only; no date, claim or measurement changes. Documentation only, so no acceptance catalog consequence.
This commit is contained in:
@@ -60,7 +60,7 @@ per-run `clamped` stat from the operator's own job log).
|
||||
### Milestone 2 — motion quality
|
||||
|
||||
**Milestone 2 (motion quality): bench-verified 2026-08-02.** The factory
|
||||
motion constants were extracted from the `_RESOURCES` pulse files
|
||||
motion constants were extracted from captured factory pulse files
|
||||
(`scripts/bench/puls_profile.py`) and applied end-to-end:
|
||||
- grblHAL defaults now factory-true: 12000 mm/min max rate (X/Y),
|
||||
700/590 mm/s² accel (X/Y). Machine tick default 28160 Hz (the factory's
|
||||
@@ -2373,9 +2373,8 @@ release is cut.**
|
||||
bench-validated 2026-08-17 on dev image `20260817124714`.** Both controller
|
||||
modes react to the lid, the remote-interlock loop and the button the way the
|
||||
factory daemon does. The factory behavior was decoded and then recorded on
|
||||
the bench machine booted into factory 2.6.0-2228; that session's log is
|
||||
archived under `_RESOURCES/factory-session-20260816/` (with a README indexing
|
||||
its five prints) and its measured numbers are in the facts bank in `BRINGUP.md`.
|
||||
the bench machine booted into factory 2.6.0-2228; that session covered five
|
||||
prints and its measured numbers are in the facts bank in `BRINGUP.md`.
|
||||
- **What the machine does, both modes.** Lid or interlock open during a job,
|
||||
running or paused: motion stops within milliseconds of the edge, the job is
|
||||
**cancelled and not resumable**, the head returns to the position the job
|
||||
@@ -2703,8 +2702,7 @@ model itself, with the analog path as the fallback.
|
||||
|
||||
Three cloud-mode cuts of the same 1" square, same location, same material,
|
||||
same speed, changing only the Glowforge UI power setting: Precision Power 1,
|
||||
Precision Power 100, then Full Power. Captures in
|
||||
`_RESOURCES/power-settings-20260817/`.
|
||||
Precision Power 100, then Full Power, with the pulse file captured from each.
|
||||
|
||||
Pulse-file capture ships off (`LOGGING.SAVE_PULS`), and the machine's copy of
|
||||
`/data/etc/gfhome.conf` predated the key, so it was enabled for this session
|
||||
@@ -2923,8 +2921,8 @@ duty cycle of 19.53 %** — 1.371 on-ticks of every 7-tick window. Fitting the
|
||||
three captures, the factory maps its entire 1–100 scale onto density
|
||||
18.9–79.5 %, with Full Power off that line at ~99.7 %. Its "1 %" is the
|
||||
bottom of the band that does useful work, not 1 % of the physical range —
|
||||
which is why no user ever meets the dead zone. The older `_RESOURCES`
|
||||
captures run 6.5–18.8 % density on other jobs, so 18.9 % is a product
|
||||
which is why no user ever meets the dead zone. Older captured factory
|
||||
jobs run 6.5–18.8 % density, so 18.9 % is a product
|
||||
decision about cutting, not a physical floor.
|
||||
|
||||
### The fix: a minimum pulse width
|
||||
|
||||
Reference in New Issue
Block a user