Skip to content

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:

# controlunit/readsettings.py
if local_config["Settings Version"] == config["Settings Version"]:
    config = local_config