qcodes_contrib_drivers.drivers.Santec package

Submodules

qcodes_contrib_drivers.drivers.Santec.Santec_TSL module

QCoDeS driver for Santec TSL tunable semiconductor lasers.

class qcodes_contrib_drivers.drivers.Santec.Santec_TSL.SantecTSL(*args: Any, **kwargs: Any)[source]

Bases: VisaInstrument

QCoDeS driver for the Santec TSL tunable semiconductor laser family.

The driver automatically detects the model from the instrument’s IDN response, applies appropriate wavelength limits, and sets the instrument to SCPI command mode during initialization.

Parameters:
  • name – Instrument name

  • address – VISA resource address

  • **kwargs – Additional arguments passed to VisaInstrument

Supported models:
  • TSL-570

  • TSL-580

Supported product codes from TSL-570 datasheet:
  • 260360: 1260-1360 nm (O-band)

  • 240380: 1240-1380 nm (Extended O-band)

  • 355485: 1355-1485 nm (C-band standard)

  • 355505: 1355-1505 nm (C-band extended)

  • 500630: 1500-1630 nm (L-band standard)

  • 480640: 1480-1640 nm (Extended C/L-band)

  • 560680: 1560-1680 nm (L-band extended)

Note

The instrument is automatically set to SCPI command mode during initialization. SCPI commands follow the Standard Commands for Programmable Instruments consortium standards.

disable_fine_tuning() None[source]

Terminate fine-tuning operation.

reboot() None[source]

Reboot the device.

reset() None[source]

Reset to factory defaults.

shutdown() None[source]

Shutdown the device.

software_trigger() None[source]

Execute from trigger standby.

sweep_repeat() None[source]

Start repeat sweep.

sweep_single() None[source]

Start single sweep.

sweep_stop() None[source]

Stop current sweep.

coherence_control: Parameter = self.add_parameter( name="coherence_control", label="Coherence control", get_cmd=":COHCtrl?", set_cmd=":COHCtrl {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Coherence control enabled

command_set: Parameter = self.add_parameter( name="command_set", label="Command set", get_cmd=":SYSTem:COMMunicate:CODe?", get_parser=int, val_mapping={ "LEGACY": 0, "SCPI": 1, }, )

Instrument command set (read-only; always SCPI in this driver)

default_terminator = '\r'

The default terminator to use if the terminator is not specified when creating the instrument. None means use the default terminator from PyVisa.

display_brightness: Parameter = self.add_parameter( name="display_brightness", label="Display brightness", unit="%", get_cmd=":DISPlay:BRIGhtness?", set_cmd=":DISPlay:BRIGhtness {}", get_parser=int, set_parser=int, vals=vals.Ints(10, 100), )

Display brightness (0-100%)

ethernet_gateway: Parameter = self.add_parameter( name="ethernet_gateway", label="Ethernet default gateway", get_cmd=":SYSTem:COMMunicate:ETHernet:DGATeway?", set_cmd=":SYSTem:COMMunicate:ETHernet:DGATeway {}", get_parser=str, set_parser=str, )

***.***.***.***)

Type:

Ethernet default gateway (format

ethernet_ip_address: Parameter = self.add_parameter( name="ethernet_ip_address", label="Ethernet IP address", get_cmd=":SYSTem:COMMunicate:ETHernet:IPADdress?", set_cmd=":SYSTem:COMMunicate:ETHernet:IPADdress {}", get_parser=str, set_parser=str, )

***.***.***.***)

Type:

Ethernet IP address (format

ethernet_mac_address: Parameter = self.add_parameter( name="ethernet_mac_address", label="Ethernet MAC address", get_cmd=":SYSTem:COMMunicate:ETHernet:MACaddress?", get_parser=str, )

**-**-**-**-**-**)

Type:

Ethernet MAC address (read-only, format

ethernet_port: Parameter = self.add_parameter( name="ethernet_port", label="Ethernet port number", get_cmd=":SYSTem:COMMunicate:ETHernet:PORT?", set_cmd=":SYSTem:COMMunicate:ETHernet:PORT {}", get_parser=int, set_parser=int, vals=vals.Ints(0, 65535), )

Ethernet port number (0-65535)

ethernet_subnet_mask: Parameter = self.add_parameter( name="ethernet_subnet_mask", label="Ethernet subnet mask", get_cmd=":SYSTem:COMMunicate:ETHernet:SMASk?", set_cmd=":SYSTem:COMMunicate:ETHernet:SMASk {}", get_parser=str, set_parser=str, )

***.***.***.***)

