采用数字输出控制步进电机
这个例子展示了如何使用数字输出端口控制步进电机。
发现支持数字输出的设备
使用daqlist
发现设备。本例使用带有ID的National Instruments®ELVIS IIDev2
.
D = daqlist
d = 12×5表VendorID的DeviceID DeviceInfo描述模型 ________ ___________ __________________________________ _____________ ____________________ " 倪”“cDAQ1Mod1”“国家仪器ni 9205”“ni 9205”[1×1采集。DeviceInfo] "ni" "cDAQ1Mod2" "美国国家仪器ni 9263" "ni 9263" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod3" "美国国家仪器ni 9234" "ni 9234" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod4" "美国国家仪器ni 9201" "ni 9201" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod5" "美国国家仪器ni 9402" "ni 9402" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod6" "美国国家仪器ni 9213" "ni 9213" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod7" "美国国家仪器ni 9219" "ni 9219" [1×1 daq。DeviceInfo] "ni" "cDAQ1Mod8" "美国国家仪器ni 9265" "ni 9265" [1×1 daq。DeviceInfo] "ni" "Dev1" "美国国家仪器公司pci -6363" " pci -6363" [1×1 daq。DeviceInfo]“倪”“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:国家仪器ni ELVIS II(设备ID: 'Dev2')模拟输入支持:7个范围支持速率从0.0到1250000.0扫描/秒16通道('ai0' - 'ai15')'电压'测量类型模拟输出支持:-5.0到+5.0伏,-10到+10伏范围速率从0.0到2857142.9扫描/秒2通道('ao0','ao1')数字IO支持39个通道('port0/line0' - 'port2/line6')'InputOnly','OutputOnly','双向'测量类型计数器输入支持:速率从0.1到80000000.0扫描/秒2通道('ctr0','ctr1')'EdgeCount'测量类型计数器输出支持:速率从0.1到80000000.0扫描/秒2通道('ctr0','ctr1')'PulseGeneration'测量类型
硬件配置说明
本例使用Portescap 20M020D1U电机(5 V, 18度单极步进)。数字I/O系统产生的TTL信号由德州仪器的ULN2003AIN(高压,大电流达林顿晶体管阵列)放大,如图所示:
添加数字输出通道
创建一个数据采集,并在端口0,行0-3上添加4个数字通道。设置测量类型为OutputOnly
.这些连接到步进电机的4条控制线。
Dq = daq(“倪”);addoutput (dq,“Dev2”,“port0 / line0:3”,“数字”)
警告:添加的通道不支持时钟采样:时钟操作被禁用。只允许按需操作。
定义电机步长
请参阅描述4位模式序列的Portescap电机接线图。将此图案按顺序发送给电机产生逆时针运动。每一步电机旋转18度。每4步循环电机72度。重复此循环5次,使电机360度旋转。
Step1 = [1 0 10 0];Step2 = [1 0 0 1];Step3 = [0 1 0 1];Step4 = [0 1 1 0];
旋转电机
使用写
输出顺序逆时针旋转电机72度。
写(dq,步骤1);写(dq,步骤2);写(dq,步骤3);写(dq step4);
重复50次,逆时针旋转电机10次。
为Motorstep = 1:50 write(dq,step1);写(dq,步骤2);写(dq,步骤3);写(dq step4);结束
要将电机顺时针旋转72度,请反转步骤的顺序。
写(dq step4);写(dq,步骤3);写(dq,步骤2);写(dq,步骤1);
关闭所有输出
使用完电机后,关闭所有线路,让电机自由转动。
写(dq,[0 0 0 0]);