Quantum Design Drivers¶
Classes:
|
Class to represent the DynaCoolPPMS |
- class qcodes.instrument_drivers.QuantumDesign.DynaCool(name: str, address: str, **kwargs: Unpack[VisaInstrumentKWArgs])[source]¶
Bases:
VisaInstrument
Class to represent the DynaCoolPPMS
Note that this driver assumes the server to be running on the DynaCool dedicated control PC. The server can be launched using qcodes-dynacool-server.exe or by executing server.py (from the ‘private’ folder)
- Parameters:
name – The name used internally by QCoDeS for this driver
address – The VISA resource name. E.g. ‘TCPIP0::127.0.0.1::5000::SOCKET’ with the appropriate IP address instead of 127.0.0.1. Note that the port number is hard-coded into the server.
Attributes:
The default terminator to use if the terminator is not specified when creating the instrument.
Parameter temperature
Parameter temperature_setpoint
Parameter temperature_rate
Parameter temperature_settling
Parameter temperature_state
Parameter field_measured
Parameter field_target
Parameter field_ramp
Parameter field_rate
Parameter field_approach
Parameter magnet_state
Parameter chamber_temperature
Parameter chamber_state
The tolerance below which fields are considered identical in a blocking ramp.
Methods:
get_idn
()Parse a standard VISA
*IDN?
response into an ID dict.ramp
([mode])Ramp the field to the value given by the field_target parameter
write
(cmd)Since the error code is always returned, we must read it back
ask
(cmd)Since the error code is always returned, we must read it back
close
()Make sure to nicely close the server connection
- temp_params = ('temperature_setpoint', 'temperature_rate', 'temperature_settling')¶
- field_params = ('field_target', 'field_rate', 'field_approach')¶
- default_terminator: str | None = '\r\n'¶
The default terminator to use if the terminator is not specified when creating the instrument. None means use the default terminator from PyVisa.
- temperature: Parameter = self.add_parameter( "temperature", label="Temperature", unit="K", get_parser=partial(DynaCool._pick_one, 1, float), get_cmd="TEMP?", )¶
Parameter temperature
- temperature_setpoint: Parameter = self.add_parameter( "temperature_setpoint", label="Temperature setpoint", unit="K", vals=vals.Numbers(1.6, 400), set_cmd=partial(self._temp_setter, "temperature_setpoint"), get_cmd=partial(self._temp_getter, "temperature_setpoint"), )¶
Parameter temperature_setpoint
- temperature_rate: Parameter = self.add_parameter( "temperature_rate", label="Temperature settle rate", unit="K/s", vals=vals.Numbers(0.0002, 0.3), set_parser=lambda x: x * 60, # conversion to K/min get_parser=lambda x: x / 60, # conversion to K/s set_cmd=partial(self._temp_setter, "temperature_rate"), get_cmd=partial(self._temp_getter, "temperature_rate"), )¶
Parameter temperature_rate
- temperature_settling: Parameter = self.add_parameter( "temperature_settling", label="Temperature settling mode", val_mapping={"fast settle": 0, "no overshoot": 1}, set_cmd=partial(self._temp_setter, "temperature_settling"), get_cmd=partial(self._temp_getter, "temperature_settling"), )¶
Parameter temperature_settling
- temperature_state: Parameter = self.add_parameter( "temperature_state", label="Temperature tracking state", val_mapping={ "tracking": 2, "stable": 1, "near": 5, "chasing": 6, "pot operation": 7, "standby": 10, "diagnostic": 13, "impedance control error": 14, "failure": 15, }, get_parser=partial(DynaCool._pick_one, 2, int), get_cmd="TEMP?", )¶
Parameter temperature_state
- field_measured: Parameter = self.add_parameter( "field_measured", label="Field", unit="T", get_cmd=self._measured_field_getter, )¶
Parameter field_measured
- field_target: Parameter = self.add_parameter( "field_target", label="Field target", unit="T", get_cmd=None, set_cmd=None, vals=vals.Numbers(-14, 14), )¶
Parameter field_target
- field_ramp: Parameter = self.add_parameter( "field_ramp", label="Field [ramp]", unit="T", get_cmd=None, set_cmd=self._field_ramp_setter, vals=vals.Numbers(-14, 14), )¶
Parameter field_ramp
- field_rate: Parameter = self.add_parameter( "field_rate", label="Field rate", unit="T/s", get_parser=lambda x: x * 1e-4, # Oe to T set_parser=lambda x: x * 1e4, # T to Oe set_cmd=None, get_cmd=None, initial_value=0, vals=vals.Numbers(0, 1), )¶
Parameter field_rate
- field_approach: Parameter = self.add_parameter( "field_approach", label="Field ramp approach", val_mapping={"linear": 0, "no overshoot": 1, "oscillate": 2}, set_cmd=None, get_cmd=None, initial_value="linear", )¶
Parameter field_approach
- magnet_state: Parameter = self.add_parameter( "magnet_state", label="Magnet state", val_mapping={ "unknown": 0, "stable": 1, "switch warming": 2, "switch cool": 3, "holding": 4, "iterate": 5, "ramping": 6, "ramping ": 7, # map must have inverse "resetting": 8, "current error": 9, "switch error": 10, "quenching": 11, "charging error": 12, "power supply error": 14, "failure": 15, }, get_parser=partial(DynaCool._pick_one, 2, int), get_cmd="FELD?", )¶
Parameter magnet_state
- chamber_temperature: Parameter = self.add_parameter( "chamber_temperature", label="Chamber Temperature", unit="K", get_parser=partial(DynaCool._pick_one, 1, float), get_cmd="CHAT?", )¶
Parameter chamber_temperature
- chamber_state: Parameter = self.add_parameter( "chamber_state", label="Chamber vacuum state", val_mapping={ "purged and sealed": 1, "vented and sealed": 2, "sealed": 3, "performing purge/seal": 4, "performing vent/seal": 5, "pre-high vacuum": 6, "high vacuum": 7, "pumping continuously": 8, "flooding continuously": 9, }, get_parser=partial(DynaCool._pick_one, 1, int), get_cmd="CHAM?", )¶
Parameter chamber_state
- field_tolerance: Parameter = self.add_parameter( "field_tolerance", label="Field Tolerance", unit="T", get_cmd=None, set_cmd=None, vals=vals.Numbers(0, 1e-2), set_parser=float, docstring="The tolerance below which fields are " "considered identical in a " "blocking ramp.", initial_value=5e-4, )¶
The tolerance below which fields are considered identical in a blocking ramp.
- visa_handle: pyvisa.resources.MessageBasedResource = visa_handle¶
The VISA resource used by this instrument.
- parameters: dict[str, ParameterBase] = {}¶
All the parameters supported by this instrument. Usually populated via
add_parameter()
.
- functions: dict[str, Function] = {}¶
All the functions supported by this instrument. Usually populated via
add_function()
.
- submodules: dict[str, InstrumentModule | ChannelTuple] = {}¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule()
.
- instrument_modules: dict[str, InstrumentModule] = {}¶
All the
InstrumentModule
of this instrument Usually populated viaadd_submodule()
.
- log: InstrumentLoggerAdapter = get_instrument_logger(self, __name__)¶
- get_idn() dict[str, str | None] [source]¶
Parse a standard VISA
*IDN?
response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?
or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- ramp(mode: str = 'blocking') None [source]¶
Ramp the field to the value given by the field_target parameter
- Parameters:
mode – how to ramp, either “blocking” or “non-blocking”. In “blocking” mode, this function does not return until the target field has been reached. In “non-blocking” mode, this function immediately returns.