MPPT Testbench

Unified CLI tool for testing MPPT (Maximum Power Point Tracking) converters using three coordinated instruments:

Instrument Role Interface
ITECH IT6500D DC power supply (solar panel simulator) USB-TMC / SCPI via PyVISA
Prodigit 3366G DC electronic load (600V/420A/6kW) RS-232 (115200 8N1 RTS/CTS)
HIOKI 3193-10 Power analyzer (efficiency measurement) GPIB via UsbGpib / PyVISA

Wiring

                        ┌──────────────────┐
  IT6500D  ──(+/-)──>   │   MPPT Tracker   │  ──(+/-)──>  Prodigit 3366G
                        │      (DUT)       │
  HIOKI Ch5 ──(sense)── │  Input    Output │ ──(sense)──  HIOKI Ch6
                        └──────────────────┘

  HIOKI EFF1 = P6 / P5 x 100%  (output power / input power)

Installation

Requires Python 3.12+, NI-VISA runtime, and uv.

git clone --recurse-submodules https://git.b4l.co.th/B4L/mppt-testbench.git
cd mppt-testbench
uv venv
uv pip install -e .

Quick Start

# 1. Check all instruments are connected
mppt identify

# 2. Configure everything for MPPT testing
#    (sets wiring, coupling, auto-range, efficiency formula, display)
mppt setup

# 3. Take a single reading from all instruments
mppt measure

# 4. Continuous monitoring with CSV export
mppt monitor --interval 1.0 --output data.csv

# 5. Live real-time graph (Power, Efficiency, Voltage, Current)
mppt live --interval 0.5

Sweep Commands

Voltage Sweep

Sweep supply voltage across a range while the load is held constant. Records efficiency at each point.

mppt sweep \
  --v-start 30 --v-stop 100 --v-step 5 \
  --current-limit 10 \
  --load-mode CC --load-value 3.0 \
  --settle 2.0 \
  -o voltage_sweep.csv

After the sweep, the supply returns to 75V and stays ON.

Load Current Sweep

Sweep load current (CC mode) at a fixed supply voltage.

mppt sweep-load \
  --voltage 75 --current-limit 10 \
  --i-start 0.5 --i-stop 8 --i-step 0.5 \
  --settle 2.0 \
  -o load_sweep.csv

After the sweep, the load turns OFF and the supply returns to 75V (stays ON).

Auto-Range Handling

The HIOKI 3193-10 returns special error values (+9999.9E+99) while auto-ranging. The testbench automatically waits for all measurement channels to settle before recording each sweep point. The supply is kept alive with periodic queries during the wait to prevent USB-TMC timeouts.

Direct Instrument Control

# Supply
mppt supply set --voltage 48 --current 10
mppt supply on
mppt supply off

# Load
mppt load set --mode CC --value 5.0
mppt load set --mode CR --value 10.0
mppt load on
mppt load off

# Emergency shutdown (load first, then supply)
mppt safe-off

Efficiency Measurement

Measure averaged efficiency at a fixed operating point:

mppt efficiency \
  --voltage 75 --current-limit 10 \
  --load-mode CC --load-value 3.0 \
  --samples 10 --settle 3.0

CLI Reference

mppt [-h] [--supply-address ADDR] [--load-port PORT] [--load-baud BAUD]
     [--meter-address ADDR] [--timeout MS]
     {identify,setup,measure,monitor,live,sweep,sweep-load,efficiency,
      supply,load,safe-off}
Command Description
identify Show identity and status of all instruments
setup Configure all instruments for MPPT testing
measure Single measurement from all three instruments
monitor Continuous text monitoring with optional CSV
live Real-time 4-panel matplotlib graph
sweep Voltage sweep with efficiency recording
sweep-load Load current sweep at fixed voltage
efficiency Averaged efficiency at a fixed operating point
supply Direct IT6500D control (on/off/set)
load Direct Prodigit 3366G control (on/off/set)
safe-off Emergency shutdown (load first, then supply)

Global Options

Option Default Description
--supply-address auto-detect IT6500D VISA address
--load-port COM1 Prodigit 3366G serial port
--load-baud 115200 Prodigit 3366G baud rate
--meter-address auto-detect HIOKI 3193-10 VISA address
--timeout 5000 VISA timeout in milliseconds

CSV Output Format

Sweep CSV files contain the following columns:

Column Description
voltage_set Supply voltage setpoint (V)
current_limit Supply current limit (A)
load_setpoint Load setpoint value (A for CC mode)
supply_V/I/P Supply measured voltage, current, power
load_V/I/P Load measured voltage, current, power
input_power HIOKI P5 -- power into MPPT tracker (W)
output_power HIOKI P6 -- power out of MPPT tracker (W)
efficiency HIOKI EFF1 -- P6/P5 x 100 (%)

Setup Details

mppt setup configures the instruments as follows:

  • Supply: Remote control mode
  • Load: Remote control mode
  • Meter:
    • Wiring: 1P2W
    • Ch5 (solar input): DC coupling, voltage and current auto-range
    • Ch6 (MPPT output): DC coupling, voltage and current auto-range
    • Response speed: SLOW (best accuracy)
    • EFF1 = P6 / P5 (output / input)
    • Display: 16-item SELECT view -- U5, I5, P5, EFF1 (left) | U6, I6, P6 (right)

Project Structure

mppt-testbench/
├── IT6500D/              git submodule - DC power supply driver
├── PRODIGIT-3366G/       git submodule - electronic load driver
├── HIOKI-3193-10/        git submodule - power analyzer driver
├── testbench/
│   ├── __init__.py       exports MPPTTestbench
│   ├── bench.py          orchestrator (sweeps, measurement, auto-range wait)
│   └── cli.py            unified CLI entry point
└── pyproject.toml        package config, entry point: mppt

Dependencies

Description
No description provided
Readme 1.5 MiB
Languages
C 97.5%
Python 2.3%
Assembly 0.2%