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

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

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

Используйте daq создать DataAcquisition и addinput чтобы добавить встречный вход образовывают канал с EdgeCount тип измерения. В данном примере используйте шасси NI c9178 CompactDAQ и модуль NI 9402 с ID 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);