Skip to content

Commit cce540c

Browse files
euchasjenshnielsen
authored andcommitted
Adding new driver for SG384 (#318)
* add new driver for SG384 * Update SG384.py changed units to unit
1 parent 327891a commit cce540c

1 file changed

Lines changed: 152 additions & 0 deletions

File tree

  • qcodes/instrument_drivers/stanford_research
Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
from qcodes import VisaInstrument, validators as vals
2+
3+
4+
class SRS_SG384(VisaInstrument):
5+
"""
6+
This is the code for SG384 RF Signal Generator
7+
Status: beta version
8+
Includes the essential commands from the manual
9+
"""
10+
def __init__(self, name, address, reset=False, **kwargs):
11+
super().__init__(name, address, terminator='\n', **kwargs)
12+
# signal synthesis commands
13+
self.add_parameter(name='frequency',
14+
label='Frequency',
15+
unit='Hz',
16+
get_cmd='FREQ?',
17+
set_cmd='FREQ {:.3f}',
18+
get_parser=float,
19+
vals=vals.Numbers(min_value=9.5e5,
20+
max_value=4.05e9))
21+
self.add_parameter(name='phase',
22+
label='Carrier phase',
23+
unit='deg',
24+
get_cmd='PHAS?',
25+
set_cmd='PHAS {:.1f}',
26+
get_parser=float,
27+
vals=vals.Numbers(min_value=-360, max_value=360))
28+
self.add_parameter(name='amplitude_LF',
29+
label='Power of BNC output',
30+
unit='dBm',
31+
get_cmd='AMPL?',
32+
set_cmd='AMPL {:.2f}',
33+
get_parser=float,
34+
vals=vals.Numbers(min_value=-47, max_value=13))
35+
self.add_parameter(name='amplitude_RF',
36+
label='Power of type-N RF output',
37+
unit='dBm',
38+
get_cmd='AMPR?',
39+
set_cmd='AMPR {:.2f}',
40+
get_parser=float,
41+
vals=vals.Numbers(min_value=-110, max_value=16.5))
42+
self.add_parameter(name='amplitude_HF',
43+
label='Power of RF doubler output',
44+
unit='dBm',
45+
get_cmd='AMPH?',
46+
set_cmd='AMPH {:.2f}',
47+
get_parser=float,
48+
vals=vals.Numbers(min_value=-10, max_value=13))
49+
self.add_parameter(name='amplitude_clock',
50+
label='Rear clock output',
51+
unit='Vpp',
52+
get_cmd='AMPC?',
53+
set_cmd='AMPC {:.2f}',
54+
get_parser=float,
55+
vals=vals.Numbers(min_value=0.4, max_value=1.00))
56+
self.add_parameter(name='noise_mode',
57+
label='RF PLL loop filter mode',
58+
get_cmd='NOIS?',
59+
set_cmd='NOIS {}',
60+
val_mapping={'Mode 1': 0,
61+
'Mode 2': 1})
62+
self.add_parameter(name='enable_RF',
63+
label='Type-N RF output',
64+
get_cmd='ENBR?',
65+
set_cmd='ENBR {}',
66+
val_mapping={'OFF': 0,
67+
'ON': 1})
68+
self.add_parameter(name='enable_LF',
69+
label='BNC output',
70+
get_cmd='ENBL?',
71+
set_cmd='ENBL {}',
72+
val_mapping={'OFF': 0,
73+
'ON': 1})
74+
self.add_parameter(name='enable_HF',
75+
label='RF doubler output',
76+
get_cmd='ENBH?',
77+
set_cmd='ENBH {}',
78+
val_mapping={'OFF': 0,
79+
'ON': 1})
80+
self.add_parameter(name='enable_clock',
81+
label='Rear clock output',
82+
get_cmd='ENBC?',
83+
set_cmd='ENBC {}',
84+
val_mapping={'OFF': 0,
85+
'ON': 1})
86+
self.add_parameter(name='offset_clock',
87+
label='Rear clock offset voltage',
88+
unit='V',
89+
get_cmd='OFSC?',
90+
set_cmd='OFSC {}',
91+
get_parser=float,
92+
vals=vals.Numbers(min_value=-2, max_value=2))
93+
self.add_parameter(name='offset_rearDC',
94+
label='Rear DC offset voltage',
95+
unit='V',
96+
get_cmd='OFSD?',
97+
set_cmd='OFSD {}',
98+
get_parser=float,
99+
vals=vals.Numbers(min_value=-10, max_value=10))
100+
self.add_parameter(name='offset_bnc',
101+
label='Low frequency BNC output',
102+
unit='V',
103+
get_cmd='OFSL?',
104+
set_cmd='OFSL {}',
105+
get_parser=float,
106+
vals=vals.Numbers(min_value=-1.5, max_value=1.5))
107+
# Modulation commands
108+
self.add_parameter(name='modulation_coupling',
109+
label='External modulation input coupling',
110+
get_cmd='COUP?',
111+
set_cmd='COUP {}',
112+
val_mapping={'AC': 0,
113+
'DC': 1})
114+
self.add_parameter(name='FM_deviation',
115+
label='Frequency modulation deviation',
116+
unit='Hz',
117+
get_cmd='FDEV?',
118+
set_cmd='FDEV {:.1f}',
119+
get_parser=float,
120+
vals=vals.Numbers(min_value=0.1, max_value=32e6))
121+
self.add_parameter(name='modulation_function',
122+
label='Modulation function for AM/FM/PhiM',
123+
get_cmd='MFNC?',
124+
set_cmd='MFNC {}',
125+
val_mapping={'Sine': 0,
126+
'Ramp': 1,
127+
'Triangle': 2,
128+
'Square': 3,
129+
'Noise': 4,
130+
'External': 5})
131+
self.add_parameter(name='enable_modulation',
132+
get_cmd='MODL?',
133+
set_cmd='MODL {}',
134+
val_mapping={'OFF': 0,
135+
'ON': 1})
136+
self.add_parameter(name='modulation_rate',
137+
get_cmd='RATE?',
138+
set_cmd='RATE {:.6f}',
139+
get_parser=float,
140+
vals=vals.Numbers(min_value=1e-6, max_value=50e3))
141+
self.add_parameter(name='modulation_type',
142+
label='Current modulation type',
143+
get_cmd='TYPE?',
144+
set_cmd='TYPE {}',
145+
val_mapping={'AM': 0,
146+
'FM': 1,
147+
'Phi': 2,
148+
'Sweep': 3,
149+
'Pulse': 4,
150+
'Blank': 5,
151+
'IQ': 6})
152+
self.connect_message()

0 commit comments

Comments
 (0)