Skip to content

Commit

Permalink
Adding new driver for SG384 (#318)
Browse files Browse the repository at this point in the history
* add new driver for SG384

* Update SG384.py

changed units to unit
  • Loading branch information
euchas authored and jenshnielsen committed Feb 15, 2017
1 parent 327891a commit cce540c
Showing 1 changed file with 152 additions and 0 deletions.
152 changes: 152 additions & 0 deletions qcodes/instrument_drivers/stanford_research/SG384.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
from qcodes import VisaInstrument, validators as vals


class SRS_SG384(VisaInstrument):
"""
This is the code for SG384 RF Signal Generator
Status: beta version
Includes the essential commands from the manual
"""
def __init__(self, name, address, reset=False, **kwargs):
super().__init__(name, address, terminator='\n', **kwargs)
# signal synthesis commands
self.add_parameter(name='frequency',
label='Frequency',
unit='Hz',
get_cmd='FREQ?',
set_cmd='FREQ {:.3f}',
get_parser=float,
vals=vals.Numbers(min_value=9.5e5,
max_value=4.05e9))
self.add_parameter(name='phase',
label='Carrier phase',
unit='deg',
get_cmd='PHAS?',
set_cmd='PHAS {:.1f}',
get_parser=float,
vals=vals.Numbers(min_value=-360, max_value=360))
self.add_parameter(name='amplitude_LF',
label='Power of BNC output',
unit='dBm',
get_cmd='AMPL?',
set_cmd='AMPL {:.2f}',
get_parser=float,
vals=vals.Numbers(min_value=-47, max_value=13))
self.add_parameter(name='amplitude_RF',
label='Power of type-N RF output',
unit='dBm',
get_cmd='AMPR?',
set_cmd='AMPR {:.2f}',
get_parser=float,
vals=vals.Numbers(min_value=-110, max_value=16.5))
self.add_parameter(name='amplitude_HF',
label='Power of RF doubler output',
unit='dBm',
get_cmd='AMPH?',
set_cmd='AMPH {:.2f}',
get_parser=float,
vals=vals.Numbers(min_value=-10, max_value=13))
self.add_parameter(name='amplitude_clock',
label='Rear clock output',
unit='Vpp',
get_cmd='AMPC?',
set_cmd='AMPC {:.2f}',
get_parser=float,
vals=vals.Numbers(min_value=0.4, max_value=1.00))
self.add_parameter(name='noise_mode',
label='RF PLL loop filter mode',
get_cmd='NOIS?',
set_cmd='NOIS {}',
val_mapping={'Mode 1': 0,
'Mode 2': 1})
self.add_parameter(name='enable_RF',
label='Type-N RF output',
get_cmd='ENBR?',
set_cmd='ENBR {}',
val_mapping={'OFF': 0,
'ON': 1})
self.add_parameter(name='enable_LF',
label='BNC output',
get_cmd='ENBL?',
set_cmd='ENBL {}',
val_mapping={'OFF': 0,
'ON': 1})
self.add_parameter(name='enable_HF',
label='RF doubler output',
get_cmd='ENBH?',
set_cmd='ENBH {}',
val_mapping={'OFF': 0,
'ON': 1})
self.add_parameter(name='enable_clock',
label='Rear clock output',
get_cmd='ENBC?',
set_cmd='ENBC {}',
val_mapping={'OFF': 0,
'ON': 1})
self.add_parameter(name='offset_clock',
label='Rear clock offset voltage',
unit='V',
get_cmd='OFSC?',
set_cmd='OFSC {}',
get_parser=float,
vals=vals.Numbers(min_value=-2, max_value=2))
self.add_parameter(name='offset_rearDC',
label='Rear DC offset voltage',
unit='V',
get_cmd='OFSD?',
set_cmd='OFSD {}',
get_parser=float,
vals=vals.Numbers(min_value=-10, max_value=10))
self.add_parameter(name='offset_bnc',
label='Low frequency BNC output',
unit='V',
get_cmd='OFSL?',
set_cmd='OFSL {}',
get_parser=float,
vals=vals.Numbers(min_value=-1.5, max_value=1.5))
# Modulation commands
self.add_parameter(name='modulation_coupling',
label='External modulation input coupling',
get_cmd='COUP?',
set_cmd='COUP {}',
val_mapping={'AC': 0,
'DC': 1})
self.add_parameter(name='FM_deviation',
label='Frequency modulation deviation',
unit='Hz',
get_cmd='FDEV?',
set_cmd='FDEV {:.1f}',
get_parser=float,
vals=vals.Numbers(min_value=0.1, max_value=32e6))
self.add_parameter(name='modulation_function',
label='Modulation function for AM/FM/PhiM',
get_cmd='MFNC?',
set_cmd='MFNC {}',
val_mapping={'Sine': 0,
'Ramp': 1,
'Triangle': 2,
'Square': 3,
'Noise': 4,
'External': 5})
self.add_parameter(name='enable_modulation',
get_cmd='MODL?',
set_cmd='MODL {}',
val_mapping={'OFF': 0,
'ON': 1})
self.add_parameter(name='modulation_rate',
get_cmd='RATE?',
set_cmd='RATE {:.6f}',
get_parser=float,
vals=vals.Numbers(min_value=1e-6, max_value=50e3))
self.add_parameter(name='modulation_type',
label='Current modulation type',
get_cmd='TYPE?',
set_cmd='TYPE {}',
val_mapping={'AM': 0,
'FM': 1,
'Phi': 2,
'Sweep': 3,
'Pulse': 4,
'Blank': 5,
'IQ': 6})
self.connect_message()

0 comments on commit cce540c

Please sign in to comment.