打印
[应用相关]

STM32 Cubemax(一)——PWM配置及控制SG90舵机

[复制链接]
1031|49
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言
这是一篇基于STM32F429的保姆级入门的用CubeMAX配置生成并编写的控制舵机SG90的教程
一、SG90舵机 常见的SG90舵机


SG90引出三条线,分别是控制线(橙色),VCC(红色),GND(黑色),用杜邦线依次连接在开发板上即可


使用特权

评论回复
沙发
自动化陈稳|  楼主 | 2022-3-28 15:43 | 只看该作者
SG90舵机要求工作在频率为50HZ——周期为20ms的PWM波,且对应信号的高低电平在0.5ms - 2.5ms之间,对应的舵机转动角度如下表所示(当然也可以按照这个线性的对应关系去达到转动自己想要的角度,如想要转动60°,则高电平脉宽为大概为1.2ms,具体能不能转到特定的角度还和舵机的精度有关)

使用特权

评论回复
板凳
自动化陈稳|  楼主 | 2022-3-28 15:44 | 只看该作者

使用特权

评论回复
地板
自动化陈稳|  楼主 | 2022-3-28 15:45 | 只看该作者
二、CubeMax配置
1.选型(这里用实验的开发板为正点原子的F429阿波罗)

使用特权

评论回复
5
自动化陈稳|  楼主 | 2022-3-28 15:46 | 只看该作者

使用特权

评论回复
6
自动化陈稳|  楼主 | 2022-3-28 15:46 | 只看该作者
2.配置时钟树

选择外部晶振

使用特权

评论回复
7
自动化陈稳|  楼主 | 2022-3-28 15:47 | 只看该作者

使用特权

评论回复
8
自动化陈稳|  楼主 | 2022-3-28 15:51 | 只看该作者

使用特权

评论回复
9
自动化陈稳|  楼主 | 2022-3-28 15:51 | 只看该作者
这里还有一种方法是选择HSE,PLLCLK后,在HCLK里填入180,直接回车,软件可以自动帮你配好。​

使用特权

评论回复
10
自动化陈稳|  楼主 | 2022-3-28 15:52 | 只看该作者
3.PWM相关定时器配置

本例采用定时器3的通道四产生PWM波,通过查阅芯片资料可知对应的PIN脚为PB1,则舵机的控制线应和板子上的PB1引脚相连

使用特权

评论回复
11
自动化陈稳|  楼主 | 2022-3-28 15:53 | 只看该作者

使用特权

评论回复
12
自动化陈稳|  楼主 | 2022-3-28 15:54 | 只看该作者

使用特权

评论回复
13
自动化陈稳|  楼主 | 2022-3-28 15:58 | 只看该作者
这里解释一下分频数和计数值的意义

通过查阅STM32的资料和前文所配的时钟树可知TIM3的时钟来源是 APB1 = 90Mhz

则我们需要产生20Hz的PWM波,则预分频的系数为 Prescaler = 90-1,自动重装载值 Counter Period = 20000-1,此时定时器产生的频率为 90Mhz/90/20000 = 20Hz。  当然这个值也可以自己设置,只要满足产生的频率为20Hz即可

使用特权

评论回复
14
自动化陈稳|  楼主 | 2022-3-28 16:00 | 只看该作者

使用特权

评论回复
15
自动化陈稳|  楼主 | 2022-3-28 16:01 | 只看该作者
最后配置一下初始值

使用特权

评论回复
16
自动化陈稳|  楼主 | 2022-3-28 16:01 | 只看该作者

使用特权

评论回复
17
自动化陈稳|  楼主 | 2022-3-28 16:02 | 只看该作者
初始值占空比 1000/20000 ,由此前舵机图可知初始程序舵机会转动45°

使用特权

评论回复
18
自动化陈稳|  楼主 | 2022-3-28 16:03 | 只看该作者
4.生成代码

使用特权

评论回复
19
自动化陈稳|  楼主 | 2022-3-28 16:03 | 只看该作者
最后点击GENERATE CODE代码即生成完成

使用特权

评论回复
20
自动化陈稳|  楼主 | 2022-3-28 16:04 | 只看该作者
三、代码编写

代码编写也十分简单,只需要只main函数中开启PWM波

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

1200

帖子

1

粉丝