Skip to main content

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


Download files

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

Source Distribution

alicat-0.2.8.tar.gz (9.9 kB view hashes)

Uploaded Source

Built Distribution

alicat-0.2.8-py2.py3-none-any.whl (18.5 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page