Skip to content

Commit

Permalink
Merge pull request #168 from jakeogh/MultiType_with_default_combiner_arg
Browse files Browse the repository at this point in the history
Tektronix/AFG3000: use MultiType with combiner argument
  • Loading branch information
jenshnielsen authored Oct 12, 2022
2 parents a34b69f + 6c89a14 commit bea3daf
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 20 deletions.
42 changes: 23 additions & 19 deletions qcodes_contrib_drivers/drivers/Tektronix/AFG3000.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

class AFG3000(VisaInstrument):
"""Qcodes driver for Tektronix AFG3000 series arbitrary function generator.
Not all instrument functionality is included here.
"""

Expand Down Expand Up @@ -51,14 +51,14 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=str,
set_cmd=f'OUTPut{src}:POLarity {{}}',
vals=vals.Enum('NORMal', 'NORM', 'INVerted', 'INV')
)
)
self.add_parameter(
name=f'state_output{src}',
label=f'Output {src} state',
get_cmd=f'OUTPut{src}:STATe?',
set_cmd=f'OUTPut{src}:STATe {{}}',
val_mapping=on_off_map
)
)

# Amplitude modulation
self.add_parameter(
Expand All @@ -68,7 +68,9 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_cmd=f'SOURce{src}:AM:DEPTh?',
get_parser=float,
set_cmd=f'SOURce{src}:AM:DEPTh {{}}PCT',
vals=vals.PermissiveMultiples(divisor=0.1) # TODO min_value=0, max_value=120
vals=vals.MultiType(vals.Numbers(min_value=0, max_value=120),
vals.PermissiveMultiples(divisor=0.1),
combiner='AND')
)

# Frequency modulation
Expand Down Expand Up @@ -113,8 +115,10 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_cmd=f'SOURce{src}:{mod_type}:INTernal:FREQuency?',
get_parser=float,
set_cmd=f'SOURce{src}:{mod_type}:INTernal:FREQuency {{}}Hz',
vals=vals.PermissiveMultiples(divisor=1e-3) # TODO min_value=2e-3, max_value=5e4
)
vals=vals.MultiType(vals.Numbers(min_value=2e-3, max_value=5e4),
vals.PermissiveMultiples(divisor=1e-3),
combiner='AND')
)
self.add_parameter(
name=f'{mod_type.lower()}_internal_function{src}',
label=f'Source {src} {mod_type} interal function',
Expand All @@ -131,7 +135,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
'USER', 'USER1', 'USER2', 'USER3', 'USER4',
'EMEMory', 'EMEM',
'EFILe', 'EFIL')
)
)
self.add_parameter(
name=f'{mod_type.lower()}_internal_efile{src}',
label=f'Source {src} {mod_type} interal EFile',
Expand Down Expand Up @@ -210,9 +214,9 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=str,
set_cmd=f'SOURce{src}:COMBine:FEED {{}}',
vals=vals.Enum(combine_enum)
)
)

# Frequency controls
# Frequency controls
self.add_parameter(
name=f'center_freq{src}',
label=f'Source {src} center frequency',
Expand All @@ -228,7 +232,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_cmd=f'SOURce{src}:FREQuency:CONCurrent?',
set_cmd=f'SOURce{src}:FREQuency:CONCurrent {{}}',
val_mapping=on_off_map
)
)
self.add_parameter(
name=f'freq_cw{src}',
label=f'Source {src} continuous frequency',
Expand Down Expand Up @@ -283,7 +287,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=float,
set_cmd=f'SOURce{src}:FSKey:FREQuency {{}}Hz',
vals=vals.Numbers()
)
)
self.add_parameter(
name=f'fsk_internal_rate{src}',
label=f'Source {src} FSK internal rate',
Expand Down Expand Up @@ -343,7 +347,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
'USER', 'USER1', 'USER2', 'USER3', 'USER4',
'EMEMory', 'EMEM',
'EFILe', 'EFIL',
'USER', 'USER1',
'USER', 'USER1',
'USER2', 'USER3', 'USER4',
'EMEMory', 'EMEM',
'EFILe', 'EFIL')
Expand All @@ -369,7 +373,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=float,
set_cmd=f'SOURce{src}:PULSe:DCYCle {{}}PCT',
vals=vals.Numbers(1e-3, 99.999)
)
)
self.add_parameter(
name=f'pulse_delay{src}',
label=f'Source {src} pulse delay',
Expand Down Expand Up @@ -433,7 +437,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=float,
set_cmd=f'SOURce{src}:SWEep:HTIMe {{}}s',
vals=vals.Numbers()
)
)
self.add_parameter(
name=f'sweep_mode{src}',
label=f'Source {src} sweep mode',
Expand All @@ -450,7 +454,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=float,
set_cmd=f'SOURce{src}:SWEep:RTIMe {{}}s',
vals=vals.Numbers()
)
)
self.add_parameter(
name=f'sweep_spacing{src}',
label=f'Source {src} sweep spacing',
Expand All @@ -469,14 +473,14 @@ def __init__(self, name: str, address: str, **kwargs: Any):
vals=vals.Numbers(1e-3, 300)
)

# Voltage parameters
# Voltage parameters
self.add_parameter(
name=f'voltage_concurrent{src}',
label=f'Source {src} concurrent voltage',
get_cmd=f'SOURce{src}:VOLTage:CONCurrent:STATe?',
set_cmd=f'SOURce{src}:VOLTage:CONCurrent:STATe {{}}',
val_mapping=on_off_map
)
)
self.add_parameter(
name=f'voltage_high{src}',
label=f'Source {src} high voltage level',
Expand All @@ -485,7 +489,7 @@ def __init__(self, name: str, address: str, **kwargs: Any):
get_parser=float,
set_cmd=f'SOURce{src}:VOLTage:LEVel:IMMediate:HIGH {{}}V',
vals=vals.Numbers()
)
)
self.add_parameter(
name=f'voltage_low{src}',
label=f'Source {src} low voltage level',
Expand Down Expand Up @@ -691,4 +695,4 @@ def upload_waveform(self, waveform: Sequence[float], memory: int):

class AFG3252(AFG3000):
pass

2 changes: 1 addition & 1 deletion setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ zip_safe = False
packages = find:
python_requires = >=3.8
install_requires =
qcodes>=0.29.0
qcodes>=0.33.0
versioningit>=1.1.0

[options.extras_require]
Expand Down

0 comments on commit bea3daf

Please sign in to comment.