关于matlab控制arduino板实现电机正反转控制

一、相关函数

首先定义板子: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通信,这个部分后面会再学习,并进一步更新

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值