104 lines
2.9 KiB
Markdown
104 lines
2.9 KiB
Markdown
# Power Supply (Owon) — control, configuration, tests, and tryout
|
|
|
|
This guide covers using the Owon bench power supply via SCPI over serial with the framework.
|
|
|
|
- Library: `ecu_framework/power/owon_psu.py`
|
|
- Hardware test: `tests/hardware/test_owon_psu.py`
|
|
- Tryout script: `vendor/Owon/tryout.py`
|
|
- Configuration: `config/test_config.yaml` (`power_supply`), optionally merged from `config/owon_psu.yaml` or env `OWON_PSU_CONFIG`
|
|
|
|
## Install dependencies
|
|
|
|
```powershell
|
|
pip install -r .\requirements.txt
|
|
```
|
|
|
|
## Configure
|
|
|
|
You can keep PSU settings centrally or in a machine-specific YAML.
|
|
|
|
- Central: `config/test_config.yaml` → `power_supply` section
|
|
- Separate: `config/owon_psu.yaml` (or `OWON_PSU_CONFIG` env var)
|
|
|
|
Supported keys:
|
|
|
|
```yaml
|
|
power_supply:
|
|
enabled: true
|
|
port: COM4 # e.g., COM4 (Windows) or /dev/ttyUSB0 (Linux)
|
|
baudrate: 115200
|
|
timeout: 1.0
|
|
eol: "\n" # or "\r\n" if required
|
|
parity: N # N|E|O
|
|
stopbits: 1 # 1|2
|
|
xonxoff: false
|
|
rtscts: false
|
|
dsrdtr: false
|
|
idn_substr: OWON
|
|
do_set: false
|
|
set_voltage: 5.0
|
|
set_current: 0.1
|
|
```
|
|
|
|
The central config loader automatically merges `config/owon_psu.yaml` (or the path in `OWON_PSU_CONFIG`) into `power_supply`.
|
|
|
|
## Run the hardware test
|
|
|
|
Skips unless `power_supply.enabled` is true and `port` is set.
|
|
|
|
```powershell
|
|
pytest -k test_owon_psu_idn_and_optional_set -m hardware -q
|
|
```
|
|
|
|
What it does:
|
|
- Opens serial with your configured line params
|
|
- Queries `*IDN?` (checks `idn_substr` if provided)
|
|
- If `do_set` is true, sets voltage/current, enables output briefly, then disables
|
|
|
|
## Use the library programmatically
|
|
|
|
```python
|
|
from ecu_framework.power import OwonPSU, SerialParams
|
|
|
|
params = SerialParams(baudrate=115200, timeout=1.0)
|
|
with OwonPSU("COM4", params, eol="\n") as psu:
|
|
print(psu.idn())
|
|
psu.set_voltage(1, 5.0)
|
|
psu.set_current(1, 0.1)
|
|
psu.set_output(True)
|
|
# ... measure, etc.
|
|
psu.set_output(False)
|
|
```
|
|
|
|
Notes:
|
|
- Commands use newline-terminated writes; reads use `readline()`
|
|
- SCPI forms: `SOUR:VOLT`, `SOUR:CURR`, `MEAS:VOLT?`, `MEAS:CURR?`, `output 0/1`, `output?`
|
|
|
|
## Tryout script
|
|
|
|
The tryout reads `OWON_PSU_CONFIG` or `config/owon_psu.yaml` and performs a small sequence.
|
|
|
|
```powershell
|
|
python .\vendor\Owon\tryout.py
|
|
```
|
|
|
|
It also scans ports with `*IDN?` using `scan_ports()`.
|
|
|
|
## Troubleshooting
|
|
|
|
- Empty `*IDN?` or timeouts:
|
|
- Verify COM port and exclusivity (no other program holding it)
|
|
- Try `eol: "\r\n"`
|
|
- Adjust `parity` and `stopbits` per your device manual
|
|
- Windows COM > 9:
|
|
- Most Python code accepts `COM10` directly; if needed in other tools, use `\\.\\COM10`
|
|
- Flow control:
|
|
- Keep `xonxoff`, `rtscts`, `dsrdtr` false unless required
|
|
|
|
## Related files
|
|
|
|
- `ecu_framework/power/owon_psu.py` — PSU controller (pyserial)
|
|
- `tests/hardware/test_owon_psu.py` — Hardware test using central config
|
|
- `vendor/Owon/tryout.py` — Quick demo runner
|
|
- `config/owon_psu.example.yaml` — Example machine-specific YAML
|