LDC500 Series Laser-diode Controllers

class pymeasure.instruments.srs.ldc500series.LDC500Series(adapter, name='LDC500Series', **kwargs)

Bases: SCPIMixin, Instrument

Represents an SRS LDC500Series laser diode controller and provides a high-level interface for interacting with the instrument.

ld
Channel:

LDC500SeriesLD

pd
Channel:

LDC500SeriesPD

tec
Channel:

LDC500SeriesTEC

check_errors()

Read all errors from the instrument.

Returns:

List of [last_execution_error, last_command_error]

check_set_errors()

Check for errors after having set a property, and raise an error if any are present.

property last_command_error: Any

Get the last command error code. This also resets the execution error code to 0.

property last_execution_error: Any

Get the last execution error code. This also resets the execution error code to 0.

property next_error

Get next error not implemented, raises: NotImplementedError

property options

Get options not implemented, raises NotImplementedError

class pymeasure.instruments.srs.ldc500series.LDC500SeriesLD(parent, id, **kwargs)

Bases: Channel

LDC500Series channel for control of the laser-diode (LD).

property current: Any

Measure the laser diode current, in mA (float).

property current_limit: Any

Control the laser diode current limit, in mA (float).

The ouput current is clamped to never exceed current_limit under any conditions. If current_limit is reduced below current_setpoint, current_setpoint is “dragged” down with current_limit.

property current_range: Any

Control the laser diode current range (str “HIGH” or “LOW”).

The currents corresponding to current range depend on the model:

LDC500

LDC501

LDC502

HIGH

100mA

500mA

2000mA

LOW

50mA

250mA

1000mA

property current_setpoint: Any

Control the laser diode current setpoint, in mA, when mode == "CC" (float).

property enabled: Any

Control whether the laser diode current source is enabled (bool).

property interlock_closed: Any

Get the status of the interlock, True if closed, False if open. Laser will only operate with a closed interlock.

property mode: Any

Control the laser diode control mode, (str “CC” or “CP”).

If the laser is on when mode is changed, the controller performs a bumpless transfer to switch control modes on-the-fly.

If mode is changed from “CC” to “CP”, the present value of the photodiode current (or equivalently optical power) is measured and the CP setpoint is set to this measurement. If the measured photodiode current or power exceed the setpoint limit, an error is thrown.

If the mode is changed from “CP” to “CC”, the present value of the laser current is measured and the CC setpoint set to this measurement. Note that, by hardware design, the measured laser current can never exceed the setpoint limit.

property modulation_bandwidth: Any

Control the laser diode modulation bandwidth (str “HIGH” or “LOW”).

The analog modulation input is DC coupled, with the –3 dB roll-off frequency dependent on mode and modulation_bandwidth:

CC

CP

LOW

10kHz

100Hz

HIGH

1.2mhz

5kHz

property modulation_enabled: Any

Control whether analog modulation of the laser diode is enabled (bool)

property voltage: Any

Measure the laser diode voltage, in V (float).

property voltage_limit: Any

Control the laser diode voltage limit, in V (float strictly in range 0.1 to 10). The current source turns off when the voltage limit is exceeded.

class pymeasure.instruments.srs.ldc500series.LDC500SeriesPD(parent, id, **kwargs)

Bases: Channel

LDC500Series channel for control of the photodiode (PD).

property bias: Any

Control the photodiode bias (float strictly in range 0 to 5).

calibrate(power)

Set the photodiode responsivity, responsivity, via a real time power measurement.

Parmeters:

power (float): Real time power measurement, in mW.

property current: Any

Measure the photodiode current, in uA (float).

property current_limit: Any

Control the photodiode current limit, in uA, when mode == "CP" and photodiode_units == "uA" (float).

property current_setpoint: Any

Control the photodiode current setpoint, in uA, when mode == "CP" and photodiode_units == "uA" (float).

property power: Any

Measure the photodiode power, in mW (float).

property power_limit: Any

Control the photodiode power limit, in mW, when mode == "CP" and photodiode_units == "mW" (float).

If power_limit is reduced below power_setpoint, power_setpoint is “dragged” down with power_limit.

property power_setpoint: Any

Control the photodiode optical power setpoint, in mW, when mode == "CP" and photodiode_units == "mW" (float).

property responsivity: Any

Control the photodiode responsivity, in uA/mW (float).

