LabOne Software Trigger as a tool for multichannel mapping applications

In earlier blogs, we presented several methods to synchronize data acquisition with third party instruments, either via the DIO input as a Hardware trigger (TTL pulse), some gated triggering scheme for pass/fail analysis or to capture only transient phenomena in a longer data stream (ring down method example).

Here I would like to go further and provide a recipe for multichannel image acquisition for applications in Scanning Probe Microscopy (SPM), Laser voltage imaging (LVI), or any imaging technique where the data from Zurich Instruments’ Lock-in needs to be mapped to the X,Y coordinates of an external scan generator. In practice, this technique can be used to simultaneously obtain data from many sources such as the instrument’s demodulators, Boxcar Averager and PLL/PID, all aligned with the same timestamp. Multichannel data streaming enables not only a significant speed enhancement of the data recording, but also the universal timebase simplifying the search for cross-correlated data among the different data streams.

All LabOne users can take advantage of this feature even without any option enabled as it is part of the standard LabOne integrated toolset. This tab can be loaded from the following icon:

SW trigger

SW trigger

Line-by-line data alignment

Starting from the record button in LabOne (cf Config tab), all demodulated data and auxiliary inputs can be saved continuously at the specified data transfer rate with the same timestamp for post-data processing. This timestamp is however valid for demodulated and Aux Input samples only. If we display this data in the Plotter, it would look like this as a function of time :

Plotter with backlash

Here we see many simultaneous traces (all demodulated Amplitude and Phase), as well as the fast scan axis (sawtooth like shape for every forward & backward line) but also some unsolicited spikes in the signal when the scanner changes direction (pointing arrow in the above screen capture). In term of scan line visualization, it quickly becomes inconvenient to compare one line with the next as the rolling data is constantly moving.

For smarter data alignment, especially when backlash, creep or other unsolicited response from let say a piezotube scanner needs to be discarded, it is more convenient to visualize the scanned data line-by-line by specifying the exact start and stop recording condition. This kind of data alignment can easily be achieved using LabOne’s Software (SW) trigger, which can record segments of data (of a defined duration) when the specified trigger condition is met. This allows aligning all data streams, using different triggering conditions from internal or external signals. Please note, that because of the initial trigger event, all data are now saved with the same universal timestamp. In case of imaging, the line trigger at the end of every line, provided by an external scan generator can be used for the alignment of all internally generated signals such as Demodulators, Aux In but also all PID loops (error, shift, value) as well as Boxcar or PWA output. The same data seen in the plotter above would now look like this in the SW trigger tab:

SW trigger traces (click to enlarge and see parameter settings)

Now all the segments recorded by the SW trigger are superimposed. It also provides a realtime monitoring during scanning of all traces, where every line is displayed one after the other for every trigger shot, let say 512 lines for a complete image. It is good to convince ourselves of proper data alignment by checking that all forward & backward traces coincide, which is done by displaying again the fast scan axis on Aux Input and making sure that all traces indeed superposed on top of each other. This can also be used to match the trigger’s initial delay (positive or negative in case of pre-trigger) and record duration to coincide exactly with one line scan.

At the end of the scan, the complete data set can be stored as a Matlab multidimensional array (.mat file) for post-data processing. The saving and processing of 32 images does not require more effort than a single one. Loading and assembling the SW trigger data to generate images can be achieved using very minimal Matlab code, as demonstrated in Daniel’s blog. This method was used in real measuring conditions for the simultaneous acquisition of 7 harmonics components and subsequent inverse Fourier transform (iFFT) to improve SNR of a time trace.

Image reconstruction: first 7 harmonic amplitudes

Since many more signals from the MFLI, HF2LI or UHFLI can be generated than the amount of physical output available (and possibly external acquisition inputs too), it makes sense to record them all numerically. Just with the 8 demodulators (X,Y or R, Theta) for instance of the UHFLI, already 4 x 8 = 32 images can be acquired in a single scan! As a first data set example, here are the Amplitude (R) images acquired at 7 frequencies at the same location :

We can clearly identify that all sample features are correctly aligned with every images after reconstruction and that starting from the 7th harmonic, the signal strength becomes weaker. Similarly all 7 phases, or X, Y lock-in component could be displayed from the same recorded file but this applications of Laser voltage imaging in the context of Failure Analysis will be addressed in a separate blog.


Even if LabOne is not an imaging software, it is already possible with its internal tools, to visualize the scanned data conveniently line by line as the scan progresses and record a complete data set that corresponds exactly to one scan image, with many channels saved at once. The subsequent data handling is greatly improved and only the necessary amount of data is recorded. It also saves the need for additional acquisition cards or numerous analog inputs to an expansive image processor. The same method can be used also with PLL/PID for SPM applications where frequency shift, dissipation, phase and amplitude at a given eigenmode can be saved without using external auxiliary output.


The data presented here were taken at CNES in Toulouse, France. I’m grateful to Kevin Sanchez and Kevin Melendez for the tests and measurements at their facility and fruitful discussions.