hardware_interfaces.fabry_perot module

This class is used to communicate with a Fabry Perot device which is tuned via Analog Voltage Output. The Analog Digital Converter is therefore needed.

class FabryPerot(device_name: str, channel: str, init_voltage: float, voltage_range: Tuple[float, float], adc: analog_digital_converter.AnalogDigitalConverter, shutter: shutter.Shutter, spectrometer: triax.Triax, hw_properties: hardware_properties.HardwareProperties, pixel_linearisation: data_processing.PixelResponseLinearization, name: str = 'Fabry-Perot etalon')[source]

Bases: object

Class that connects to analog output to Fabry Perot and provides functionality and algorithms to tune the wavelength.

It is assumed that a National Instruments nidaqmx capable device is used to provide the analog output voltage. This could be easily changed by writing a new FabryPerotVoltage class and instanciating it here.

Parameters
  • device_name (str) –

    Name of device on which the appropriate analog-out port is located. The name can be found and configured in the National Instruments Software: ‘Measurement and Automation Explorer’ (MAX). The device name should also be displayed in a pop-up when plugging in the device.

    • E.g.: “Dev0”, “Dev1” etc.

  • channel (str) –

    Name of analog output channel, that is used.

    • E.g.: “ao0”, “ao1” etc.

  • voltage_range (Tuple[float, float]) – [minimum, maximum] voltage (in volts) that the etalon supports. Make sure to use correct/safe values as this also prevents setting the voltage to “unhealthy” levels!

  • init_voltage (float) – Voltage in Volts to which analog output is set upon init.

  • adc (AnalogDigitalConverter) – Object that represents the ADC hardware connected to MCT detector that is used to tune Fabry Perot.

  • shutter (Shutter) – Object that controls IR-pump shutter.

  • spectrometer (Triax) – Spectrometer which is used to tune the Fabry Perot.

  • hw_properties (HardwareProperties) – Object that holds all the hardware properties of the setup

  • pixel_linearisation (PixelResponseLinearization) – Object that can linearise the pixel response of the MCT detector that is used to tune the Fabry Perot.

  • name (str, optional) – Name / Identifier to give to this etalon. This is relevant for log statements, especially when there is more than one etalon in the setup. Defaults to “Fabry-Perot etalon”.

analog_voltage_controller

Used to control voltage applied to Fabry Perot

Type

FabryPerotVoltage

slope

Mysterious slope that is used tune Fabry Perot. Nobody knows where it was born.

Type

float

current_pixel

Pixel to which Fabry Perot is currently tuned (assuming that the spectrometer settings were not changed.) This attribute is initialized after the first time the Fabry Perot was tuned to a wavenumber.

Type

int

current_wavenumber

Wavenumber in cm-1 to which Fabry Perot is currently tuned. This attribute is initialized after the first time the Fabry Perot was tuned to a wavenumber/ wavelength.

Type

float

current_wavelength

Wavelength in nanometers to which Fabry Perot is currently tuned. This attribute is initialized after the first time the Fabry Perot was tuned to a wavenumber/ wavelength.

Type

float

end()[source]
set_pixel(target_pixel: int)[source]

Tune Fabry Perot to have maximum intensity on provided target pixel.

Parameters

target_pixel (int) – Pixel onto which Fabry Perot is supposed to be tuned.

set_wavelength(wavelength: float)[source]

Tune Fabry Perot to closest possible wavelength that is available with the current spectrometer settings.

This algorithm can only tune Fabry Perot to have maximum intensity on a certain pixel. So we find the pixel whose wavelength is closest to the one specified.

Parameters

wavelength (float) – wavelength in nanometers

See also

set_wavenumber

set_wavenumber(wavenumber: float)[source]

Tune Fabry Perot to closest possible wavenumber that is available with the current spectrometer settings.

This algorithm can only tune Fabry Perot to have maximum intensity on a certain pixel. So we find the pixel whose wavenumber is closest to the one specified.

Parameters

wavenumber (float) – wavenumber in cm-1

class FabryPerotVoltage(device_name: str, channel: str, voltage_range: Tuple[float, float], name: str = 'Fabry-Perot voltage controller')[source]

Bases: object

This class can be used to set the analog voltage of the Fabry-Perot etalon.

It is assumed that a National Instruments nidaqmx capable device is used to provide the analog output voltage.

Parameters
  • device_name (str) –

    Name of device on which the appropriate analog-out port is located. The name can be found and configured in the National Instruments Software: ‘Measurement and Automation Explorer’ (MAX). The device name should also be displayed in a pop-up when plugging in the device.

    • E.g.: “Dev0”, “Dev1” etc.

  • channel (str) –

    Name of analog output channel, that is used.

    • E.g.: “ao0”, “ao1” etc.

  • voltage_range (Tuple[float, float]) – [minimum, maximum] voltage (in volts) that the etalon supports. Make sure to use correct/safe values as this also prevents setting the voltage to “unhealthy” levels!

  • name (str, optional) – Name / Identifier to give to this etalon. This is relevant for log statements, especially when there is more than one etalon in the setup. Defaults to “Fabry-Perot voltage controller”.

voltage

Voltage that is currently held at specified output

Type

float

task

Represents a DAQmx Task object, through which all communication with device is managed.

Type

object

channel

DAQmx channel object representing the output channel.

Type

object

References

end()[source]

Sets voltage to 0 V and ends nidaqmx task.

set_voltage(voltage: float)[source]

Sets voltage of Fabry-Perot etalon.

Parameters

voltage (float) – Voltage in V