Changing responsivity, either directly or via calibrate, indirectly changes:

  • current_setpoint and current_limit if units == "mW"

  • power_setpoint and power_limit if units == "uA"

This is to maintain the relationships:

  • current_setpoint = power_setpoint x responsivity

  • current_limit = power_limit x responsivity

property units: Any

Control the CP photodiode units (str “mW” or “uA”).

class pymeasure.instruments.srs.ldc500series.LDC500SeriesTEC(parent, id, **kwargs)

Bases: Channel

LDC500Series channel for control of the thermo-electric-controller (TEC).

check_temperature_stability(tolerance=0.1, period=10, points=64)

Determine whether the temperature is stable at the temperature setpoint over a specified period.

Parameters:
  • tolerance – Maximum allowed deviation from temperature setpoint, in degrees Centigrade. (default: 0.1)

  • period – Time period over which stability is checked, in seconds. (default: 10)

Returns:

True if stable, False otherwise.

property current: Any

Measure the TEC current, in A.

property current_limit: Any

Control the TEC current limit, in A (float strictly in range -4.5 to 4.5).

If current_limit is reduced below current_setpoint, current_setpoint is dragged down with current_limit.

property current_setpoint: Any

Control the TEC current setpoint, in A, when mode == "CC" (float).

property enabled: Any

Control whether the TEC current source is enabled (bool).

property mode: Any

Control the TEC control mode (str “CC” or “CT”).

If the TEC is on when mode is changed, the controller performs a bumpless transfer to swich control modes on-the-fly.

If mode is changed from “CT” to “CC”, the present value of the TEC current is measured, and the CC setpoint is set to this measurement.

If mode is changed from “CC” to “CT”, the present value of the temperature sensor is measured, and the CT setpoint is set to this measurement.

property resistance_high_limit: Any

Control the TEC high resistance limit, in kΩ (float).

property resistance_limits

Control the TEC resistance limits, in kΩ (two-tuple of floats).

property resistance_low_limit: Any

Control the TEC low resistance limit, in kΩ (float).

property resistance_setpoint: Any

Control the TEC resistance setpoint, in kΩ (float).

property temperature: Any

Measure the TEC temperature, in °C (float).

property temperature_high_limit: Any

Control the TEC high temperature limit, in °C (float).

property temperature_limits

Control the TEC temperature limits, in °C (two-tuple of floats).

property temperature_low_limit: Any

Control the TEC low temperature limit, in °C (float).

property temperature_setpoint: Any

Control the TEC temperature setpoint, in °C (float).

property thermometer_raw: Any

Measure the raw thermometer reading, kΩ, V, or μA depending on the sensor type (float).

property thermometer_type: Any

Control the temperature sensor type (ThermometerType enum).

property voltage: Any

Measure the TEC voltage, in V (float).

property voltage_limit: Any

Control the TEC voltage limit, in V (float strictly in range -8.5 to 8.5).

wait_for_temperature_stable(tolerance=0.1, period=10, should_stop=<function LDC500SeriesTEC.<lambda>>, timeout=60)

Block the program, waiting for the temperature to stabilize at the temperature setpoint.

Parameters:
  • tolerance – Maximum allowed deviation from temperature setpoint, in degrees Centigrade. (default: 0.1)

  • period – Time period over which stability is checked, in seconds. (default: 10)

  • should_stop – Function that returns True to stop waiting. (default: <function LDC500SeriesTEC.<lambda> at 0x76f1efc77a60>)

  • timeout – Maximum waiting time, in seconds. (default: 60)

Returns:

True when stable, False if stopped by should_stop.

Raises:

TimeoutError – If the temperature does not stabilize within the timeout period.

class pymeasure.instruments.srs.ldc500series.ThermometerType(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: IntEnum

Enumerator of thermometer types supported by the SRS LDC500Series. (NTC - negative temperature coefficient; RTD - Resistance temperature detector)

Members:

  • NTC10UA : 10 µA excitation for NTC thermistor.

  • NTC100UA : 100 µA excitation for NTC thermistor.

  • NTC1MA : 1 mA excitation for NTC thermistor.

  • NTCAUTO : Automatically detects optimal excitation for NTC.

  • RTD : Typically Pt-100 or other PTC sensors

  • LM335 : LM335 and compatible temperature-to-voltage transducers.

  • AD590 : AD590 and compatible temperature-to-current transducers.