В этом примере показано, как управлять шаговым двигателем с помощью портов цифрового выхода.
Используйте daqlist
обнаружить устройства. Этот пример использует Национальный Instruments® ELVIS II с ID 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
Этот пример использует Portescap 20M020D1U двигатель (5 В, 18 степеней униполярный степпер). Сигналы TTL, произведенные цифровой системой ввода-вывода, усилены Texas Instruments 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]);