Счетчик импульсов на цифровом сигнале с использованием NI-устройств

Этот пример показывает, как определить скорость вращения контроллера Anaheim Automation Motor путем подсчета количества восходящих ребер в сигнале. Контроллер возвращает импульсы эффекта Холла (квадратные волны), которые служат частотной обратной связью для скоростей вращения двигателя.

Создайте входной канал счетчика

Использование daq создание DataAcquisition и addinput чтобы добавить входной канал счетчика с EdgeCount тип измерения. В данном примере используйте корпус CompactDAQ NI c9178 и модуль NI 9402 с идентификационными cDAQ1Mod5.

dq = daq("ni");
ch = addinput(dq,"cDAQ1Mod5", "ctr0", "EdgeCount");
ch
ch = 

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

      1      "ci"    "cDAQ1Mod5"    "ctr0"       "EdgeCount"       "n/a"    "cDAQ1Mod5_ctr0"

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

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

ch.Terminal
ans =

    'PFI0'

Чтение канала счетчика

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

read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          3       

pause(0.1);
read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          14      

pause(0.1);
read(dq)
ans =

  timetable

    Time     cDAQ1Mod5_ctr0
    _____    ______________

    0 sec          27      

Измерение оборотов в секунду

Подсчитайте количество импульсов путем сброса счетчика на нуль, приостановите на одну секунду и считайте счетчик. Эффекты холла ориентированы каждые 120 степени и генерируют три импульса квадратной волны для каждого вращения.

resetcounters(dq);
pause(1);
read(dq, "OutputFormat", "Matrix")/3
ans =

   33.6667

Используйте аппаратные часы для более высокой точности

Аппаратные часы очень точны. Используйте аппаратные часы, чтобы получить несколько измерений счетчика. Для устройств счетчика NI требуется внешний синхроимпульс. Путем добавления аналогового входного канала для модуля на том же корпусе, DataAcquisition использует внутренние часы с обоими модулями.

dq = daq("ni");
addinput(dq,"cDAQ1Mod1", "ai0", "Voltage");
addinput(dq,"cDAQ1Mod5", "ctr0", "EdgeCount");
data = read(dq, seconds(0.25));
plot(data.Time, data.Variables);