Skip to content

Latest commit

 

History

History
145 lines (107 loc) · 4.42 KB

README.md

File metadata and controls

145 lines (107 loc) · 4.42 KB

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.