Acquire a Basel DAC sweep with an MFLI¶
In this measurement, the Basel DAC generates the sweep and its synchronization output triggers an MFLI. The sweep tree mirrors that signal flow: the DAC is the root and the lock-in is its acquiring child.
Build the sweep tree¶
from qcdrivers.buffered.basel import NodeBaselDAC
from qcdrivers.buffered.zurich import NodeMFLI
buffered_sweep = {
"instrument": NodeBaselDAC(inst=dac),
"sweeps": [gate_sweep],
"nodes": [
{
"instrument": NodeMFLI(inst=lockin),
"dependent": [lockin_r, lockin_p],
"grid_mode": "exact",
"input_trigger": get_trigger_channel(gate),
"trigger_level": 0.3,
"trigger_delay": 2e-6,
}
],
}
measure.run([buffered_sweep], dependents=[], **run_dict)
The child node settings describe the acquisition:
dependentlists the measured parameters, here amplitude and phase.input_triggerselects the MFLI trigger input connected to the DAC board.grid_mode="exact"requests one acquired sample for every sweep point.trigger_delaycompensates the delay between the DAC update and trigger.
Set the demodulator sample rate high enough for the requested point delay, and close any LabOne DAQ module before starting the run. A stale DAQ session can prevent Qanary from fetching the new acquisition.
For a two-dimensional scan, both sweeps must use the same point delay. Put the
inner sweep last in "sweeps" and select the trigger input driven by that
inner-axis DAC board.
Full example: buffered_basel_with_mfli.py