В этом примере показано, как управлять шаговым двигателем с помощью портов цифрового выхода.
Чтобы обнаружить устройство, которое поддерживает цифровой выход:
Выпустите daq.getDevices в Командном окне.
Нажмите на имя устройства в списке, возвращенном командой.
devices = daq.getDevices
devices = Data acquisition devices: index Vendor Device ID Description ----- ------ --------- -------------------------------- 1 ni cDAQ1Mod1 National Instruments NI 9205 2 ni cDAQ1Mod2 National Instruments NI 9263 3 ni cDAQ1Mod3 National Instruments NI 9234 4 ni cDAQ1Mod4 National Instruments NI 9201 5 ni cDAQ1Mod5 National Instruments NI 9402 6 ni cDAQ1Mod6 National Instruments NI 9213 7 ni cDAQ1Mod7 National Instruments NI 9219 8 ni cDAQ1Mod8 National Instruments NI 9265 9 ni Dev1 National Instruments PCIe-6363 10 ni Dev2 National Instruments NI ELVIS II
Этот пример использует Национальный Instruments® ELVIS II с ID Dev2. Проверьте, что его цифровая подсистема поддерживает OutputOnly тип измерения.
devices(10)
ans =
ni: National Instruments NI ELVIS II (Device ID: 'Dev2')
Analog input subsystem supports:
7 ranges supported
Rates from 0.0 to 1250000.0 scans/sec
16 channels ('ai0' - 'ai15')
'Voltage' measurement type
Analog output subsystem 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 subsystem supports:
39 channels ('port0/line0' - 'port2/line6')
'InputOnly','OutputOnly','Bidirectional' measurement types
Counter input subsystem supports:
Rates from 0.1 to 80000000.0 scans/sec
2 channels ('ctr0','ctr1')
'EdgeCount' measurement type
Counter output subsystem 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 Пары Дарлингтона Тока высокого напряжения Высокого напряжения, как показано в этом схематичном:

Создайте сеанс и добавьте 4 цифровых канала на порте 0, линии 0-3. Установите тип измерения на OutputOnly. Они соединяются с четырьмя линиями управления для шагового двигателя.
s = daq.createSession('ni'); addDigitalChannel(s,'Dev2','port0/line0:3','OutputOnly')
Warning: A channel that does not support clocked sampling was added to the
session. Clocked operations using startForeground and startBackground will be
disabled. Only on-demand operations using inputSingleScan and outputSingleScan
can be done.
ans =
1×604 char array
Data acquisition session using National Instruments hardware:
Clocked operations using startForeground and startBackground are disabled.
Only on-demand operations using inputSingleScan and outputSingleScan can be done.
Number of channels: 4
index Type Device Channel MeasurementType Range Name
----- ---- ------ ----------- --------------- ----- ----
1 dio Dev2 port0/line0 OutputOnly n/a
2 dio Dev2 port0/line1 OutputOnly n/a
3 dio Dev2 port0/line2 OutputOnly n/a
4 dio Dev2 port0/line3 OutputOnly n/a
Обратитесь к моторной монтажной схеме 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];
Используйте outputSingleScan выводить последовательность, чтобы повернуть моторные 72 градуса против часовой стрелки.
outputSingleScan(s,step1); outputSingleScan(s,step2); outputSingleScan(s,step3); outputSingleScan(s,step4);
Повторите последовательность 50 раз, чтобы вращаться моторные 10 раз против часовой стрелки.
for motorstep = 1:50 outputSingleScan(s,step1); outputSingleScan(s,step2); outputSingleScan(s,step3); outputSingleScan(s,step4); end
Чтобы повернуть моторные 72 градуса по часовой стрелке, инвертируйте порядок шагов.
outputSingleScan(s,step4); outputSingleScan(s,step3); outputSingleScan(s,step2); outputSingleScan(s,step1);
После того, как вы используете двигатель, выключаете все линии, чтобы позволить двигателю вращаться свободно.
outputSingleScan(s,[0 0 0 0]);