mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
Pin forgectrl f9b4893: the air-assist ground shift off the coolant readings
The pin carries the compensation (cool_aa_offset_counts, the aa-offset-calibrate diagnostic, the panel's Apply); verified with bitbake -c fetch. The catalog gains cooling.aa-offset-calibrate, which runs the tool and checks its recommendation and spread. scripts/bench/offset_probe.py is the differential probe that found the source: one actuator switched at a time with both sensors at 25 Hz (survey), the air-assist duty ladder, the gantry jogging under the fan, and an armed dark dwell. CAMPAIGN-LOG records the four probes and the result; BRINGUP item 21 names the setting and the calibrate as what remains on this machine, and item 23 opens the initial commissioning procedure. No catalog consequence beyond the new case: a bench tool and records.
This commit is contained in:
+34
-7
@@ -1468,13 +1468,24 @@ Open items only. Anything closed is in `CAMPAIGN-LOG.md`.
|
||||
second machine is on the bench (one tube, one supply so far); and if a
|
||||
lit check still trips, the void-on-emission design with the tube as
|
||||
its own flow tracer.
|
||||
Open question, the offset's source: the timing points at the airflow
|
||||
drive (the step lands one sample after the fans go to run duty, before
|
||||
any HV, and lifts when they go idle, long after the tube is dark), but
|
||||
high-voltage energy coupling into the lines between the sensors and
|
||||
the ADC is the other candidate and a shared path could show both; a
|
||||
scope on the two sensor lines through a session, fans and tube
|
||||
switched separately, decides.
|
||||
The offset's source is the air-assist fan's return current on a ground
|
||||
path the thermistor reference shares (about 1.2 C at the run duty,
|
||||
proportional to the fan's current, both sensors alike; not crosstalk
|
||||
on the sensor cable and not HV). The check cancels it now that its
|
||||
baseline is taken under the run profile, but the over-temperature
|
||||
gates read the coolant about 1.2 C cooler than it is while the air
|
||||
assist runs unless `cool_aa_offset_counts` carries the machine's value
|
||||
(the `aa-offset-calibrate` diagnostic measures it, the panel's Apply
|
||||
writes it; zero is the factory's uncorrected reading). Owed: the
|
||||
calibrate run on this machine and its value applied, a second
|
||||
machine's value when one is on the bench; and the mid-run
|
||||
toggling between two levels (0.6 to 1.1 C, both sensors together),
|
||||
which comes only with the tube lit: not with the fans alone, not under
|
||||
motion, not in an armed dark window. The HV supply's input current on
|
||||
a return the thermistor reference shares, or its switching, is what
|
||||
remains; a scope on the two sensor lines during a cut is the next
|
||||
instrument. It sits inside the ceiling's 2 C hysteresis and the flow
|
||||
check reads means, so it is a measurement item, not a gate item.
|
||||
22. **Laser power-good: what the line means.** `cnc/laser_pgood` and its
|
||||
sampled count are defined in the UAPI (active low, one sample every
|
||||
~3.9 ms), the facts bank records that the sampled count reads 0 through
|
||||
@@ -1487,6 +1498,22 @@ Open items only. Anything closed is in `CAMPAIGN-LOG.md`.
|
||||
scope against `hv_current` through an armed cut, its meaning written
|
||||
into the facts bank and the UAPI, and then either a warning that means
|
||||
something or no warning.
|
||||
23. **Initial commissioning: measure and set the machine's own numbers
|
||||
methodically.** Every tunable that was measured on the bench machine
|
||||
and shipped as a default varies from machine to machine: the flow
|
||||
check's bands and `cool_flow_rise`, the tube's heat coefficients
|
||||
(`cool_laser_heat_cw`, `cool_laser_heat_density`), the air-assist
|
||||
ground offset on the coolant readings, the laser's striking and lasing
|
||||
thresholds and the duty floor, the fan floors, the thermistor curve
|
||||
itself. Owed: one commissioning procedure, run once on a new machine
|
||||
from the panel or the bench page, that measures each of these in
|
||||
order with the tube dark wherever it can be, fires only where it
|
||||
must, and writes the results as that machine's settings with a
|
||||
record; and a reading of what the cloud sets for the same machine,
|
||||
taken from cloud cuts (the pulse header carries the factory's
|
||||
per-machine values), so the commissioning can start from the
|
||||
factory's own numbers where they exist and note where they differ
|
||||
from the measured ones.
|
||||
|
||||
**Deliberately not gated:** an armed GRBL job after an underrun cuts at the
|
||||
stale origin unless homing is required (GRBL mode permits unhomed cutting; the
|
||||
|
||||
@@ -4420,6 +4420,78 @@ head jogged back by the baseline; the case now brings the head back
|
||||
itself. The case rides the next image; its campaign standing comes with
|
||||
that image's campaign.
|
||||
|
||||
## 2026-08-29: the coolant ADC offset is the air-assist fan's return current
|
||||
|
||||
The common-mode offset on the two coolant sensors (about 1 C low while the
|
||||
run airflow profile is on, BRINGUP item 21) was run down differentially,
|
||||
dark, with `scripts/bench/offset_probe.py`: forgectrl idle, one actuator
|
||||
switched at a time, both sensors at 25 Hz, the step at every edge scored
|
||||
as the 1.5 s means after minus before. Records
|
||||
`bench-data/offset_probe_20260829-205928.json` (the survey) and
|
||||
`offset_probe_20260829-210233.json` (the ladder).
|
||||
|
||||
The wiring first, from the OpenGlow board's netlist (pin-compatible with
|
||||
the factory board): the thermistors enter on J2 pins 3 and 4 with the pump
|
||||
enable (2), the TEC enable (1), the TEC thermistor (6), the heater PWM (7),
|
||||
the exhaust tach (8) and the exhaust PWM (9) beside them, then 12 V, the
|
||||
beam-detect lines, Z step and direction, the head I2C and the head camera
|
||||
lanes; the intake fans, the HV lines, `LASER_ON` and `HV_EN` are on J1;
|
||||
the air assist is driven on the head. The run profile drives the exhaust
|
||||
at 65535 (100 %, no PWM edges) and the intakes at 43278.
|
||||
|
||||
The survey: exhaust at 100 %, 50 % and 25 %, the intakes at their run
|
||||
duty, purge, the TEC enable and the lid lamp each move both sensors by
|
||||
0.1 C or less; the heater and the pump edges move the downstream sensor
|
||||
only (thermal). The air assist from its idle 204 to its run 1023 steps
|
||||
both sensors together, -1.37 and -1.25 C in one sample, and back +1.18 and
|
||||
+1.13; "all run fans" gives the same -1.28 and -1.23. The ladder: 256
|
||||
-0.03, 512 -0.27, 768 -0.6, 1023 -1.2 C cumulative, both sensors alike,
|
||||
each step reversed on the way down, and -1.2 to -1.3 C on two full on and
|
||||
off repeats. The offset is proportional to the air-assist fan's current: a
|
||||
ground-return drop on a path the thermistor reference shares, not
|
||||
crosstalk on J2 and not HV (the `flowload` traces already show the step
|
||||
before any HV and no further step at emission). Both sensors read low by
|
||||
the same amount whenever the air assist runs, so the flow check's rise is
|
||||
untouched now that its baseline is taken under the run profile, and the
|
||||
over-temperature gates read the coolant about 1.2 C cooler than it is
|
||||
during a job. The mid-run toggling between two levels is not reproduced by
|
||||
a steady fan (0 toggles in every dwell); the fan's own current variation
|
||||
under motion is the remaining candidate.
|
||||
|
||||
## 2026-08-29: the toggling is not motion
|
||||
|
||||
`offset_probe.py jog` (record `bench-data/offset_jog_20260829-211710.json`),
|
||||
dark, no press: the air assist steady at its run duty while the gantry
|
||||
jogged 30 mm in X and 8 mm in Y for 40 s, then the same jog with the fan
|
||||
idle. Zero level toggles in every phase; with the fan on the readings sat
|
||||
1.1 C low and as quiet while jogging (sd 0.26 C) as while still (0.32),
|
||||
and the fan's tach held 677 to 678 under motion. Motion and the head's
|
||||
pogo contacts under vibration are out. The toggling seen in the day's
|
||||
`flowload t2` traces sits inside the armed windows only (from the moment
|
||||
`armed` went true, past the burst's end, gone when the fans went idle), and
|
||||
the dark runs with the fans at run duty show none, which leaves the HV
|
||||
supply's enable, asserted from the press to the disarm, as the candidate;
|
||||
an armed dark dwell (`M3 S0`, the window open, no emission) is the test.
|
||||
|
||||
## 2026-08-29: the toggling needs the tube lit
|
||||
|
||||
`offset_probe.py armed` (record `bench-data/offset_armed_20260829-212245.json`):
|
||||
`M3 S0`, the press 0.3 s after the M3, the window open 73 s with the head
|
||||
still, the flow check's heater running inside it, no emission (0 lit
|
||||
samples on the LASER_ON witness and the tube current), then M2. Zero level
|
||||
toggles on both sensors through the armed window; the one step after M2
|
||||
is the fans returning to idle. The `hv_enable` switch read false
|
||||
throughout, so it does not follow the arm. Every toggle in the day's
|
||||
`flowload t2` traces sits inside a lit period (seven between +7 and +34 s
|
||||
around a burst lit from +7 to +27; thirteen under a 41 s burst;
|
||||
twenty-two under a 48 s burst), and none appear dark, with the fans
|
||||
alone, under motion, or in an armed dark window. The jitter comes with
|
||||
tube current: the HV supply's input current on a return the thermistor
|
||||
reference shares, or its switching, is what remains, and a scope on the
|
||||
two sensor lines during a cut is the next instrument. Its size is 0.6 to
|
||||
1.1 C either way, inside the over-temperature ceiling's 2 C hysteresis,
|
||||
and the flow check reads means.
|
||||
|
||||
## Superseded status notes
|
||||
|
||||
### Shared machine services — remaining polish, as listed 2026-08-13
|
||||
|
||||
Reference in New Issue
Block a user