Channel Map¶
The canonical source is controlunit/settings.yml — the developer's
deliberate in-code data dictionary, written as a memory aid after long gaps
in work. Channel names, ADC addresses, gains, descriptions, and conversion
function identifiers all live there.
"I did that to not remember the modules. So I DID DOCUMENT THERE INTENTIONALLY." — Arseniy
Hardware documentation (board layouts, signal conditioning, pin numberings, datasheets) lives in the external hub: aklab-howto. Do not expect hardware build notes here.
ADC signal channels¶
| Name | Signal | Sensor / notes |
|---|---|---|
Ip |
Plasma current | Hall-effect sensor: 5 * (v - 2.52) A |
Pu |
Upstream pressure | Pfeiffer single gauge PKR251 (currently operating in Pirani mode — cold-cathode discharge not igniting) |
Pd |
Downstream pressure | Ionization gauge, with Place: "downstream" in the settings for the Control dock and the web Gauges card to show beside its short name. Its controller's mode (Torr linear or Pa log) and exponent are recorded per row as IGmode and IGscale, the columns the file has always had. |
Pu2 |
Upstream pressure | Second ionization gauge, wired to channel 16 on 2026-09-15, with its own selector on the Control dock and the web Control tab, and Place: "upstream" in the settings for both to show beside its short name. Its mode and exponent are recorded per row as IGmode_Pu2 and IGscale_Pu2, appended after the original columns so nothing an old reader counts on moves. |
Bu |
Upstream Baratron | MKS 627, FS = 1 Torr |
Bd |
Downstream Baratron | MKS 628B, FS = 0.1 Torr |
MFC1 |
H₂ flow | 20 SCCM range |
MFC2 |
O₂ flow | 10 SCCM range |
Ci |
Cathode current | Channel prepared in ADC map and on PCB; never actually measured. Conversion function exists for consistency. |
Cv |
Cathode voltage | Same as Ci — prepared but not deployed |
T |
Membrane temperature | Now read off-Pi (NI on Windows). Channel definition remains. |
QMS_signal |
Sync trigger state | Boolean — logs whether GPIO sync is active during each row |
DAC outputs¶
| Device | Signal | Notes |
|---|---|---|
| DAC8532 ch1 | MFC1 (H₂) setpoint voltage | |
| DAC8532 ch2 | MFC2 (O₂) setpoint voltage | |
| MCP4725 | Plasma current (Ip) DAC | Behind galvanic I²C isolator since Apr 2026 |
Conversion functions¶
Conversion polynomials are defined in controlunit/devices/conversions.py
with LaTeX in docstrings — physics inline with the code that uses it.
The polynomials come from external datasheets. The PKR251 datasheet, for example, lives in aklab-howto.
Dispatch is settings-driven: each channel in settings.yml carries a
Conversion Function key that maps to a function in conversions.py via
AdcChannelProps.set_conversion_function(). Adding a new instance of an
existing sensor type means editing YAML, not code.
Settings versioning¶
The repo carries controlunit/settings.yml as canonical schema. The live
rig runs ~/.controlunit/settings.yml with its own channel map. A
Settings Version key prevents silent drift after a schema bump: