Python driver for Alicat mass flow controllers.
Project description
alicat
Serial driver and command line tool for Alicat mass flow controllers.
If you are using Analyt-MTC flow controllers, go to this repository for more info.
Example Connections
- The standard DB9 cable connected directly to a computer (unix:
/dev/ttyS0, windows:COM1).- Good with older computers that still have the connector.
- The cable connected to a computer through a USB converter (unix:
/dev/ttyUSB0, windows:COM1).- Good for newer computers and maker boards such as Raspberry Pis.
- Cables routed through a TCP device server (
tcp://192.168.1.100:4000, requires python >3.4).- Good in conjunction with PLCs for professional-looking control boxes.
- Multiple cables connected to one port via a splitter and Alicat's addressing (
A-D).- Good when number of ports is limited.
Installation
pip install alicat
If you don't like pip, you can also install from source:
git clone https://github.com/numat/alicat.git
cd alicat
python setup.py install
Usage
Command Line
For basic tasks, this driver includes a command-line interface. Read the help for more.
alicat --help
Python
For more complex projects, use python to automate your workflow.
from alicat import FlowController
flow_controller = FlowController(port='/dev/ttyUSB0')
print(flow_controller.get())
If the flow controller is communicating on the specified port, this should return a dictionary of the form:
{
'setpoint': 0.0, # Setpoint, either mass flow rate or pressure
'control_point': 'flow', # Either 'flow' or 'pressure'
'gas': 'Air', # Can be any option in `flow_controller.gases`
'mass_flow': 0.0, # Mass flow (in units specified at time of purchase)
'pressure': 25.46, # Pressure (normally in psia)
'temperature': 23.62, # Temperature (normally in C)
'total_flow': 0.0, # Optional. If totalizer function purchased, will be included
'volumetric_flow': 0.0 # Volumetric flow (in units specified at time of purchase)
}
You can also set the gas type and flow rate / pressure.
flow_controller.set_gas('N2')
flow_controller.set_flow_rate(1.0)
flow_controller.set_pressure(20)
Alicat Addressing
You can have multiple controllers on the same port by using Alicat's A-D addresses
and an RS-232 splitter.
flow_controller_1 = FlowController(address='A')
flow_controller_2 = FlowController(address='B')
flow_controller_1.set_flow_rate(1.0)
flow_controller_2.set_flow_rate(0.5)
flow_controller_1.close() #/dev/ttyUSB0 is still open!
flow_controller_2.close()
Asynchronous TCP
Some people wire their RS-232 devices through an ethernet proxy server (example), enabling network access. This is supported through asyncio (python >3.4) and python's built-in asynchronous syntax.
import asyncio
from alicat.tcp import FlowController
flow_controller = FlowController('192.168.1.100', 4000)
async def print_state():
print(await flow_controller.get())
ioloop = asyncio.get_event_loop()
ioloop.run_until_complete(print_state())
ioloop.close()
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alicat-0.2.10.tar.gz.
File metadata
- Download URL: alicat-0.2.10.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9e00683b2177d4311c902f8896ed30d8fe954156077c28e0e6d348dba43ccc4
|
|
| MD5 |
03656d1808f91f254214cd48ef9f00b1
|
|
| BLAKE2b-256 |
be0b5086287d886671ff324f7b87e50aef9122b194becdffe7d4d41d47896f8a
|
File details
Details for the file alicat-0.2.10-py2.py3-none-any.whl.
File metadata
- Download URL: alicat-0.2.10-py2.py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03db5c147dab9c6df675682d393b411cf70d942a04ad0fb019e6869e3f1df0d1
|
|
| MD5 |
16e25b0b6ec67fd38b4e0bcee19ab48d
|
|
| BLAKE2b-256 |
25af29d7576bf47f94e2dfd586eb5c7c4788cf00770913be4f988056593a2609
|