Note
General device communication concepts are described on the corresponding page.
Basics of sensors communication
Basic example
Basic sensors usually only implement a handful of functions related to reading out the measurements (possibly on different channels) and setting up measurements modes:
>> gauge = Pfeiffer.TPG260("COM1") # connect to the gauge
>> gauge.enable(1) # enable the first channel (usually it's already enabled)
>> gauge.get_pressure() # read pressure at the default channel (1)
100E3
>> gauge.close()
Application notes and examples
Here we talk more practically about using pylablib to perform commons sensor tasks.
Readout
The main readout methods almost always start with get_
prefix, e.g., get_pressure
, get_temperature
, or get_level
. In some cases there would be two different measurement modes: one which just reads the latest measurement result, and one which initializes the measurement, waits until it’s done, and returns the result. These two approaches may be implemented differently in different devices, and it is addressed in their description:
>> meter = Cryomagnetics.LM500("COM1")
>> meter.get_level(1) # immediately return the latest reading
20.0
>> meter.get_level(1) # return the same reading
20.0
>> meter.measure_level(1) # initialize a new measurement; takes some time
19.8
Non-numerical values
In some cases the readout method would return a non-numerical values. This usually happens when the sensor readings are outside of its range, or if it is in a wrong state (off, warming up, error, etc.) These cases are documented in the querying method description:
>> meter = Ophir.VegaPowerMeter("COM1")
>> meter.get_power() # power is higher than the current range
'over'
>> meter.set_range_idx(0) # set the maximal power range
>> meter.get_power() # now the reading is numerical
10E-3
Units
Unless absolutely necessary and obvious, all the readout values are specified in SI units (even, e.g., laser frequency in Hz, or pressure in Pa). In rare cases when the devices allows for selection of readout units (e.g., Pfeiffer TPG260 gauges), it only affects the displayed value, but not the results returned by the corresponding methods:
>> gauge = Pfeiffer.TPG260("COM1")
>> gauge.set_units("pa")
>> gauge.get_pressure()
100E3
>> gauge.set_units("mbar")
>> gauge.get_pressure() # pressure still in Pa
100E3
>> gauge.get_pressure(display_units=True) # pressure in display units
1000
Channel selection
Some gauges support simultaneous readout on several channels. In this case, all of their methods take an additional channel
(in most cases) argument, which specify the read channel.
The channels are usually specified by their index starting from 0 or 1, although some devices adopt more complicated labeling schemes (e.g., Lakeshore 218 temperature sensor can only assign a sensor type to a group of 4 sensors, which is labeled "A"
or "B"
). The exact specification is given in the specific class description.
Currently supported sensors
HighFinesse: laser wavelength meters. Tested with WS6 and WS7 USB-controlled devices.
Ophir: optical power and energy meters. Tested with Ophir Vega.
Thorlabs: optical power and energy meters. Tested with PM160.
Lakeshore: temperature sensors. Tested with Lakeshore 218.
Cryocon: temperature sensors. Tested with CryoCon 14C.
Cryomagnetics: liquid nitrogen or helium level sensor. Tested with LM-500 and LM-510 sensors.
Pfeiffer: pressure gauges. Tested with TPG261 and DPG202 controllers.
Leybold: pressure gauges. Tested with ITR90 gauge.
Kurt J. Lesker: pressure gauges. Tested with KJL300 gauge.
Thorlabs quadrature detector controller. Tested with TPA101.
Keithley multimeters. Tested with model 2110.
Voltcraft multimeters. Tested with VC-7055BT and VC880.