STMCU小助手
发布时间:2022-4-12 10:00
|
介绍 数字舵机一般比较贵,数字舵机与模拟舵机的区别是前者在得到相应的脉冲后,会很清脆的到达固定的角度,不会产生异响;而模拟舵机则会在到达固定角度后抖动。# e0 k- E. Q) s2 r* [, i1 {! N 控制方法 数字舵机大多是是依靠PWM进行控制,舵机一个周期是20ms,给定固定占空比,则会转到相应的角度;例如让舵机转到90度的位置,那么20ms的周期内就是让低电平占1.5ms,这样就控制了舵机转到90度。对应如下表:# Q; |5 H4 P2 j$ W# f! s# L
4 q" H' V0 l$ l% k 所以我们的方法就是使用STM32单片机的定时器输出周期为20ms的PWM波,通过更改占空比值实现舵机的角度控制。通过上表可以得到一个公式:一度的占空比 = 1 / 90 * 角度 + 0.53 j. L* l; {+ s+ H( K. v 9 s$ _$ ]. L. A; j; H! _ STM32配置; g; Y( A U1 ` 这里我使用STM32F407VE,配置定时器3和PWM通道1,配置如下:0 _2 n/ P6 f6 @7 L4 v 4 K$ t% c; }# q) }, q) w
) x3 }% }. K$ o' E7 B9 J 定时器3的时钟主频是84M,这里我分8400频(8399+1),计数值200(199+1),3 F3 I3 v; ]1 O M 所得到的定时周期时间就是:200 * 8400 / 84000000 = 0.02s = 20ms PWM的频率就是:84000000 / (200 * 8400) = 50HZ( s& \ u% H& U$ r. i 按照以上配置计算,那么上面的公式就要扩大十倍,变为:一度的占空比 = 1 / 90 * 角度 + 5" _! A" E$ A; W e& p1 ? 转为代码就是:% C+ `, @& G( x. E0 u
通过该函数,就可以很方便的控制数字舵机转动了! ' d+ S( D1 Q- W2 p% K 注意: STM32CUBEMX生成的代码不是使能定时器,所以需要你手动添加下面一行代码使能定时器:
S+ G! ?4 D9 R5 }( N w |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版