An unofficial Python package 🐍📦 to interface with CAEN high voltage power supplies
Project description
HVPS
🤔 What is this?
This is a Python package for controlling high voltage power supplies (HVPS) over serial port. The aim is to provide a unified pythonic interface for different HVPS models.
Along with the Python package, a minimal set of bindings for Node.js is also provided. A nodered node is also available. They both rely on the Python package to be installed in order to work.
Currently only CAEN and iseg brands are supported.
⚙️ Installation
Installation via pip
is supported.
To install the latest published version, run:
pip install hvps
To install the package from source, including development dependencies, clone the repository and run:
pip install .[dev]
👨💻 Usage
There is a hierarchy of objects that represent the HVPS and its components:
HVPS
: represents the HVPS itself and handles the connection to the serial portModule
: represents a module of the HVPS. Some HVPS support multiple modules over the same connectionChannel
: represents a channel of the HVPS
Connection
from hvps import Caen, Iseg
import logging
# connection interface is common to all HVPS
# if no serial port is specified, the first available port will be used
# if no baudrate is specified, the default baudrate will be used
# if connect=False, the connection will not be established (useful for testing)
# if logging_level is specified, the logger will be configured accordingly
hvps = Caen(port="/dev/ttyUSB0", baudrate=115200, connect=True, logging_level=logging.DEBUG)
# connection settings can be accessed
print(f"port: {hvps.port}")
print(f"baudrate: {hvps.baudrate}")
Module
from hvps import Caen
# default connection settings
caen = Caen()
module = caen.module() # get the first module (module 0)
# if multiple modules are present, they can be accessed by index e.g. caen.module(1)
# get the module's name
print(f"module name: {module.name}")
Channel
from hvps import Caen
caen = Caen()
module = caen.module(0)
print(f"number of channels: {module.number_of_channels}")
channel = module.channel(2) # get channel number 2
# get monitoring parameters
print(f"vmon: {channel.vmon}")
print(f"vset: {channel.vset}")
# set values (remote mode must be enabled)
# turn on channel
channel.turn_on()
channel.vset = 300.0 # 300 V
⚠️ Disclaimer
The development of this package is mostly based on documentation with access to only a few models of HVPS.
If you use this package, it is very possible you find a bug or some oversight. You are encouraged to make a pull request or to create an issue to report a bug, to request additional features or to suggest improvements.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hvps-0.1.0.tar.gz
.
File metadata
- Download URL: hvps-0.1.0.tar.gz
- Upload date:
- Size: 35.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3eaf243ee2acb18651df97dfbb939f501a67358930ada478fd882b6227ab2b7e |
|
MD5 | a6e0f849a72de41880920231d80f8004 |
|
BLAKE2b-256 | eae02ffc342c22a8f165e354cac475ac494db54c23692505aa9456c5abaae89f |
File details
Details for the file hvps-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: hvps-0.1.0-py3-none-any.whl
- Upload date:
- Size: 33.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 664cc48262ea25f87e4499669c1d489c3a8f020126fdbfc8327bdd64ea88fc18 |
|
MD5 | 3ed25322fde174048b01f003987cf5ab |
|
BLAKE2b-256 | dc294145d2c3f7c6f7be838360f9fc8cc439be65c3f06b2f965a4530428e018d |