Type:

Ethernet subnet mask (format

frequency: Parameter = self.add_parameter( name="frequency", label="Optical frequency", unit="Hz", get_cmd=":WAVelength:FREQuency?", set_cmd=":WAVelength:FREQuency {:.0f}", get_parser=float, set_parser=float, vals=vals.Numbers(self.frequency_minimum(), self.frequency_maximum()), )

Output optical frequency

frequency_maximum: Parameter = self.add_parameter( name="frequency_maximum", label="Maximum frequency", unit="Hz", get_cmd=":WAVelength:FREQuency? MAXimum", get_parser=float, )

Maximum frequency limit for current model (read-only)

frequency_minimum: Parameter = self.add_parameter( name="frequency_minimum", label="Minimum frequency", unit="Hz", get_cmd=":WAVelength:FREQuency? MINimum", get_parser=float, )

Minimum frequency limit for current model (read-only)

gpib_address: Parameter = self.add_parameter( name="gpib_address", label="GPIB address", get_cmd=":SYSTem:COMMunicate:GPIB:ADDRess?", set_cmd=":SYSTem:COMMunicate:GPIB:ADDRess {}", get_parser=int, set_parser=int, vals=vals.Ints(1, 30), )

GPIB address (1-30)

gpib_delimiter: Parameter = self.add_parameter( name="gpib_delimiter", label="GPIB command delimiter", get_cmd=":SYSTem:COMMunicate:GPIB:DELimiter?", set_cmd=":SYSTem:COMMunicate:GPIB:DELimiter {}", get_parser=int, set_parser=int, val_mapping={ "CR": 0, "LF": 1, "CR+LF": 2, "NONE": 3, }, )

CR (0), LF (1), CR+LF (2), NONE (3)

Type:

GPIB command delimiter

modulation_source: Parameter = self.add_parameter( name="modulation_source", label="Amplitude modulation source", get_cmd=":AM:SOURce?", set_cmd=":AM:SOURce {}", get_parser=int, set_parser=int, val_mapping={ "COHERENCE_CONTROL": 0, "INTENSITY_MODULATION": 1, "FREQUENCY_MODULATION": 3, }, )

Modulation source (COHERENCE_CONTROL, INTENSITY_MODULATION, or FREQUENCY_MODULATION)

modulation_state: Parameter = self.add_parameter( name="modulation_state", label="Amplitude modulation state", get_cmd=":AM:STATe?", set_cmd=":AM:STATe {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Amplitude modulation state

output: Parameter = self.add_parameter( name="output", label="Output state", get_cmd=":POWer:STATe?", set_cmd=":POWer:STATe {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Optical output enabled

power: Parameter = self.add_parameter( name="power", label="Power", unit="mW", get_cmd=":POW?", set_cmd=":POW {:.10e}", get_parser=float, set_parser=float, vals=vals.Numbers(self.power_minimum(), self.power_maximum()) )

Output power level (mW)

power_actual: Parameter = self.add_parameter( name="power_actual", label="Actual optical power", unit="mW", get_cmd=":POWer:ACTual?", get_parser=float, )

Monitored optical power level (mW)

power_attenuation: Parameter = self.add_parameter( name="power_attenuation", label="Attenuator value", unit="dB", get_cmd=":POWer:ATTenuation?", set_cmd=":POWer:ATTenuation {:.2f}", get_parser=float, set_parser=float, vals=vals.Numbers(0, 30), )

Attenuator value (dB)

power_auto: Parameter = self.add_parameter( name="power_auto", label="Automatic power control", get_cmd=":POWer:ATTenuation:AUTo?", set_cmd=":POWer:ATTenuation:AUTo {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Automatic power control enabled

power_maximum: Parameter = self.add_parameter( name="power_maximum", label="Maximum power", unit="mW", get_cmd=":POWer? MAXimum", get_parser=float, )

Maximum power limit for current model (read-only)

power_minimum: Parameter = self.add_parameter( name="power_minimum", label="Minimum power", unit="mW", get_cmd=":POWer? MINimum", get_parser=float, )

Minimum power limit for current model (read-only)

power_unit: Parameter = self.add_parameter( name="power_unit", label="Power unit", get_cmd=":POWer:UNIT?", set_cmd=":POWer:UNIT {}", val_mapping={ "dBm": 0, "mW": 1, }, )

Power display unit (dBm or mW)

readout_data: Parameter = self.add_parameter( name="readout_data", label="Wavelength logging data", get_cmd=self._get_readout_data, )

Wavelength logging data (read-only, returns list of wavelengths in meters)

readout_points: Parameter = self.add_parameter( name="readout_points", label="Logged data points", get_cmd=":READout:POINts?", get_parser=int, )

Number of recorded data points

readout_power_data: Parameter = self.add_parameter( name="readout_power_data", label="Power logging data", unit="dBm", get_cmd=self._get_readout_power_data, )

Power logging data (read-only, returns list of powers in dBm)

shutter: Parameter = self.add_parameter( name="shutter", label="Shutter", get_cmd=":POWer:SHUTter?", set_cmd=":POWer:SHUTter {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Internal shutter open

sweep_count: Parameter = self.add_parameter( name="sweep_count", label="Sweep cycle count", get_cmd=":WAVelength:SWEep:COUNt?", get_parser=int, )

Current number of completed sweeps

sweep_cycles: Parameter = self.add_parameter( name="sweep_cycles", label="Sweep cycles", get_cmd=":WAVelength:SWEep:CYCLes?", set_cmd=":WAVelength:SWEep:CYCLes {:d}", get_parser=int, set_parser=int, vals=vals.Ints(0, 999), )

Number of sweep repetitions

sweep_delay: Parameter = self.add_parameter( name="sweep_delay", label="Sweep delay", unit="s", get_cmd=":WAVelength:SWEep:DELay?", set_cmd=":WAVelength:SWEep:DELay {:.1f}", get_parser=float, set_parser=float, vals=vals.Numbers(0, 999.9), )

Wait time between sweeps (seconds)

sweep_dwell: Parameter = self.add_parameter( name="sweep_dwell", label="Dwell time", unit="s", get_cmd=":WAVelength:SWEep:DWELl?", set_cmd=":WAVelength:SWEep:DWELl {:.1f}", get_parser=float, set_parser=float, vals=vals.Numbers(0, 999.9), )

Dwell time between steps

sweep_mode: Parameter = self.add_parameter( name="sweep_mode", label="Sweep mode", get_cmd=":WAVelength:SWEep:MODe?", set_cmd=":WAVelength:SWEep:MODe {}", get_parser=int, set_parser=int, vals=vals.Ints(0, 3), )

Sweep mode (0=step/one-way, 1=continuous/one-way, 2=step/two-way, 3=continuous/two-way)

sweep_range_maximum_frequency: Parameter = self.add_parameter( name="sweep_range_maximum_frequency", label="Sweep frequency range maximum", unit="Hz", get_cmd=":FREQuency:SWEep:RANGe:MAXimum?", get_parser=float, )

Maximum frequency in configurable sweep range at current sweep speed

sweep_range_maximum_wavelength: Parameter = self.add_parameter( name="sweep_range_maximum_wavelength", label="Sweep wavelength range maximum", unit="m", get_cmd=":WAV:SWE:RANG:MAX?", get_parser=float, )

Maximum wavelength in configurable sweep range at current sweep speed

sweep_range_minimum_frequency: Parameter = self.add_parameter( name="sweep_range_minimum_frequency", label="Sweep frequency range minimum", unit="Hz", get_cmd=":FREQuency:SWEep:RANGe:MINimum?", get_parser=float, )

Minimum frequency in configurable sweep range at current sweep speed

sweep_range_minimum_wavelength: Parameter = self.add_parameter( name="sweep_range_minimum_wavelength", label="Sweep wavelength range minimum", unit="m", get_cmd=":WAV:SWE:RANG:MIN?", get_parser=float, )

Minimum wavelength in configurable sweep range at current sweep speed

sweep_speed: Parameter = self.add_parameter( name="sweep_speed", label="Sweep speed", unit="nm/s", get_cmd=":WAVelength:SWEep:SPEed?", set_cmd=":WAVelength:SWEep:SPEed {:.4f}", get_parser=float, set_parser=float, vals=vals.Enum(1, 2, 5, 10, 20, 50, 100, 200), )

Sweep speed

sweep_start_frequency: Parameter = self.add_parameter( name="sweep_start_frequency", label="Sweep start frequency", unit="Hz", get_cmd=":WAVelength:FREQuency:SWEep:STARt?", set_cmd=":WAVelength:FREQuency:SWEep:STARt {:.0f}", get_parser=float, set_parser=float, vals=vals.Numbers(self.sweep_range_minimum_frequency(), self.sweep_range_maximum_frequency()) )

Sweep start frequency

sweep_start_wavelength: Parameter = self.add_parameter( name="sweep_start_wavelength", label="Sweep start wavelength", unit="m", get_cmd=":WAVelength:SWEep:STARt?", set_cmd=":WAVelength:SWEep:STARt {:.10e}", get_parser=float, set_parser=float, vals=vals.Numbers(self.sweep_range_minimum_wavelength(), self.sweep_range_maximum_wavelength()) )

Sweep start wavelength

sweep_state: Parameter = self.add_parameter( name="sweep_state", label="Sweep state", get_cmd=":WAVelength:SWEep:STATe?", get_parser=int, val_mapping={ "STOPPED": 0, "RUNNING": 1, "TRIGGER_STANDBY": 3, "PREPARING": 4, }, )

STOPPED (0), RUNNING (1), TRIGGER_STANDBY (3), PREPARING (4)

Type:

Sweep state (read-only)

sweep_step_frequency: Parameter = self.add_parameter( name="sweep_step_frequency", label="Sweep step frequency", unit="Hz", get_cmd=":WAVelength:FREQuency:SWEep:STEP?", set_cmd=":WAVelength:FREQuency:SWEep:STEP {:.0f}", get_parser=float, set_parser=float, vals=vals.Numbers(20e6, 1e15), )

Frequency sweep step size (20 MHz to span maximum)

sweep_step_wavelength: Parameter = self.add_parameter( name="sweep_step_wavelength", label="Sweep step wavelength", unit="m", get_cmd=":WAVelength:SWEep:STEP?", set_cmd=":WAVelength:SWEep:STEP {:.10e}", get_parser=float, set_parser=float, )

Wavelength sweep step size

sweep_stop_frequency: Parameter = self.add_parameter( name="sweep_stop_frequency", label="Sweep stop frequency", unit="Hz", get_cmd=":WAVelength:FREQuency:SWEep:STOP?", set_cmd=":WAVelength:FREQuency:SWEep:STOP {:.0f}", get_parser=float, set_parser=float, vals=vals.Numbers(self.sweep_range_minimum_frequency(), self.sweep_range_maximum_frequency()) )

Sweep stop frequency

sweep_stop_wavelength: Parameter = self.add_parameter( name="sweep_stop_wavelength", label="Sweep stop wavelength", unit="m", get_cmd=":WAVelength:SWEep:STOP?", set_cmd=":WAVelength:SWEep:STOP {:.10e}", get_parser=float, set_parser=float, vals=vals.Numbers(self.sweep_range_minimum_wavelength(), self.sweep_range_maximum_wavelength()) )

Sweep stop wavelength

system_alert: Parameter = self.add_parameter( name="system_alert", label="Alert information", get_cmd=":SYSTem:ALERt?", get_parser=str, )

Read current alert information (read-only, returns alert number)

system_code: Parameter = self.add_parameter( name="system_code", label="Product code", get_cmd=":SYSTem:CODe?", get_parser=lambda s: s.strip(), )

*-******-*-*-**-**-*)

Type:

Product code (read-only, format

system_error: Parameter = self.add_parameter( name="system_error", label="Error queue", get_cmd=":SYSTem:ERRor?", get_parser=lambda s: dict(code=int(s.strip().split(",")[0]), message=s.strip().split(",")[1].strip('"')) )

Read and clear error from error queue (read-only, returns error number)

system_lock: Parameter = self.add_parameter( name="system_lock", label="External interlock status", get_cmd=":SYSTem:LOCK?", get_parser=int, val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

off (0=UNLOCKED), on (1=LOCKED)

Type:

External interlock status (read-only)

system_version: Parameter = self.add_parameter( name="system_version", label="Firmware version", get_cmd=":SYSTem:VERSion?", get_parser=lambda s: s.strip(), )

****.****.****)

Type:

Firmware version (read-only, format

trigger_input_external: Parameter = self.add_parameter( name="trigger_input_external", label="External trigger input enabled", get_cmd=":TRIGger:INPut:EXTernal?", set_cmd=":TRIGger:INPut:EXTernal {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

External trigger input enabled

trigger_input_polarity: Parameter = self.add_parameter( name="trigger_input_polarity", label="Trigger input polarity", get_cmd=":TRIGger:INPut:ACTive?", set_cmd=":TRIGger:INPut:ACTive {}", val_mapping={ "RISE": 0, "FALL": 1, }, )

RISE (0=High Active/rising edge), FALL (1=Low Active/falling edge)

Type:

Input trigger polarity

trigger_input_standby: Parameter = self.add_parameter( name="trigger_input_standby", label="Trigger input standby", get_cmd=":TRIGger:INPut:STANdby?", set_cmd=":TRIGger:INPut:STANdby {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Trigger input standby enabled

trigger_output_polarity: Parameter = self.add_parameter( name="trigger_output_polarity", label="Trigger output polarity", get_cmd=":TRIGger:OUTPut:ACTive?", set_cmd=":TRIGger:OUTPut:ACTive {}", val_mapping={ "RISE": 0, "FALL": 1, }, )

RISE (0=High Active/rising edge), FALL (1=Low Active/falling edge)

Type:

Output trigger polarity

trigger_output_setting: Parameter = self.add_parameter( name="trigger_output_setting", label="Trigger output period mode", get_cmd=":TRIGger:OUTPut:SETTing?", set_cmd=":TRIGger:OUTPut:SETTing {}", val_mapping={ "WAVELENGTH": 0, "TIME": 1, }, )

WAVELENGTH (0=periodic in wavelength), TIME (1=periodic in time)

Type:

Trigger output period mode

trigger_output_step: Parameter = self.add_parameter( name="trigger_output_step", label="Trigger output interval", unit="m", get_cmd=":TRIGger:OUTPut:STEP?", set_cmd=":TRIGger:OUTPut:STEP {:.10e}", get_parser=float, set_parser=float, )

Trigger output interval (0.0001 nm resolution)

trigger_output_timing: Parameter = self.add_parameter( name="trigger_output_timing", label="Trigger output timing", get_cmd=":TRIGger:OUTPut?", set_cmd=":TRIGger:OUTPut {}", val_mapping={ "NONE": 0, "STOP": 1, "START": 2, "STEP": 3, }, )

NONE (0), STOP (1), START (2), STEP (3)

Type:

Trigger output timing

trigger_through: Parameter = self.add_parameter( name="trigger_through", label="Trigger through mode", get_cmd=":TRIGger:THRough?", set_cmd=":TRIGger:THRough {}", val_mapping=create_on_off_val_mapping(on_val=1, off_val=0), )

Trigger through mode enabled

wavelength: Parameter = self.add_parameter( name="wavelength", label="Wavelength", unit="m", get_cmd=":WAVelength?", set_cmd=":WAVelength {:.10e}", get_parser=float, set_parser=float, vals=vals.Numbers(self.wavelength_minimum(), self.wavelength_maximum()), )

Output wavelength

wavelength_fine: Parameter = self.add_parameter( name="wavelength_fine", label="Fine wavelength tuning", get_cmd=":WAV:FIN?", set_cmd=":WAV:FIN {:.2f}", get_parser=float, set_parser=float, vals=vals.Numbers(-100.0, 100.0), )

Fine-tuning offset

wavelength_maximum: Parameter = self.add_parameter( name="wavelength_maximum", label="Maximum wavelength", unit="m", get_cmd=":WAVelength? MAXimum", get_parser=float, )

Maximum wavelength limit for current model (read-only)

wavelength_minimum: Parameter = self.add_parameter( name="wavelength_minimum", label="Minimum wavelength", unit="m", get_cmd=":WAVelength? MINimum", get_parser=float, )

Minimum wavelength limit for current model (read-only)

wavelength_offset: Parameter = self.add_parameter( name="wavelength_offset", label="Wavelength offset", unit="m", get_cmd=":WAVelength:OFFSet?", set_cmd=":WAVelength:OFFSet {:.10e}", get_parser=float, set_parser=float, vals=vals.Numbers(-0.1e-9, 0.1e-9), )

Constant wavelength offset

wavelength_unit: Parameter = self.add_parameter( name="wavelength_unit", label="Wavelength unit", get_cmd=":WAVelength:UNIT?", set_cmd=":WAVelength:UNIT {}", val_mapping={ "NM": 0, "THz": 1, }, )

Wavelength display unit (NM or THz)

Module contents

Santec instrument drivers.