Install the sfc5xxx Driver -------------------------- .. include:: driver-installation.rst Run Usage-Example ----------------- 1. Connect the sfc5xxx sensor to your system with the serial USB cable. 2. Run the example script from the root of the repository. By default the script assumes the sensor is connected to COM1 serial port. If this is different on your system, pass the port in use with the :code:`--serial-port` parameter as outlined below. .. sourcecode:: bash python .py --serial-port Example script ~~~~~~~~~~~~~~ .. sourcecode:: python # -*- coding: utf-8 -*- import time from sensirion_shdlc_driver import ShdlcSerialPort, ShdlcConnection from sensirion_shdlc_sfc5xxx import Sfc5xxxShdlcDevice, Sfc5xxxScaling, \ Sfc5xxxValveInputSource, Sfc5xxxUnitPrefix, Sfc5xxxUnit, \ Sfc5xxxUnitTimeBase, Sfc5xxxMediumUnit # Connect to the device with default settings: # - baudrate: 115200 # - slave address: 0 with ShdlcSerialPort(port='COM1', baudrate=115200) as port: device = Sfc5xxxShdlcDevice(ShdlcConnection(port), slave_address=0) # Print some device information print("Version: {}".format(device.get_version())) print("Product Name: {}".format(device.get_product_name())) print("Article Code: {}".format(device.get_article_code())) print("Serial Number: {}".format(device.get_serial_number())) # List all available calibration blocks print("Available gas calibration blocks:") for i in range(device.get_number_of_calibrations()): if device.get_calibration_validity(i): gas = device.get_calibration_gas_description(i) fullscale = device.get_calibration_fullscale(i) unit = device.get_calibration_gas_unit(i) print(" - {}: {:.2f} {} {}".format(i, fullscale, unit, gas)) # Select gas calibration 0 (usually there is a calibration at index 0) device.activate_calibration(0) # Get some information about the currently active gas calibration print("Calibration Gas: {}".format(device.get_current_gas_description())) print("Calibration Fullscale: {}".format(device.get_current_fullscale())) print("Calibration Unit: {}".format(device.get_current_gas_unit())) # Set user defined flow unit to sccm so we don't have to care about # the actual calibration unit of the connected MFC unit = Sfc5xxxMediumUnit( Sfc5xxxUnitPrefix.MILLI, Sfc5xxxUnit.STANDARD_LITER, Sfc5xxxUnitTimeBase.MINUTE ) device.set_user_defined_medium_unit(unit) # Get the flow fullscale in the user defined medium unit (i.e. sccm) fullscale = device.get_user_defined_fullscale() print("Fullscale: {:.2f} {}".format(fullscale, unit)) # Set flow setpoint to 100sccm device.set_setpoint(100, Sfc5xxxScaling.USER_DEFINED) # Read single flow value flow = device.read_measured_value(Sfc5xxxScaling.USER_DEFINED) print("Measured Flow: {:.2f} {}".format(flow, unit)) # Read single temperature value temperature = device.measure_temperature() print("Measured Temperature: {:.2f} °C".format(temperature)) # Read whole flow value buffer buffer = device.read_measured_value_buffer(Sfc5xxxScaling.USER_DEFINED) print("Lost Values (Buffer Overrun): {}".format(buffer.lost_values)) print("Sampling Time of Values: {:.3f} s".format(buffer.sampling_time)) print("Buffered Flow Values: {}".format(buffer.values)) # Purge system by fully opening the valve for 1s device.set_valve_input_source(Sfc5xxxValveInputSource.FORCE_OPEN) time.sleep(1.0) device.set_valve_input_source(Sfc5xxxValveInputSource.CONTROLLER) # Perform a device reset (reboot firmware) device.device_reset()