STMCU小助手
发布时间:2022-3-8 22:28
|
一、SG90角度与PWM转换关系8 V0 x1 O2 g8 y: q+ |. _' D 舵机参数:f=50hz,t=20ms 根据选用的SG90参数,我们需要给出周期为20ms,其中高电平时间为 0.5ms-2.5ms的信号8 H. o. `, F* |: a- ~, z 0.5ms-------------0度; 2.5%0 |" ]/ E7 m+ V# c% [0 a 1.0ms------------45度; 5.0% 1.5ms------------90度; 7.5%: e( h" M; f$ \ s; ? 2.0ms-----------135度; 10.0% 2.5ms-----------180度; 12.5% 7 C/ `; R& Z. B8 A' B6 } 二、Cubemx参数配置$ b( m4 S8 p: p 1、时钟配置 : c* H) J4 b! m. q
& {/ G' F, J& [: m& y9 r) r 2、定时器配置PWM输出设置 根据SG90的参数,我们需要设置PWM输出一个周期时间为20ms,初始值为0.5ms高电平的信号。, a0 n% p- { _7 c& d( b 计算方法:Timer定时器时钟我们设置为240Mhz,这里我们将预分频设置为239,则一个周期为240Mhz/(239+1)=1Mhz(即1us),所以20ms的周期我们需要计数20000-1=19999个填入Counter Period参数中。' g$ f! `+ q! x: X) F; ? 另外,我们还需要一个默认脉冲宽度为0.5ms的,0.5/20*20000=500 2 b/ L: k' ~& C$ ?$ V0 y2 C7 A q 其他设置如下图所示:: W3 ~, N$ E0 s) a, ^
# \/ W9 C; k. J9 ^$ |/ t 三、MDK代码修改与运行 1.PWM与SG90转换角度转换函数2 A6 B+ C, c: z0 O! t$ {6 a 方便实验我们将所需要的角度与PWM计数值对应关系封装成一个函数。只需要输入我们所需要的角度和相关定时器参数即可。 代码如下(示例):
2.实验现象3 P$ \+ i$ [% |. V g+ [/ Z: O 这里在主函数增加了按键扫描通过按键控制SG90正反转180°。 另外还增加了串口printf函数,打印SG90旋转时的角度变化。5 d* V1 j4 j9 d0 U - {: Y2 x1 D% N( l- a 代码如下(示例): a3 M6 `3 e& U3 b! m2 `9 J7 Q3 K 6 s' K$ v7 X8 ^: J' Q7 a. `5 W2 ^
可以看到按键按下SG90按照我们预期的动作变化。实验成功。
|
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版