Development History¶
Development at ControlUnit does not follow measurement campaigns.
It follows the opposite: long quiet periods while the rig runs, then
intense pushes during experimental downtime.
"Development is usually NOT tied to actual experiments. More on the opposite side. Accumulated necessity is implemented when there is a break in experiments and there is time." — Arseniy
Timeline¶
≈ 2018–2019 Echelle Spectra at NIFS / LHD.
pyqtgraph + Qt threading + the "scientific Qt app"
visual grammar. The template-source for ControlUnit.
2020-02 ──── Initial commit (queezz). Echelle-ported Worker + ThreadType
enum. One class, all devices dispatched by enum.
2020-03 ──── "Untangling Ito-kun's threading mess". Renames, structural
clean-up. Lab member helped untangle.
2020-06 ──── First numpy → pandas attempt (incomplete; sits for years).
2020–22 ──── Long quiet period. Rig is running, dev is teaching.
2022-06 ──── [REORGANIZE] make a package, add pdoc3 docs.
Visual snapshot of "old" architecture preserved.
2023-04 ──── Multiple contributors arrive (Kurokawa-kun/`Kshora`,
leprecon-pi/Miura-kun). Channel names evolve live during runs.
2023-05 ──── ADC channel meta moved into AdcChannelProps + settings.yml.
8 commits "worker: tuning ADC thread" — the buffer redesign.
Pandas migration finally approaches.
2023-06 ──── Logging-to-file, sampling-time-from-GUI, gain switching.
customTypes.py, ionizationGauge.py, pfeiffer.py DELETED
(absorbed into conversions.py).
2024-08 ──── Worker super class split. Big-bang: 662 lines deleted from
monolithic worker.py. Committed by Miura-kun from the lab Pi.
Pandas migration lands.
2024-09 ──── MFC integration (DAC8532), MCP4725 addition.
Mass rename: sensors/ → devices/, components/ → ui/.
2024-09/10 ─ First plasma-current PID by Arseniy.
"Ip PID response detected (hardware)" — the rig closes loop.
2024 onward TemperatureControl on Windows + NI.
Heater path migrates out of ControlUnit.
ControlUnit MAX6675 path becomes dormant.
2025-08 ──── Two Codex automated PRs: data-handling moved INTO workers,
CoreLogic signal fix. Untested on hardware at merge time.
≈ 2025–2026 tclogger experiments. ESP32-based single-sensor instruments.
First operational move toward "network of instruments".
2026-04 ──── Isolated DAC for plasma current (Kawabata-kun).
Settings layout cleanup, Ip-PID OFF button.
Cursor-assisted with direct on-rig testing.
2026-05 ──── "settings: debug false". Lab still active.
Hardware: Raspberry Pi 3B → Pi 4 (8 GB), transparent to software.
Contributors¶
| Handle | Person | Role |
|---|---|---|
queezz / Arseniy |
Principal developer | Wrote and rewrote most of the system across all phases |
Tatsuemon / Ito-kun |
B4 student | Extended Echelle template for ADC; introduced I²C-per-read pattern |
leprecon-pi / Miura-kun |
Lab member | Pandas migration; Phase 4 big-bang split committed from the lab Pi |
Kurokawa-kun (Kshora) |
Lab contributor | PRs #1, #18, #19 — early MFC and MCP4725 work; also left kurokawa-dev/PWR.py (SCPI driver for Kikusui PWR-401L, never integrated) |
| Kawabata-kun | Later lab contributor | Final plasma-current PID loop and isolated DAC integration (Apr 2026) |
codex/* bot |
LLM-authored PRs | PRs #20 and #21 (Aug 2025); untested on hardware at merge time |
"I was exploring and learning. My goal with this RasPi unit was to learn electronics. And I think I've succeeded." — Arseniy
Documentation strata¶
- 2022 pdoc3 HTML — archived at
archive/pdoc3/. Documents the single-monolithic-worker.pyarchitecture. Stale but valuable as a fossil snapshot. settings.yml— deliberate in-code data dictionary. The most important single piece of documentation in the repository.conversions.py— LaTeX physics inline in docstrings.aklab-howto— external hardware documentation hub. Do not duplicate here; cross-link.Archaeology.md— this project's primary historical record (2026 reconciled snapshot).