7 Commits

Author SHA1 Message Date
3f65b5f2f2 Add plot-sweep command, degauss buttons, sweep ramp-down, and time estimate
- Add offline `plot-sweep` CLI command: generates efficiency overlay,
  heatmap, and power loss plots from sweep CSV (no instruments needed)
- Add degauss buttons to CH5/CH6 in GUI (sends :DEMAg SCPI command)
- Gradual load ramp-down at end of 2D sweep to avoid transients
- Live sweep time estimate in GUI based on grid size × settle time
- Update HIOKI submodule to include degauss CLI command

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 16:31:33 +07:00
5fe2ec4556 Fix VOLTage:RANGe? timeout and EFF overflow blocking sweeps
- Wrap get_voltage_range() in try/except since VOLTage:RANGe? is not
  supported on IT6537D — skip range check gracefully if unavailable
- Exclude derived EFF* values from auto-range error threshold check
  in _wait_meter_ready(), as efficiency overflows at near-zero power

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 17:06:13 +07:00
a0795302a9 Add CP mode sanity check: validate current limit vs power at min voltage
CP=500W at V=50V needs 10A on the load side — if the supply I_limit
is only 20A and the MPPT has conversion losses, this can cause the
supply to current-limit and timeout. The check now catches this upfront:

  CP check: 500W / 50V = 10.0A (limit 20.0A) OK

Also raises ValueError if the worst-case current exceeds the limit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:06:48 +07:00
aced4f1e23 Add CP load mode to 2D sweep and supply sanity checks
- 2D sweep now supports CC (constant current) and CP (constant power)
  load modes via --load-mode flag (CLI) and combobox (GUI)
- Supply capability check before all sweeps: validates max voltage
  against supply range and prints V/I/P summary
- Renamed sweep-vi args from --i-start/stop/step to --l-start/stop/step
  to reflect that the load setpoint can be current or power
- GUI labels update dynamically based on selected load mode

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:57:44 +07:00
956be4b77a Add shade profiles, 2D V×I sweep, meter format toggle, ON/OFF indicators, and GUI console
- Shade profile: CSV-driven irradiance/voltage sequences with load control
  (bench.run_shade_profile, CLI shade-profile command, GUI profile panel)
- 2D sweep: voltage × load current efficiency map with live graph updates
  (bench.sweep_vi, CLI sweep-vi command, GUI sweep panel with background thread)
- GUI: meter format selector (scientific/normal), supply/load ON/OFF indicators,
  console log with stdout redirect and color-coded messages
- Sample profiles: cloud_pass, partial_shade, intermittent_clouds

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:27:48 +07:00
e2be7109b7 Add GUI control panel with live measurements and full instrument control
New `mppt-gui` command launches a tkinter app with:
- Live numeric readouts for all 13 measurement channels
- 4-panel real-time matplotlib graphs (power, efficiency, voltage, current)
- Full supply control: voltage, current, OVP, slew, output on/off
- Full load control: mode (CC/CR/CV/CP), setpoint, slew, load on/off
- Meter settings: wiring mode, response speed, coupling per channel
- CSV data logging with start/stop control
- Red SAFE OFF button (also Escape key) bypasses command queue
- Threaded architecture: instrument I/O never blocks the GUI
- Fix apply() silently failing: use set_current + set_voltage instead

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:42:07 +07:00
e55caa59b1 Initial MPPT testbench: unified CLI for IT6500D + Prodigit 3366G + HIOKI 3193-10
Combines three instrument drivers (as git submodules) into a single
testbench for MPPT tracker efficiency testing. Features:
- Voltage sweep and load current sweep with CSV export
- Auto-range aware meter polling (waits for HIOKI to settle)
- Supply keepalive during long meter waits to prevent USB-TMC timeouts
- Live monitoring with real-time 4-panel matplotlib graphs
- Safe shutdown (load first, then supply)
- Post-sweep returns to 75V idle with supply ON

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:19:18 +07:00