Skip to main content

HVL Common Code Base

PyPI version Supported Python versions Pipeline status Coverage report Documentation Status Development pipeline status Ruff

A unified Python framework, High Voltage Laboratory common code base (HVL CCB), for controlling devices used in high-voltage research. All implemented devices are used and tested in the High Voltage Laboratory HVL of the Federal Institute of Technology Zurich (ETH Zurich).

  • Free software: GNU General Public License v3
  • Copyright (c) 2019-2026 ETH Zurich, SIS ID and HVL D-ITET

Getting Started

Install hvl_ccb with uv:

  uv pip install hvl_ccb
More details about how to install, please refer to [`INSTALLATION.md`](https://gitlab.com/ethz_hvl/hvl_ccb/-/blob/devel/INSTALLATION.md?ref_type=heads).
More details about how to install, please refer to {ref}`Installation <installation>`.

Example code for each supported device can be found in examples.

Features

For managing multi-device experiments instantiate the ExperimentManager utility class.

Supported Devices

The device wrappers in hvl_ccb provide a standardised API with configuration dataclasses, various settings and options, as well as start/stop methods. Currently wrappers are available to control the following devices:

Function/Type Devices
Bench Multimeter Fluke 8845A and 8846A
6.5 Digit Precision Multimeter
Data acquisition LabJack (T4, T7, T7-PRO; requires LJM Library)
Pico Technology PT-104 Platinum Resistance Data Logger (requires PicoSDK/libusbpt104)
Digital Delay Generator Highland T560
Digital IO LabJack (T4, T7, T7-PRO; requires LJM Library)
Electrometer Keysight-B2985A
Experiment control HVL Cube with and without Power Inverter
Filter Precision Filters Inc. PFA-2
Gas Analyser MBW 973-SF6 gas dew point mirror analyzer
Pfeiffer Vacuum TPG (25x, 26x and 36x) controller for compact pressure gauges
SST Luminox oxygen sensor
Laser CryLaS pulsed laser
CryLaS laser attenuator
Oscilloscope Rhode & Schwarz RTO 1024
TiePie (HS5, HS6, WS5)
Power supply Elektro-Automatik PSI9000
FuG Elektronik
Heinzinger PNC
Technix capacitor charger
Korad Lab Bench DC Power Supply KA3000
Stepper motor drive Newport SMC100PP
Schneider Electric ILS2T
Temperature control Lauda PRO RP 245 E circulation thermostat
Waveform generator TiePie (HS5, WS5)

Each device uses at least one standardised communication protocol wrapper.

Communication protocols

In hvl_ccb by "communication protocol" we mean different levels of communication standards, from the low level actual communication protocols like serial communication to application level interfaces like VISA TCP standard. There are also devices in hvl_ccb that use a dummy communication protocol; this is because these devices are build on proprietary manufacturer libraries that communicate with the corresponding devices, as in the case of TiePie or LabJack devices.

The communication protocol wrappers in hvl_ccb provide a standardised API with configuration dataclasses, as well as open/close and read/write/query methods. Currently, wrappers for the following communication protocols are available:

Communication Protocol Devices Using
Modbus TCP Schneider Electric ILS2T stepper motor drive
OPC UA HVL Cube with and without Power Inverter
Serial CryLaS pulsed laser and laser attenuator
FuG Elektronik power supply (e.g. capacitor charger HCK) using the Probus V protocol
Heinzinger PNC power supply using Heinzinger Digital Interface I/II
SST Luminox oxygen sensor
MBW 973-SF6 gas dew point mirror analyzer
Newport SMC100PP single axis driver for 2-phase stepper motors
Pfeiffer Vacuum TPG (25x, 26x and 36x) controller for compact pressure gauges
Technix capacitor charger
Korad Lab Bench DC Power Supply KA3000
TCP Digital Delay Generator Highland T560
Fluke 8845A and 8846
Lauda PRO RP 245 E circulation thermostat
Technix capacitor charger
VISA TCP Elektro-Automatik PSI9000 DC power supply
Keysight-B2985A electrometer
Rhode & Schwarz RTO 1024 oscilloscope
Proprietary LabJack (T4, T7, T7-PRO) devices, which communicate via LJM Library
Pico Technology PT-104 Platinum Resistance Data Logger, which communicates via PicoSDK/libusbpt104
TiePie (HS5, HS6, WS5) oscilloscopes and generators, which communicate via LibTiePie SDK

Sensor and Unit Conversion Utility

The Conversion Utility is a submodule that allows on the one hand a unified implementation of hardware-sensors and on the other hand provides a unified way to convert units. Furthermore it is possible to map two ranges on to each other. This can be useful to convert between for example and 4 - 20 mA and 0 - 10 V, both of them are common as sensor out- or input. Moreover, a subclass allows the mapping of a bit-range to any other range. For example a 12 bit number (0-4095) to 0 - 10. All utilities can be used with single numbers (int, float) as well as array-like structures containing single numbers (np.array(), list, dict, tuple).

Currently the following sensors are implemented:

  • LEM LT 4000S
  • LMT 70A

The following unit conversion classes are implemented:

  • Temperature (Kelvin, Celsius, Fahrenheit)
  • Pressure (Pascal, Bar, Atmosphere, Psi, Torr, Millimeter Mercury)

Documentation

Note: if you're planning to contribute to the `hvl_ccb` project read
the [`CONTRIBUTING.md`](https://gitlab.com/ethz_hvl/hvl_ccb/-/blob/devel/CONTRIBUTING.md?ref_type=heads).
Note: if you're planning to contribute to the `hvl_ccb` project read
the {ref}`contributing <contributing>` section in the HVL CCB documentation.

Do either:

or

  • build and read HVL CCB documentation locally; install first Graphviz (make sure to have the dot command in the executable search path) and the Python build requirements for documentation::

    pip install docs/requirements.txt
    

    and then either on Windows in Git BASH run::

    ./make.sh docs
    

    or from any other shell with GNU Make installed run::

    make docs
    

    The target index HTML ("docs/_build/html/index.html") should open automatically in your Web browser.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hvl_ccb-0.19.4.tar.gz (291.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hvl_ccb-0.19.4-py3-none-any.whl (241.7 kB view details)

Uploaded Python 3

File details

Details for the file hvl_ccb-0.19.4.tar.gz.

File metadata

  • Download URL: hvl_ccb-0.19.4.tar.gz
  • Upload date:
  • Size: 291.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for hvl_ccb-0.19.4.tar.gz
Algorithm Hash digest
SHA256 920f8cfe31d4c58fd876b4c151c24624954493fb07a75661b1bc75f849c39f15
MD5 3a5373999f9708a3eb0a3e3a5b9d7335
BLAKE2b-256 7dfbf925aa83b159dea6fac622ff67d8a303401ac7d5e7618504be2408c2cfce

See more details on using hashes here.

File details

Details for the file hvl_ccb-0.19.4-py3-none-any.whl.

File metadata

  • Download URL: hvl_ccb-0.19.4-py3-none-any.whl
  • Upload date:
  • Size: 241.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for hvl_ccb-0.19.4-py3-none-any.whl
Algorithm Hash digest
SHA256 db0cabec8f94b4f77394193b6dcf54bd97ead5e61c686908a748bfe112b6dcc2
MD5 354536737ce6e132174930ef8b0b5860
BLAKE2b-256 925b3a3893ba5dfeff191ea25019a523e3e2bbb1101226debd5c2267cbeb6553

See more details on using hashes here.

Release history Release notifications | RSS feed

0.19.5

2 files

This release

0.19.4 This release

2 files

0.19.3

2 files

0.19.2

2 files

0.19.1

2 files

0.19.0

2 files

0.18.3

2 files

0.18.2

2 files

0.18.1

2 files

0.18.0

2 files

0.17.1

2 files

0.17.0

2 files

0.16.0

2 files

0.15.1

2 files

0.15.0

2 files

0.14.4

2 files

0.14.3

2 files

0.14.2

2 files

0.14.1

2 files

0.14.0

2 files

0.13.3

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.3

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.10.0

2 files

0.9.0

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.1

2 files

0.7.0

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page