收藏官网首页
查看: 25614|回复: 2

Gokit STM32驱动舵机

321

主题

1054

帖子

4513

积分

论坛元老

Rank: 8Rank: 8

积分
4513
QQ
跳转到指定楼层
楼主
发表于 2017-5-4 12:59:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
校园创客福利

1、什么是舵机


舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。

2、工作原理

       控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机一般结构如下图:

3、舵机的控制



        舵机的控制一般需要一个20ms左右的脉冲,高电平一般为0.5ms~2.5ms范围。以180度角度伺服为例,那么对应的控制关系是这样的:

      0.5ms-----------    0度
      1.0ms-----------  45度
      1.5ms-----------  90度
      2.0ms-----------135度
      2.5ms-----------180度

小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。舵机上有三根线,分别为VCC、GND、信号线。而不需要另外接驱动模块,直接用单片机的管脚控制就行了。如果要更为精确的控制舵机(转动角度差<=1度),则需要控制输出PWM信号的占空比,例如:可以把0~180分为1024份,范围为0.5ms~2.5ms,则可以得到0.09度/us,计算出PWM输出脉宽值period=0.5+angle/0.09/1000(angle是角度,单位为°;period是脉宽,单位为ms),可控制舵机转动0~180度间的任意角度。

4.gokit STM32驱动舵机实例

舵机型号:SM-S4306R
采用周期为20ms的PWM驱动,PWM脉宽在0.5ms-2.5ms之间;
舵机5V工作电压,电流80mA左右,STM32输出3.3V可直接驱动起来;
定时器时钟为64MHz,使用Time1的channel1作为PWM的输出通道;
预分频prescaler设置成6400-1,则输出PWM周期为20ms;
period设置成200-1.pulse初始值是15时处在中间位置;
200个period对应20ms,可得到以下对应关系:
脉 宽------------角 度--------pulse
0.5ms------------0  度---------5;
1.0ms------------45 度---------10;
1.5ms------------90 度---------15;
2.0ms-----------—135度---------20;
2.5ms------------180度---------25;

开启定时器PWM:

测试代码:

工程源码:

Gokit驱动舵机.zip (15.21 MB, 下载次数: 209)


1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息

15

主题

135

帖子

2183

积分

金牌会员

Rank: 6Rank: 6

积分
2183
沙发
发表于 2018-6-15 16:52:33 | 只看该作者
本帖最后由 Seasonic 于 2018-6-15 16:55 编辑

如此细致,有师如你,人生大幸。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表