Electronic Load Molecule
Public Made by Adomby adom
Siglent SDL1020X-E electronic load equipment prototype: reconstructed carrier STEP/GLB, constant-current dashboard, serial-pinned SCPI driver, control-panel integration guide and purchase budget.
d1c6e4f
1d ago
Workcell integration
Electrical path
The load consumes power from the DUT; it does not supply 5 V. Feed the buck input from the controlled 12 V source through the control panel's PS1 rail. Connect buck J4 (VOUT) to load + and J5 (GND) to load −. The buck's mounting pins are also ground; check the complete return path. Do not connect the load across PS1 when intending to test the buck output. Never use J6 VMON as a load terminal; it is a divided voltage monitor.
Start with short paired force leads and local sensing. For Kelvin operation connect both rear sense terminals directly at J4/J5, then enable remote sense explicitly after confirming polarity. The current driver leaves remote sense OFF. Do not hot-undock an energized scaffold. Load OFF/readback first, DUT supply off and discharge verified, then disconnect force/sense and mains/USB harnesses as appropriate.
The instrument needs its own mains supply and protective earth; USB is communication, not instrument power. Confirm instrument input isolation, USB ground and oscilloscope ground before connecting. A USB isolator must support the actual instrument protocol/speed and is not assumed included.
Control panel
Current Control Panel Dashboard uses a CM5 resident agent and HTTP/SSE service at port 8852. Its current contact-map fixture maps USER_IO to MC29–MC54; the older base-scaffold overview gives different numbering. Use the V2.1.0 fixture and actual board revision, never the old overview for wiring.
Preferred: connect the load USB device port to the CM5 host. Linux USBTMC/PyVISA-py enumerates it; bind by exact SDL1020X-E model and serial. Alternative: LAN/VXI-11 with an explicitly configured VISA resource. USB-A's USB2 path shares a mux with Bluetooth; validate the route before deployment. No undocumented UART-to-SCPI or direct MCU analog interface is assumed.
Run this package's agent on the CM5 and forward its loopback HTTP port through the existing SSH access path. It is a companion dashboard with a read-only /api/state connection to the control-panel dashboard; it does not patch or replace the shared agent. --control-panel URL shows connectivity and raw panel state, but cannot establish rail calibration or compute reliable efficiency by itself. Timestamp alignment, path losses and calibration must be validated first.
Run
python3 -m venv .runtime
.runtime/bin/pip install -r requirements.txt
.runtime/bin/python -m pyvisa info
# Enumerate resources without changing an instrument:
.runtime/bin/python -c 'import pyvisa; print(pyvisa.ResourceManager("@py").list_resources())'
# On the workcell, substitute the discovered VISA resource and actual serial:
.runtime/bin/python server.py --resource 'USB0::VENDOR::PRODUCT::SERIAL::INSTR' --serial ACTUAL_SERIAL --control-panel http://127.0.0.1:8852
Access through an SSH tunnel / the authenticated workcell proxy; the server binds loopback. Do not expose its control endpoint unauthenticated to a network. A developer preview is python3 server.py --simulate; simulated readbacks are explicitly tagged in UI and CSV. Without flags it is disconnected and refuses commands.
Test sequence for the 1 A buck
- Verify wiring, serial, mains selector, local OFF, supply current limit and rail mapping.
- Apply 12 V to VIN with load OFF; measure output using a calibrated DMM and scope.
- Apply 0.1, 0.25, 0.5, 0.75 and 1.0 A; record settled V/I/P, input V/I and temperature at each step.
- Evaluate regulation against the DUT's agreed acceptance limits (no fabricated tolerance). Check heating over an agreed soak period.
- Configure an instrument-native transient sequence separately and use a scope at TP3/TP5. Browser commands and 2 Hz telemetry do not generate or capture fast load steps. The buck wiki's ~185 mV simulated step and 3.2 mV simulated ripple are comparison targets, not measurements or guaranteed limits.
- Load OFF and confirm input status; remove DUT power; preserve CSV, scope captures, serial/firmware, calibration and wiring revision.
Fault behavior and limits
The DUT profile caps requested current at 1 A. Startup identifies the instrument, confirms OFF, clears short/external input control, selects static CC and 5 A range, sets zero demand and enables 1.1 A / 6 W protection. Driver commands follow Siglent Programming Guide E02B; no actual instrument has acknowledged them yet. Firmware-specific errors and protection delays need bench qualification.
The browser renews a 10 s lease. The polling worker sends OFF on lease expiry, bad measurements or read errors. If the transport is lost, software cannot guarantee OFF: display input state unknown, isolate DUT supply locally. A crashed process or powered-off CM5 also defeats the software watchdog. Production requires an independent interlock/supply shutdown, validated dock-presence behavior and instrument protection testing. No unattended hardware-ready claim is made.
# Workcell integration
## Electrical path
The load consumes power from the DUT; it does not supply 5 V. Feed the buck input from the controlled 12 V source through the control panel's PS1 rail. Connect buck J4 (VOUT) to load + and J5 (GND) to load −. The buck's mounting pins are also ground; check the complete return path. Do not connect the load across PS1 when intending to test the buck output. Never use J6 VMON as a load terminal; it is a divided voltage monitor.
Start with short paired force leads and local sensing. For Kelvin operation connect both rear sense terminals directly at J4/J5, then enable remote sense explicitly after confirming polarity. The current driver leaves remote sense OFF. Do not hot-undock an energized scaffold. Load OFF/readback first, DUT supply off and discharge verified, then disconnect force/sense and mains/USB harnesses as appropriate.
The instrument needs its own mains supply and protective earth; USB is communication, not instrument power. Confirm instrument input isolation, USB ground and oscilloscope ground before connecting. A USB isolator must support the actual instrument protocol/speed and is not assumed included.
## Control panel
[Current Control Panel Dashboard](https://wiki.adom.inc/adom/control-panel-dashboard) uses a CM5 resident agent and HTTP/SSE service at port 8852. Its current contact-map fixture maps USER_IO to MC29–MC54; the older base-scaffold overview gives different numbering. Use the V2.1.0 fixture and actual board revision, never the old overview for wiring.
Preferred: connect the load USB device port to the CM5 host. Linux USBTMC/PyVISA-py enumerates it; bind by exact SDL1020X-E model and serial. Alternative: LAN/VXI-11 with an explicitly configured VISA resource. USB-A's USB2 path shares a mux with Bluetooth; validate the route before deployment. No undocumented UART-to-SCPI or direct MCU analog interface is assumed.
Run this package's agent on the CM5 and forward its loopback HTTP port through the existing SSH access path. It is a companion dashboard with a read-only `/api/state` connection to the control-panel dashboard; it does not patch or replace the shared agent. `--control-panel URL` shows connectivity and raw panel state, but cannot establish rail calibration or compute reliable efficiency by itself. Timestamp alignment, path losses and calibration must be validated first.
## Run
```sh
python3 -m venv .runtime
.runtime/bin/pip install -r requirements.txt
.runtime/bin/python -m pyvisa info
# Enumerate resources without changing an instrument:
.runtime/bin/python -c 'import pyvisa; print(pyvisa.ResourceManager("@py").list_resources())'
# On the workcell, substitute the discovered VISA resource and actual serial:
.runtime/bin/python server.py --resource 'USB0::VENDOR::PRODUCT::SERIAL::INSTR' --serial ACTUAL_SERIAL --control-panel http://127.0.0.1:8852
```
Access through an SSH tunnel / the authenticated workcell proxy; the server binds loopback. Do not expose its control endpoint unauthenticated to a network. A developer preview is `python3 server.py --simulate`; simulated readbacks are explicitly tagged in UI and CSV. Without flags it is disconnected and refuses commands.
## Test sequence for the 1 A buck
1. Verify wiring, serial, mains selector, local OFF, supply current limit and rail mapping.
2. Apply 12 V to VIN with load OFF; measure output using a calibrated DMM and scope.
3. Apply 0.1, 0.25, 0.5, 0.75 and 1.0 A; record settled V/I/P, input V/I and temperature at each step.
4. Evaluate regulation against the DUT's agreed acceptance limits (no fabricated tolerance). Check heating over an agreed soak period.
5. Configure an instrument-native transient sequence separately and use a scope at TP3/TP5. Browser commands and 2 Hz telemetry do not generate or capture fast load steps. The buck wiki's ~185 mV simulated step and 3.2 mV simulated ripple are comparison targets, not measurements or guaranteed limits.
6. Load OFF and confirm input status; remove DUT power; preserve CSV, scope captures, serial/firmware, calibration and wiring revision.
## Fault behavior and limits
The DUT profile caps requested current at 1 A. Startup identifies the instrument, confirms OFF, clears short/external input control, selects static CC and 5 A range, sets zero demand and enables 1.1 A / 6 W protection. Driver commands follow Siglent Programming Guide E02B; no actual instrument has acknowledged them yet. Firmware-specific errors and protection delays need bench qualification.
The browser renews a 10 s lease. The polling worker sends OFF on lease expiry, bad measurements or read errors. If the transport is lost, software cannot guarantee OFF: display input state unknown, isolate DUT supply locally. A crashed process or powered-off CM5 also defeats the software watchdog. Production requires an independent interlock/supply shutdown, validated dock-presence behavior and instrument protection testing. No unattended hardware-ready claim is made.