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
Hashes for alicat-0.2.9-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e5071d2722ff1cd2aaf9c07bf1480d29adadf99ece6c41ec2045f736966ffba |
|
MD5 | 0bd289ca8edfa800673582649e6c2864 |
|
BLAKE2b-256 | 3026417282764605ed0596aad699f6425451678cfdcd037d6d209bfc6608319a |