一、相关函数
首先定义板子:a=arduino()
1.writePWMVoltage() 在PWM引脚上产生具有指定电压的PWM信号
writePWMVoltage(a,'D3',4) %在数字引脚3上产生4V的PWM信号,一般arduino uno的电压为0-5V
2.writePWMDutyCycle() 在PWM引脚上产生具有指定电压的PWM信号
writePWMDutyCycle(a,'D3',0.1);% PWM调节占空比,0~1之间
3.configurePin()设置引脚
configurePin(a,"D10","DigitalOutput");%设置数字引脚10为数字输出口
4.writeDigitalPin() 输出数字信号
writeDigitalPin(a,'D3',1);% 设置数字口3为高电平,1表示高电平,0表示低电平
二、电机正反转控制
以下程序为驱动电机正反转,由于我的驱动器采用的是双脉冲模式,即PUL为顺时针旋转IO口,DIR为逆时针旋转IO口,所以正反转只需要对不同引脚进行脉冲输出即可。而如果采用的是单脉冲模式驱动器,则PUL做脉冲输出,DIR设定方向即可。同样用writeDigitalPin函数进行高低电平输出。
clear all
close all
a=arduino('COM3')
PUL='D10';%顺时针转IO接口
DIR='D9';%逆时针转IO接口
configurePin(a,"D10","DigitalOutput");%设置其为数字输出口
configurePin(a,"D9","DigitalOutput");%设置其为数字输出口
%逆时针转1圈
for i=1:400
writeDigitalPin(a,DIR,1); % 令pin 输出为高电平
writeDigitalPin(a,DIR,0); % 令pin 输出为低电平
end
pause(2)
% 顺时针转动1圈
for i=1:800
writeDigitalPin(a,PUL,1); % 令pin 输出为高电平
writeDigitalPin(a,PUL,0); % 令pin 输出为低电平
end
注意:这个会存在一个小问题,暂时还没有解决,就是转速问题。由于writeDigitalPin函数调用一次需要花接近0.3s的时间,则电机的转速会比较慢,脉冲周期接近0.6s,相当于频率只有1.6Hz,而采用延时的话只能加大周期,减小频率,使速度更慢,所以如果对转速有要求,还是只能采用arduino去进行编译可参考Ardunio建立电机类控制步进电机转角与转向、转速_唐豆豆*的博客-CSDN博客,使用串口进行matlab与arduino通信,这个部分后面会再学习,并进一步更新