电子产业一站式赋能平台

PCB联盟网

搜索
查看: 24|回复: 0
收起左侧

ART-PI PWM舵机使用(RT-Studio平台)

[复制链接]

208

主题

208

帖子

1635

积分

三级会员

Rank: 3Rank: 3

积分
1635
发表于 2020-12-9 00:04:00 | 显示全部楼层 |阅读模式
雷德斯 and枕头们,小飞哥好久没更新文章啦,最近实在是太忙啦,大家久等啦,这次是一个小伙伴想学习下舵机的使用,小飞哥立马到淘宝淘了一款,安排上,废话不多说,来干货,干就完事了!
最近比较忙,仅仅是做了移植,并没有像RTT的框架那样处理,伙伴们先凑合看吧,哈哈。
一、舵机简介(大多摘自网友帖子)
大致介绍下舵机的控制原理,错误之处,多多指教!
控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。当然我们可以不用去了解它的具体工作原理,知道它的控制原理就够了。就象我们使用晶体管一样,知道可以拿它来做开关管或放大管就行了,至于管内的电子具体怎么流动是可以完全不用去考虑的。
舵机的控制:
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。
其中,90度为中立位置,如果脉冲宽度小于1.5毫秒,那么电机轴向朝向0度方向。如果脉冲宽度大于1.5毫秒,轴向就朝向180度方向。以180度舵机为例,对应的控制关系是这样的:
   0.5ms-------------0度;
   1.0ms------------45度;
   1.5ms------------90度(中立位置);
   2.0ms-----------135度;
   2.5ms-----------180度;
看下面形象描述:

amytr0kgxqd64069020519.gif

amytr0kgxqd64069020519.gif

舵机内部的控制电路,电位计(可变电阻器)和电机均被连接到电路板上,如内部结构图的右边部分。控制电路通过电位计可监控舵机的当前角度。如果轴的位置与控制信号相符,那么电机就会关闭。如果控制电路发现这个角度不正确,它就会控制马达转动,直到它达到指定的角度。舵机角度根据制造商的不同而有所不同。比如,一个180度的舵机,它可以在0度至180度之间运动。由于限位装置被安装在主输出装置上,超出这个范围机械结构就不能再转动了。舵机的输出功率与它所需要转动的距离成正比。如果输出轴需要转动很长的距离,马达就会全速运转,如果它只需要短距离转动,马达就会以较慢的速度运行,这叫做速度比例控制。

21mvzroe4xg64069020619.gif

21mvzroe4xg64069020619.gif

二、测试硬件
1、ART-PI开发板
2、舵机

mhju0o5hwja64069020719.png

mhju0o5hwja64069020719.png


cyd2c3jeuaf64069020819.png

cyd2c3jeuaf64069020819.png

老规矩,还是基于RT-Studio的,原理都是一样的,大家看明白就可以啦,RT-Studio平台封了一路PWM,小飞哥没使用,此次使用的是PB0,对应TM3的通道3。

13mqhfhmviq64069020919.png

13mqhfhmviq64069020919.png

我们可以打开任意一个工程,找到CUBEMX创建的工程文件,double click点击打开即可,参看手册或者代码,其实库函数会告诉你很多东西,一定要利用好,TIM3是挂载在APB1时钟线上的,通过CUBEMX时钟树图,我们可以看到,配置的是240MHZ

kffjjxupjih64069021019.png

kffjjxupjih64069021019.png




vxjuuff41ih64069021120.png

vxjuuff41ih64069021120.png


ujt1efclzym64069021220.png

ujt1efclzym64069021220.png

我们需要产生一个周期为20ms的PWM信号,下面对TIM3下的通道3进行配置,选择最后一项

wrgduhu1ruk64069021320.png

wrgduhu1ruk64069021320.png

分频系数选择239,一个clock即为240MHZ/(239+1) = 1us,周期我们选择19999,也即是240MHZ/(239+1)*(19999+1) = 20ms

on3sa1ua3ko64069021420.png

on3sa1ua3ko64069021420.png

建议把CUBEMX文件另存为其他地方,不影响源文件,然后对代码生成就行一下如下面的设置,使得生成的代码层次清晰

jolvjb1und564069021520.png

jolvjb1und564069021520.png

接下来,就开始我们的代码移植到RT-Studio平台上,下图是我们生成的代码关于定时器3的配置内容,只需要把这部分拷贝到RT-Studio平台下即可

guhaaykqtpg64069021620.png

guhaaykqtpg64069021620.png

先在RT-Studio平台已有的工程文件下添加关于PB0映射到TIM3-Channel3的代码,开启PWM时钟配置

swmego13x2464069021720.png

swmego13x2464069021720.png


xm1tke4k0wm64069021820.png

xm1tke4k0wm64069021820.png



kx2cii0t5kf64069021921.png

kx2cii0t5kf64069021921.png

然后在drv_PWM.c文件中添加TIM3的初始化函数,也即是我们刚才代码生成的部分,直接拷贝过来即可,然后我们封装几个函数,在控制台调用,主要是初始化函数,几个时间控制函数,分别如下图所示

yvuts4sf2f264069022021.png

yvuts4sf2f264069022021.png



yuazt15emvj64069022121.png

yuazt15emvj64069022121.png



gswg02v14g064069022221.png

gswg02v14g064069022221.png

封装完以上几个函数后,我们在控制台输入help,可以看到,我们封装的函数已经出现在控制台啦,首先要输入初始化函数,这步是必须要做的,然后分别输入每个函数,查看舵机的动态就好啦;

yw0kqrhhhyw64069022321.png

yw0kqrhhhyw64069022321.png


53lzcz543hh64069022421.png

53lzcz543hh64069022421.png



控制舵机对我们来讲不过是一堆时钟信号,信号对了,自然结果就对,下面是在逻辑分析仪上观测的各个函数的波形,对应红色框框里面的
1、0.5ms高电平时钟信号


2、1ms高电平时钟信号

3、1.5ms高电平时钟信号


4、2.0ms高电平时钟信号


4、2.5ms高电平时钟信号



如果你觉得对自己有帮助的话,给个赞,点个关注,点个在看,感谢前进的道路上有你的陪伴!
    伙伴们可以关注ART-PI官方指导网站:
    https://github.com/ART-Pi/website/tree/main/docs/tutorial


欢迎大家关注 Embeded小飞哥  ,我是小飞哥,让我快点遇到优秀的你,然后一起变得更加优秀,加油!!!
小飞哥微信号:w974762670,加好友进群一起交流呀,获取资料!


回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表