Этот пример показывает, как управлять шаговым двигателем, используя цифровые выходные порты.
Использование daqlist
для обнаружения устройств. Этот пример использует National Instruments ™ ® ELVIS II с идентификатором Dev2
.
d = daqlist
d = 12×5 table VendorID DeviceID Description Model DeviceInfo ________ ___________ __________________________________ _____________ ____________________ "ni" "cDAQ1Mod1" "National Instruments NI 9205" "NI 9205" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod2" "National Instruments NI 9263" "NI 9263" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod3" "National Instruments NI 9234" "NI 9234" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod4" "National Instruments NI 9201" "NI 9201" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod5" "National Instruments NI 9402" "NI 9402" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod6" "National Instruments NI 9213" "NI 9213" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod7" "National Instruments NI 9219" "NI 9219" [1×1 daq.DeviceInfo] "ni" "cDAQ1Mod8" "National Instruments NI 9265" "NI 9265" [1×1 daq.DeviceInfo] "ni" "Dev1" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "ni" "Dev2" "National Instruments NI ELVIS II" "NI ELVIS II" [1×1 daq.DeviceInfo] "ni" "Dev3" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo] "ni" "Dev4" "National Instruments PCIe-6363" "PCIe-6363" [1×1 daq.DeviceInfo]
d{10, "DeviceInfo"}
ans = ni: National Instruments NI ELVIS II (Device ID: 'Dev2') Analog input supports: 7 ranges supported Rates from 0.0 to 1250000.0 scans/sec 16 channels ('ai0' - 'ai15') 'Voltage' measurement type Analog output supports: -5.0 to +5.0 Volts,-10 to +10 Volts ranges Rates from 0.0 to 2857142.9 scans/sec 2 channels ('ao0','ao1') 'Voltage' measurement type Digital IO supports: 39 channels ('port0/line0' - 'port2/line6') 'InputOnly','OutputOnly','Bidirectional' measurement types Counter input supports: Rates from 0.1 to 80000000.0 scans/sec 2 channels ('ctr0','ctr1') 'EdgeCount' measurement type Counter output supports: Rates from 0.1 to 80000000.0 scans/sec 2 channels ('ctr0','ctr1') 'PulseGeneration' measurement type
Этот пример использует двигатель 20M020D1U Portescap (5 В, 18 степени униполярный шаговый). Сигналы TTL, производимые цифровым вводом-выводом системой, усиливаются ULN2003AIN приборов Техаса (высокое напряжение, высокий ток Пары Дарлингтона массива), как показано на этой схеме:
Создайте DataAcquisition и добавьте 4 цифровых канала на порт 0, линии 0-3. Установите тип измерения равным OutputOnly
. Они соединяются с 4 линиями управления для шагового двигателя.
dq = daq("ni"); addoutput(dq,"Dev2","port0/line0:3","Digital")
Warning: Added channel does not support clocked sampling: clocked operations are disabled. Only on-demand operations are allowed.
Смотрите схему проводки двигателя Portescap, описывающую последовательность 4-разрядных шаблонов. Послать этот шаблон последовательно к двигателю, чтобы произвести движение против часовой стрелки. Каждый шаг поворачивает двигатель на 18 степени. Каждый цикл из 4 шагов поворачивает двигатель на 72 степени. Повторите этот цикл пять раз, чтобы повернуть двигатель на 360 степени.
step1 = [1 0 1 0]; step2 = [1 0 0 1]; step3 = [0 1 0 1]; step4 = [0 1 1 0];
Использование write
для вывода последовательности поворота двигателя на 72 степени против часовой стрелки.
write(dq,step1); write(dq,step2); write(dq,step3); write(dq,step4);
Повторите последовательность 50 раз, чтобы повернуть двигатель 10 раз против часовой стрелки.
for motorstep = 1:50 write(dq,step1); write(dq,step2); write(dq,step3); write(dq,step4); end
Чтобы повернуть двигатель на 72 степени по часовой стрелке, измените порядок шагов назад.
write(dq,step4); write(dq,step3); write(dq,step2); write(dq,step1);
После того, как вы используете двигатель, отключите все линии, чтобы позволить мотору вращаться свободно.
write(dq,[0 0 0 0]);