Сбор и генерация данных в одно и то же время с цифровым аналоговым обнаружением

В этом примере показано, как синхронно генерировать и получать данные о напряжении со скоростью 300 кГц.

Цифровое устройство обнаружения

Обнаружение устройств Digilent, подключенных к вашей системе с помощью 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]

Создайте DataAcquisition для цифрового устройства

Обнаружение устройств Digilent, подключенных к вашей системе с помощью 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

Добавление аналогового выходного канала

Добавьте аналоговый выходной канал с помощью перечисленного устройства Digilent с идентификатором AD1, идентификатор канала 1, и тип измерения 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"

Добавление аналогового входного канала

Добавьте аналоговый входной канал с тем же устройством и типом измерения 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"

Установите свойства DataAcquisition и задайте Выход сигнал

Установите частоту генерации 300 кГц.

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)';

Генерация и сбор данных

Сгенерируйте синусоиду с амплитудой 1 В по каналу 1 и амплитудой 2 В по каналу 2 и получайте размеченные по времени данные с той же скоростью.

[data, startTime] = readwrite(dq, [output 2*output]);

Построение графика полученных данных

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)])