嵌入式 · NOTE

嵌入式 · 简体中文

PWM 控制舵机:从脉宽到角度

区分 PWM 的频率、占空比与高电平脉宽,并建立舵机角度映射的基本模型。

更新
2026-07-13
阅读
1 分钟

PWM 不只等于“占空比”

PWM 是脉宽调制。对常见位置舵机而言,控制量主要是一个周期内高电平持续的时间,而不是只看百分比形式的占空比。

若周期为 TT,高电平时间为 tht_h,占空比为:

D=thT×100%D=\frac{t_h}{T}\times 100\%

常见舵机使用约 20ms20\,\mathrm{ms} 的周期。假设有效脉宽范围为 0.5ms0.5\,\mathrm{ms}2.5ms2.5\,\mathrm{ms},可以用线性模型估算角度:

θ=th0.52.50.5×180\theta=\frac{t_h-0.5}{2.5-0.5}\times180^\circ

程序中的映射

float servo_pulse_ms(float angle)
{
    if (angle < 0.0f) angle = 0.0f;
    if (angle > 180.0f) angle = 180.0f;
    return 0.5f + angle / 180.0f * 2.0f;
}

不同舵机的真实范围并不完全相同,首次测试应从中间位置开始,并逐步扩大脉宽,避免机械结构顶死。

调试清单

  • 舵机和单片机是否共地;
  • 供电电流是否足够;
  • 定时器周期是否约为 20 ms;
  • 修改的是比较值,而不是周期寄存器;
  • 机械限位是否小于舵机理论角度。

讨论

评论

0

还没有公开评论。

评论不会立即公开;请勿填写邮箱、电话等私人信息。