PWM学习和使用

    科技2025-10-27  4

    PWM学习和使用

    这是本人第一次写博客(菜鸟渣渣表示很恐慌),之前一直想写,但是却从来没有开始。恰好这次需要调试一个型号为996R的舵机,就借这次机会,记录一下自己的学习过程。

    996R舵机

    该舵机支持0到180度的旋转运动,通过控制输入给该舵机的PWM占空比即可控制舵机的旋转角度。通过查阅相关资料,得知舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms到2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例(996R就是如此),那么对应的控制关系是这样的: 0.5ms------------0度 1.0ms------------45度 1.5ms------------90度 2.0ms------------135度 2.5ms------------180度 通过上面分析可以得出,若需要舵机转动到90度的位置,可以通过设置一个20ms为周期的脉冲,令其占空比为(1.5/20)*100%=7.5%即可实现。

    配置PWM输出

    本人使用的是STM32F407ZGT6作为主控芯片,使用TIM14作PWM输出,并利用了cubemx(生成的是HAL库版本的代码)进行初始化配置,,相关部分配置如下: STM32F407ZGT6的定时器14时钟频率为84Mhz,将自动重装载值设为199,预分频值设为8399,由公式Tout=((arr+1)*(psc+1))/Tclk可得周期为20ms,通过改变比较值可以控制其角度,笔者所使用的比较值范围为179到195。 稍加注意的一点是,cubemx生成的代码只是初始化部分的,还需要在main函数中加入开启PWM的函数才能正常使用PWM。

    结语

    暂时写那么多,写的有点匆忙有点乱,大家如果发现有什么不对的地方欢迎指正。

    Processed: 0.009, SQL: 8