Управляйте Шаговым двигателем с помощью Цифровых выходов

В этом примере показано, как управлять шаговым двигателем с помощью портов цифрового выхода.

Узнайте устройства, поддерживающие цифровой выход

Чтобы обнаружить устройство, которое поддерживает цифровой выход:

  • Выпустите 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]);
Для просмотра документации необходимо авторизоваться на сайте