From 0f0788c13532dafe5c72678074e8775930545045 Mon Sep 17 00:00:00 2001 From: quantumCryoCoder Date: Mon, 24 Apr 2017 17:05:25 +0200 Subject: [PATCH 1/3] Oxford IT503 driver --- qcodes/instrument_drivers/oxford/IT503.py | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 qcodes/instrument_drivers/oxford/IT503.py diff --git a/qcodes/instrument_drivers/oxford/IT503.py b/qcodes/instrument_drivers/oxford/IT503.py new file mode 100644 index 000000000000..520f7ddca35d --- /dev/null +++ b/qcodes/instrument_drivers/oxford/IT503.py @@ -0,0 +1,33 @@ +from qcodes import Instrument, VisaInstrument, validators as vals +from qcodes.instrument import visa as visa_mod + +class OxfordInstruments_IT503(Instrument): + + def __init__(self, name, address, **kw): + super().__init__(name, **kw) + self._instr_instance = visa_mod.VisaInstrument('IT503_sub', + address=address, + terminator='\r') + self.add_parameter(name='sorb', + label='SORB', + unit='K', + get_cmd=lambda : self._get_temp(1), + get_parser=float, + vals=vals.Numbers(0., 1e3)) + self.add_parameter(name='ROX', + label='ROX', + unit='K', + get_cmd=lambda : self._get_temp(2), + get_parser=float, + vals=vals.Numbers(0., 1e3)) + self.add_parameter(name='CERNOX', + label='CERNOX', + unit='K', + get_cmd=lambda : self._get_temp(3), + get_parser=float, + vals=vals.Numbers(0., 1e3)) + + def _get_temp(self, channel): + msg = self._instr_instance.ask('R%d'%channel) + return float(msg[1:]) + From b6ba6f865845b883ec25fc421c5ec8e40990e5c0 Mon Sep 17 00:00:00 2001 From: elrama- Date: Mon, 24 Apr 2017 17:38:27 +0200 Subject: [PATCH 2/3] change naming and added description --- .../oxford/{IT503.py => ITC503.py} | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) rename qcodes/instrument_drivers/oxford/{IT503.py => ITC503.py} (66%) diff --git a/qcodes/instrument_drivers/oxford/IT503.py b/qcodes/instrument_drivers/oxford/ITC503.py similarity index 66% rename from qcodes/instrument_drivers/oxford/IT503.py rename to qcodes/instrument_drivers/oxford/ITC503.py index 520f7ddca35d..acc559706346 100644 --- a/qcodes/instrument_drivers/oxford/IT503.py +++ b/qcodes/instrument_drivers/oxford/ITC503.py @@ -1,27 +1,35 @@ from qcodes import Instrument, VisaInstrument, validators as vals from qcodes.instrument import visa as visa_mod -class OxfordInstruments_IT503(Instrument): - +class OxfordInstruments_ITC503(Instrument): + ''' + Oxford Instruments Temprature Controller 503 driver. + + Implemented: + - Temperature reading from the 3 thermometer channels. + Not implemented: + - Heating controller. + - PID-controller for heater. + ''' def __init__(self, name, address, **kw): super().__init__(name, **kw) self._instr_instance = visa_mod.VisaInstrument('IT503_sub', address=address, terminator='\r') - self.add_parameter(name='sorb', - label='SORB', + self.add_parameter(name='ch1', + label='ch1', unit='K', get_cmd=lambda : self._get_temp(1), get_parser=float, vals=vals.Numbers(0., 1e3)) - self.add_parameter(name='ROX', - label='ROX', + self.add_parameter(name='ch2', + label='ch2', unit='K', get_cmd=lambda : self._get_temp(2), get_parser=float, vals=vals.Numbers(0., 1e3)) - self.add_parameter(name='CERNOX', - label='CERNOX', + self.add_parameter(name='ch3', + label='ch3', unit='K', get_cmd=lambda : self._get_temp(3), get_parser=float, From f5beeb4bea727c61cbf57c2c4252cf4da63e9179 Mon Sep 17 00:00:00 2001 From: quantumCryoCoder Date: Thu, 15 Feb 2018 18:19:36 +0100 Subject: [PATCH 3/3] clean up oxford ITC503 driver The Oxford ITC503 ("intelligent temperature controller") is a fridge control box (impedance bridge plus heaters etc) . It had a horrible driver. --- qcodes/instrument_drivers/oxford/ITC503.py | 71 +++++++++++----------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/qcodes/instrument_drivers/oxford/ITC503.py b/qcodes/instrument_drivers/oxford/ITC503.py index acc559706346..f450af072018 100644 --- a/qcodes/instrument_drivers/oxford/ITC503.py +++ b/qcodes/instrument_drivers/oxford/ITC503.py @@ -1,41 +1,40 @@ -from qcodes import Instrument, VisaInstrument, validators as vals from qcodes.instrument import visa as visa_mod -class OxfordInstruments_ITC503(Instrument): - ''' - Oxford Instruments Temprature Controller 503 driver. - - Implemented: - - Temperature reading from the 3 thermometer channels. - Not implemented: - - Heating controller. - - PID-controller for heater. - ''' - def __init__(self, name, address, **kw): - super().__init__(name, **kw) - self._instr_instance = visa_mod.VisaInstrument('IT503_sub', - address=address, - terminator='\r') - self.add_parameter(name='ch1', - label='ch1', - unit='K', - get_cmd=lambda : self._get_temp(1), - get_parser=float, - vals=vals.Numbers(0., 1e3)) - self.add_parameter(name='ch2', - label='ch2', - unit='K', - get_cmd=lambda : self._get_temp(2), - get_parser=float, - vals=vals.Numbers(0., 1e3)) - self.add_parameter(name='ch3', - label='ch3', +class OxfordInstruments_ITC503(visa_mod.VisaInstrument): + def __init__(self, name, address): + super().__init__(name, address, terminator='\r') + + def parse_response(s): + "chop off the first letter, as instrument answers 'Rx.xxx'" + return float(s[1:]) + + self.add_parameter(name='sorb', + label='Sorb temperature', unit='K', - get_cmd=lambda : self._get_temp(3), - get_parser=float, - vals=vals.Numbers(0., 1e3)) + get_cmd="R1", + get_parser=parse_response) + self.add_parameter(name='ROX', + label='ROX temperature', + unit='K', + get_cmd="R2", + get_parser=parse_response) + self.add_parameter(name='CERNOX', + label='CERNOX temperature', + unit='K', + get_cmd="R3", + get_parser=parse_response) + + def get_idn(self): + + #the ITC does not have an IDN command implemented, but it has a "V" (for version) command, + #so we fake it + + s = self.ask("V") + + import parse + + idn = parse.parse("{model} Version {firmware} (c) {vendor} {}", s).named - def _get_temp(self, channel): - msg = self._instr_instance.ask('R%d'%channel) - return float(msg[1:]) + idn["serial"] = None + return idn