BillNick / alicat

Python driver and command line tool for Alicat mass flow controllers.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Type Usage
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.
Multiple cables connected to one port via a splitter and Alicat's addressing (A-Z). Good when number of ports is limited.

Installation

pip install alicat

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)
}

On flow controllers, you can set the flow or pressure setpoints.

flow_controller.set_flow_rate(1.0)
flow_controller.set_pressure(20)

Gas Type

You can set the gas type by name or by index. For more on setting by index, see the gas table in your Alicat's manual.

flow_controller.set_gas('N2')
flow_controller.set_gas(8)

For firmware 5v and greater, you can create and set gas mixes. Mixes can contain up to five gases and are stored in gas indices 236-255.

flow_controller.create_mix(mix_no=236, name="Mix1", gases={'N2': 50, 'O2': 30, 'CO2': 20})
flow_controller.set_gas(236)
flow_controller.delete_mix(236)

PID Parameters

For flow controllers, read and write PID loop settings for device tuning.

flow_controller.set_pid(p=4000, i=4000, d=10, loop_type='PD2I')
print(flow_controller.get_pid())
{
    'loop_type': 'PD2I',
    'P': '4000',
    'I': '4000',
    'D': '10',
}

Other Features

Additional features include override commands to increase device functionality.

flow_controller.lock()            # Lock the front display.
flow_controller.unlock()          # Unlock the front display.
flow_controller.hold()            # Hold the valve in its current position.
flow_controller.cancel_hold()     # Cancel the valve hold.
flow_controller.tare_volumetric() # Tare volumetric flow.
flow_controller.tare_pressure()   # Tare pressure.
flow_controller.reset_totalizer() # Reset totalizer, if totalizer functionality included.

Addressing

You can have multiple controllers on the same port by using Alicat's A-Z 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()

TCP Support

The last version with working TCP support is here and can be installed with:

pip install alicat==0.3.1

If you use the TCP driver, please let us know and we'll add it back to the current version.

About

Python driver and command line tool for Alicat mass flow controllers.

License:GNU General Public License v2.0


Languages

Language:Python 100.0%