Acquiring and Generating Data at the Same Time with Digilent Analog Discovery
This example shows you how to synchronously generate and acquire voltage data at a rate of 300 kHz.
Discovery Digilent Device
Discover Digilent devices connected to your system using daqlist
daqlist("digilent")
ans =
1×4 table
DeviceID Description Model DeviceInfo
________ _____________________________________________ ____________________ _______________________
"AD1" "Digilent Inc. Analog Discovery 2 Kit Rev. C" "Analog Discovery 2" [1×1 daq.di.DeviceInfo]
Create a DataAcquisition for a Digilent Device
Discover Digilent devices connected to your system using daqlist
dq = daq("digilent")
dq =
DataAcquisition using Digilent Inc. hardware:
Running: 0
Rate: 10000
NumScansAvailable: 0
NumScansAcquired: 0
NumScansQueued: 0
NumScansOutputByHardware: 0
RateLimit: []
Show channels
Show properties and methods
Add an Analog Output Channel
Add an analog output channel using the listed Digilent device with ID AD1, channel ID 1, and measurement type Voltage.
addoutput(dq, "AD1", "1", "Voltage"); addoutput(dq, "AD1", "2", "Voltage"); ch_out = dq.Channels(1:2); ch_out(1).Name = "AD1_1_out"; ch_out(2).Name = "AD1_2_out"
ch_out =
Index Type Device Channel Measurement Type Range Name
_____ ____ ______ _______ _____________________ ____________________ ___________
1 "ao" "AD1" "1" "Voltage (SingleEnd)" "-5.0 to +5.0 Volts" "AD1_1_out"
2 "ao" "AD1" "2" "Voltage (SingleEnd)" "-5.0 to +5.0 Volts" "AD1_2_out"
Add an Analog Input Channel
Add an analog input channel with the same device and measurement type Voltage.
addinput(dq, "AD1", "1", "Voltage"); addinput(dq, "AD1", "2", "Voltage"); ch_in = dq.Channels(3:4); ch_in(1).Name = "AD1_1_in"; ch_in(2).Name = "AD1_2_in"
ch_in =
Index Type Device Channel Measurement Type Range Name
_____ ____ ______ _______ ________________ __________________ __________
1 "ai" "AD1" "1" "Voltage (Diff)" "-25 to +25 Volts" "AD1_1_in"
2 "ai" "AD1" "2" "Voltage (Diff)" "-25 to +25 Volts" "AD1_2_in"
Set DataAcquisition Properties and Define an Output Waveform
Set the generation rate to 300 kHz.
rate = 300e3;
dq.Rate = rate;
% Specify a 10 Hz sine wave for 1 second.
f = 10;
totalduration = 1;
n = totalduration * rate;
t = (1:n)/rate;
output = sin(2*pi*f*t)';
Generate and Acquire Data
Generate a sine wave with amplitude 1 V on channel 1 and amplitude 2 V on channel 2 and acquire timestamped data at the same rate.
[data, startTime] = readwrite(dq, [output 2*output]);
Plot Acquired Data
plot(data.Time, data.AD1_1_in, data.Time, data.AD1_2_in); xlabel('Time (s)'); ylabel('Voltage (V)'); title(['Clocked Data Triggered at: ' datestr(startTime)])
