UHFLI

We use the tk.UHFLI instrument driver for the UHFLI Lock-In amplifier.

[1]:
import zhinst.toolkit as tk

uhfli = tk.UHFLI("uhf1", "dev2324", interface="1GbE", host="10.42.0.226")
uhfli.setup() # set up data server connection
uhfli.connect_device() # connect device to data server
Successfully connected to data server at 10.42.0.2268004 api version: 6
Successfully connected to device DEV2324 on interface 1GBE

Nodetree

Access the UHFLI’s nodetree:

[2]:
uhfli.nodetree
[2]:
<zhinst.toolkit.control.nodetree.Nodetree object at 0x0000022F6E0D3248>
nodes:
 - stats
 - oscs
 - demods
 - extrefs
 - triggers
 - status
 - dio
 - auxin
 - scope
 - system
 - sigins
 - sigouts
 - mods
 - boxcars
 - outputpwas
 - inputpwas
 - aucarts
 - aupolars
 - pids
 - features
 - auxouts
 - cnts
 - awg
parameters:
 - clockbase

The Parameter sample of the demodulators uses the getSample(...) method of the ziPython API to read the latest sample of the demodulator.

[5]:
uhfli.nodetree.demods[0].sample()
execution-count

5

(0.3503776722265319-0.024019806656525276j)

⚠️ Note that this parameter only returns a single sample. There is no guarantee for any precise time-relation between consecutive samples. For proper (triggered) data acquisition of signals aligned to a precise time-grid, please use the Data Acquisition Module (see below).

The Data Acquisition Module of the UHFLI

Similarly to the MFLI, the UHFLI comes with a Data Acquisition Module. For more details, see the corresponding example about the Data Acquisition Module.

[6]:
uhfli.daq
[6]:
<zhinst.toolkit.control.drivers.uhfli.DAQModule object at 0x0000022F73875748>

signals:
parameters:
 - awgcontrol
 - bandwidth
 - bitmask
 - bits
 - buffercount
 - buffersize
 - clearhistory
 - count
 - delay
 - device
 - duration
 - edge
 - enable
 - endless
 - eventcount_mode
 - fft_absolute
 - fft_window
 - findlevel
 - flags
 - forcetrigger
 - grid_cols
 - grid_direction
 - grid_mode
 - grid_overwrite
 - grid_repetitions
 - grid_rowrepetition
 - grid_rows
 - grid_waterfall
 - historylength
 - holdoff_count
 - holdoff_time
 - hysteresis
 - level
 - preview
 - pulse_max
 - pulse_min
 - refreshrate
 - save_csvlocale
 - save_csvseparator
 - save_directory
 - save_fileformat
 - save_filename
 - save_save
 - save_saveonread
 - spectrum_autobandwidth
 - spectrum_enable
 - spectrum_frequencyspan
 - spectrum_overlapped
 - triggered
 - triggernode
 - type

The method signals_list() shows the available sources of streaming signals. Note that they differ with the installed options of the UHFLI.

[8]:
uhfli.daq.signals_list()
[8]:
['dio0',
 'auxin0',
 'scope0',
 'boxcar0',
 'boxcar1',
 'outputpwa0',
 'outputpwa1',
 'inputpwa0',
 'inputpwa1',
 'aucart0',
 'aucart1',
 'aupolar0',
 'aupolar1',
 'cnt0',
 'cnt1',
 'cnt2',
 'cnt3',
 'demod0',
 'demod1',
 'demod2',
 'demod3',
 'demod4',
 'demod5',
 'demod6',
 'demod7',
 'pid0_value',
 'pid0_error',
 'pid0_shift',
 'pid1_value',
 'pid1_error',
 'pid1_shift',
 'pid2_value',
 'pid2_error',
 'pid2_shift',
 'pid3_value',
 'pid3_error',
 'pid3_shift']

The Sweeper Module of the UHFLI

The UHFLI also feeatures a Sweeper Module with all of the following Parameters:

[9]:
uhfli.sweeper
[9]:
<zhinst.toolkit.control.drivers.uhfli.SweeperModule object at 0x0000022F73CA3888>

signals:
parameters:
 - averaging_sample
 - averaging_tc
 - averaging_time
 - awgcontrol
 - bandwidth
 - bandwidthcontrol
 - bandwidthoverlap
 - clearhistory
 - device
 - endless
 - gridnode
 - historylength
 - loopcount
 - maxbandwidth
 - omegasuppression
 - order
 - phaseunwrap
 - remainingtime
 - samplecount
 - save_csvlocale
 - save_csvseparator
 - save_directory
 - save_fileformat
 - save_filename
 - save_save
 - save_saveonread
 - scan
 - settling_inaccuracy
 - settling_tc
 - settling_time
 - sincfilter
 - start
 - stop
 - xmapping

As for the Data Acquisition Module the available signal sources can be shown with signals_list(...). They can differ depending on the options installed in the instrument.

[10]:
uhfli.sweeper.signals_list()
[10]:
['dio0',
 'auxin0',
 'scope0',
 'boxcar0',
 'boxcar1',
 'outputpwa0',
 'outputpwa1',
 'inputpwa0',
 'inputpwa1',
 'aucart0',
 'aucart1',
 'aupolar0',
 'aupolar1',
 'cnt0',
 'cnt1',
 'cnt2',
 'cnt3',
 'demod0',
 'demod1',
 'demod2',
 'demod3',
 'demod4',
 'demod5',
 'demod6',
 'demod7',
 'pid0_value',
 'pid0_error',
 'pid0_shift',
 'pid1_value',
 'pid1_error',
 'pid1_shift',
 'pid2_value',
 'pid2_error',
 'pid2_shift',
 'pid3_value',
 'pid3_error',
 'pid3_shift']

The Parameters that are available for sweeping can be listed with sweep_parameter_list().

[12]:
uhfli.sweeper.sweep_parameter_list()
[12]:
['auxout1_offset',
 'auxout2_offset',
 'auxout3_offset',
 'auxout4_offset',
 'awg_amplitude1',
 'awg_amplitude2',
 'awg_trigger1',
 'awg_trigger2',
 'awg_trigger3',
 'awg_trigger4',
 'awg_triggerlevel1',
 'awg_triggerlevel2',
 'awg_userreg1',
 'awg_userreg2',
 'awg_userreg3',
 'awg_userreg4',
 'awg_userreg5',
 'awg_userreg6',
 'awg_userreg7',
 'awg_userreg8',
 'awg_userreg9',
 'awg_userreg10',
 'awg_userreg11',
 'awg_userreg12',
 'awg_userreg13',
 'awg_userreg14',
 'awg_userreg15',
 'awg_userreg16',
 'boxcar1_windowsize',
 'boxcar1_windowstart',
 'boxcar2_windowsize',
 'boxcar2_windowstart',
 'mod1_carrieramp',
 'mod1_index',
 'mod1_sideband1amp',
 'mod1_sideband2amp',
 'mod2_carrieramp',
 'mod2_index',
 'mod2_sideband1amp',
 'mod2_sideband2amp',
 'demdod1_phase',
 'demdod2_phase',
 'demdod3_phase',
 'demdod4_phase',
 'demdod5_phase',
 'demdod6_phase',
 'demdod7_phase',
 'demdod8_phase',
 'frequency1',
 'frequency2',
 'frequency3',
 'frequency4',
 'frequency5',
 'frequency6',
 'frequency7',
 'frequency8',
 'pid1_setpoint',
 'pid2_setpoint',
 'pid3_setpoint',
 'pid4_setpoint',
 'output1_amp',
 'output1_offset',
 'output2_amp',
 'output2_offset']