Сгенерируйте ширину импульса модулируемые сигналы Используя устройства NI

В этом примере показано, как сгенерировать ширину импульса модулируемый сигнал управлять шаговым двигателем.

Создайте встречный Выходной канал

Используйте daq создать DataAcquisition. Используйте addoutput чтобы добавить встречный выход образовывают канал с PulseGeneration тип измерения и addinput чтобы добавить аналоговый вход образовывают канал, чтобы контролировать импульс, сгенерированный встречным выходным каналом. В данном примере используйте шасси NI c9178 CompactDAQ и модуль NI 9402 с ID cDAQ1Mod5 для импульсной генерации и NI 9205 с ID cDAQ1Mod1 для входа напряжения.

dq = daq("ni");
addinput(dq,"cDAQ1Mod1", "ai0", "Voltage");
ctr = addoutput(dq,"cDAQ1Mod5", "ctr0", "PulseGeneration");
dq.Channels
ans = 

    Index    Type      Device       Channel    Measurement Type           Range                 Name      
    _____    ____    ___________    _______    _________________    __________________    ________________

      1      "ai"    "cDAQ1Mod1"    "ai0"      "Voltage (Diff)"     "-10 to +10 Volts"    "cDAQ1Mod1_ai0" 
      2      "co"    "cDAQ1Mod5"    "ctr0"     "PulseGeneration"    "n/a"                 "cDAQ1Mod5_ctr0"

Определите терминал встречного Выходного канала

Чтобы соединить выходной сигнал с правильным терминалом, исследуйте Terminal свойство встречного канала. Терминал определяется оборудованием.

ctr.Terminal
ans =

    'PFI0'

Синхронизированный встречный Выход

Используйте встречный выходной канал 0, чтобы сгенерировать фиксированную ширину импульса модулируемый сигнал на терминале PFI0. Инициируйте двигатель после 0,5 секунд с 75%-м рабочим циклом.

ctr.Frequency = 10;
ctr.InitialDelay = 0.5;
ctr.DutyCycle = 0.75;

% StartForeground returns data for input channels only. The data variable
% will contain one column of data.
start(dq, "Duration", seconds(1));

while dq.Running
    pause(0.1);
end

data = read(dq, seconds(1));
plot(data.Time, data.Variables);