From 9ad4560803ceabc313dfc0ef1d244ee583c02efb Mon Sep 17 00:00:00 2001 From: johnhornibrook Date: Wed, 18 Oct 2017 18:47:33 +1100 Subject: [PATCH] Keysight N51x1 driver Basic driver --- qcodes/instrument_drivers/Keysight/N51x1.py | 56 +++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 qcodes/instrument_drivers/Keysight/N51x1.py diff --git a/qcodes/instrument_drivers/Keysight/N51x1.py b/qcodes/instrument_drivers/Keysight/N51x1.py new file mode 100644 index 000000000000..12155494364f --- /dev/null +++ b/qcodes/instrument_drivers/Keysight/N51x1.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +from qcodes import VisaInstrument +from qcodes.utils.validators import Numbers + + +class N51x1(VisaInstrument): + """ + This is the qcodes driver for Keysight/Agilent scalar RF sources. + It has been tested with N5171B, N5181A, N5171B + """ + + def __init__(self, name, address, **kwargs): + super().__init__(name, address, terminator='\n', **kwargs) + + self.add_parameter('power', + label='Power', + get_cmd='SOUR:POW?', + get_parser=float, + set_cmd='SOUR:POW {:.2f}', + unit='dBm', + vals=Numbers(min_value=-144,max_value=19)) + + # Query the instrument to see what frequency range was purchased + freq_dict = {'501':1e9, '503':3e9, '505':6e9} + max_freq = freq_dict[self.ask('*OPT?')] + self.add_parameter('frequency', + label='Frequency', + get_cmd='SOUR:FREQ?', + get_parser=float, + set_cmd='SOUR:FREQ {:.2f}', + unit='Hz', + vals=Numbers(min_value=9e3,max_value=max_freq)) + + self.add_parameter('phase_offset', + label='Phase Offset', + get_cmd='SOUR:PHAS?', + get_parser=float, + set_cmd='SOUR:PHAS {:.2f}', + unit='rad' + ) + + self.add_parameter('rf_output', + get_cmd='OUTP:STAT?', + set_cmd='OUTP:STAT ' + '{:s}', + val_mapping={'on': 1, 'off': 0}) + + self.connect_message() + + + def get_idn(self): + IDN = self.ask_raw('*IDN?') + vendor, model, serial, firmware = map(str.strip, IDN.split(',')) + IDN = {'vendor': vendor, 'model': model, + 'serial': serial, 'firmware': firmware} + return IDN +