В этом примере показано, как управлять шаговым двигателем с помощью портов цифрового выхода.
Чтобы обнаружить устройство, которое поддерживает цифровой выход:
Выпустите 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]);