Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Knowledge Base Home
  • Contact Us
  • Home
  • Moku:Lab
  • Software integrations
  • MATLAB examples

MATLAB: Lock-in Amplifier (plotting)

Written by Paul Cracknell

Updated at December 22nd, 2020

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Moku:Go
    Moku:Go Arbitrary Waveform Generator Moku:Go Data Logger Moku:Go Frequency Response Analyzer Moku:Go Logic Analyzer & Pattern Generator Moku:Go Oscilloscope & Voltmeter Moku:Go PID Controller Moku:Go Spectrum Analyzer Moku:Go Waveform Generator Moku:Go Power Supplies Moku:Go Digital Filter Box Moku:Go FIR Filter Builder Moku:Go Lock-in Amplifier
  • Moku:Lab
    Windows Moku:Lab general Moku:Lab Instruments iPad app Software integrations
  • Moku:Pro
    Moku:Pro Instruments
+ More

Example MATLAB script to implement the Lock-in Amplifier (plotting)

%% Plotting Lock-In Amplifier Example
%
% This example demonstrates how you can configure the lock-in amplifier
% instrument and monitor the signals in real-time.
%
% (c) 2017 Liquid Instruments Pty. Ltd.
%
%% Connect to your Moku
ip = input('Please enter your Moku:Lab IP address: ', 's');

% Connect to your Moku and deploy the desired instrument
m = MokuLockInAmp(ip);

%% Configure the instrument
% Output a 1MHz sine wave but demodulate at a harmonic (2MHz)
m.set_demodulation('internal','frequency',2e6);
m.set_lo_output(1.0,1e6,0);

% Output the 'X' (I) signal and the local-oscillator sine wave on the two
% DAC channels. Configure a PID controller on the main 'X' output with a
% proportional gain of 10x, integrator cross-over of 10Hz and integrator
% saturation at 100x.
m.set_outputs('X','sine')
m.set_pid_by_frequency('main','kp',10,'i_xover',10,'si',100);

% Monitor the I and Q signals from the mixer, before filtering
m.set_monitor('A','I');
m.set_monitor('B','Q');

% Trigger on Monitor 'B' ('Q' signal), rising edge, 0V
m.set_trigger('B','rising', 0, 'hysteresis', 0.01);

% View +-1usec, i.e. trigger in the centre
m.set_timebase(-1e-6,1e-6);

% Get initial data frame to set up the plot
data = m.get_realtime_data();

% Set up the plots
figure
lh = plot(data.time, data.ch1, data.time, data.ch2);
xlabel(gca,'Time (sec)')
ylabel(gca,'Amplitude (V)')

%% Receive and plot new data frames
while 1
 data = m.get_realtime_data();
 set(lh(1),'XData',data.time,'YData',data.ch1);
 set(lh(2),'XData',data.time,'YData',data.ch2);
 axis tight
 pause(0.1)
end
moku:lab

Was this article helpful?

Yes
No

Related Articles

  • MATLAB: Data Logger (streaming)
  • MATLAB: Frequency Response Analyzer (plotting)
  • MATLAB: Arbitrary Waveform Generator
  • MATLAB: Lock-in Amplifier

Sitemap

  • Moku:Lab
  • Instruments
  • Software
  • Company
  • Support
  • Store
  • Terms & Conditions
  • Privacy Policy

Offices

United States
+1 (619) 332-6230
740 Lomas Santa Fe Dr
Suite 102
Solana Beach, CA 92075

Australia
+61 2 6171 9730
243 Northbourne Avenue
Suite 2
Lyneham, ACT 2602

Follow us

Youtube LinkedIn

官方微信

Contact us
© 2021 Liquid Instruments. All rights reserved.

Definition by Author

0
0
Expand