
介绍 数字舵机一般比较贵,数字舵机与模拟舵机的区别是前者在得到相应的脉冲后,会很清脆的到达固定的角度,不会产生异响;而模拟舵机则会在到达固定角度后抖动。8 }: y# k8 J; J! L- s2 ~ " z' S6 s( T# q5 n% H6 f; J 控制方法2 x. [- M" X9 N# J7 i 数字舵机大多是是依靠PWM进行控制,舵机一个周期是20ms,给定固定占空比,则会转到相应的角度;例如让舵机转到90度的位置,那么20ms的周期内就是让低电平占1.5ms,这样就控制了舵机转到90度。对应如下表: 2 }3 Q7 X8 p2 e ![]() 所以我们的方法就是使用STM32单片机的定时器输出周期为20ms的PWM波,通过更改占空比值实现舵机的角度控制。通过上表可以得到一个公式:一度的占空比 = 1 / 90 * 角度 + 0.5/ W/ h8 u& F- [/ t 3 ~' i; O6 N' ^ F& b' W STM32配置/ c/ }5 m6 x0 K4 {* {8 |- i 这里我使用STM32F407VE,配置定时器3和PWM通道1,配置如下: % u& |; _1 l' {. L6 ? ![]() ' o# Y& r* x# J) A 定时器3的时钟主频是84M,这里我分8400频(8399+1),计数值200(199+1), 所得到的定时周期时间就是:200 * 8400 / 84000000 = 0.02s = 20ms. y0 Y+ k1 S4 ^' x PWM的频率就是:84000000 / (200 * 8400) = 50HZ/ r& \8 V0 {! v* M 按照以上配置计算,那么上面的公式就要扩大十倍,变为:一度的占空比 = 1 / 90 * 角度 + 5( u/ U( [* H+ m5 x% u 转为代码就是:, _& o3 s: i) j' E) D( q
通过该函数,就可以很方便的控制数字舵机转动了!) u% n( J& M/ j4 S 注意: STM32CUBEMX生成的代码不是使能定时器,所以需要你手动添加下面一行代码使能定时器:2 X( ^+ k; m2 t7 B 8 z+ B6 I4 e1 K2 P' @, c
![]() % B) }2 z* G$ d |
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化