发布时间: 2026-09-09
舵机的旋转角度和占空比间存在固定线性的换算关系, 靠调整PWM信号的占空比, 能精确控制舵机的旋转角度, 以下是完整的计算公式和应用方法。
公式一:脉宽与角度换算
脉宽(ms)= 0.5 + (角度 ÷ 180) × 2.0
公式二:占空比计算
占空比(%)= 脉宽(ms)÷ 20ms × 100%
合并公式:
占空比(%)= [0.5 + (角度 ÷ 180) × 2.0] ÷ 20 × 100%
标准舵机的工作参数:
PWM信号周期:20ms(频率50Hz)
有效脉宽范围:0.5ms ~ 2.5ms
对应旋转角度:0° ~ 180°
舵机内部电位器的位置由脉宽来决定, 输出轴的角度由此能够得到相应控制。脉宽长度越长, 则输出轴对应控制的角度越大, 脉宽的长度越短, 输出轴角度就会变得越小。
| 旋转角度 | 脉宽(ms) | 占空比(%) |
|---|---|---|
| 0° | 0.5 | 2.5% |
| 15° | 0.67 | 3.3% |
| 30° | 0.83 | 4.2% |
| 45° | 1.0 | 5.0% |
| 60° | 1.17 | 5.8% |
| 75° | 1.33 | 6.7% |
| 90° | 1.5 | 7.5% |
| 105° | 1.67 | 8.3% |
| 120° | 1.83 | 9.2% |
| 135° | 2.0 | 10.0% |
| 150° | 2.17 | 10.8% |
| 165° | 2.33 | 11.7% |
| 180° | 2.5 | 12.5% |
案例一:控制舵机转到60度
步骤:
![]()
1. 代入公式: 脉宽等于零点五加括号六十除一百八十括号的商乘二点零等于一点一七毫秒。
2. 计算占空比: 两百分之一点一七乘百分之百等于五点八五%。
3. 设置PWM参数:周期20ms,高电平1.17ms
案例二:通过控制舵机
#
Servo ;
void setup() {
.(9); // 连接到数字引脚9
}
void loop() {
.write(90); // 转到90度
delay(1000);
.write(45); // 转到45度
delay(1000);
}
案例三:通过STM32生成PWM信号
// 配置TIM3通道1输出PWM控制舵机
// 目标角度:120度
// 计算脉宽:0.5 + (120/180)×2.0 = 1.833ms
// 设置ARR=19999(周期20ms)伟创动力舵机,CCR1=1833(脉宽1.833ms)
Def e;
;
// 周期设置为20ms(ARR=19999,时钟72MHz)
e. = 19999;
e. = 0;
e. = 0;
e. = ;
(TIM3, &e);
// 设置CCR1为1833(对应120度)
. = ;
. = le;
. = 1833;
. = ;
(TIM3, &);
(TIM3, );
(TIM3, );
(TIM3, );
问题一:不同品牌的舵机参数一样吗?
大部分标准舵机参数一致,但部分特殊型号可能有所不同:
微型舵机: 可能的脉宽范围为0.5ms~2.5ms, 角度的范围可能并非完整的0~180°。
连续旋转舵机:没有固定角度限制,脉宽控制转速和方向
建议查阅具体产品的规格书确认参数
问题二:超出范围会怎样?
脉宽小于0.5ms:舵机可能不转动或转动不到位
脉宽大于2.5ms:舵机会过度转动,可能损坏内部限位结构
建议:实际操作时在0.5ms~2.5ms范围内设置
![]()
问题三:如何测试实际参数?
1. 使用示波器观察PWM信号波形
2. 用万用表测量平均电压
3. 逐步调整占空比伟创动力,观察舵机响应
4. 记录实际对应的角度和占空比关系
1. 明确需求:先确定需要的旋转角度范围
2. 执行计算参数步骤: 使用公式核算对应的脉宽与占空比。
3. 硬件选型:选择匹配的舵机和控制器
4. 代码实现:编写程序生成正确的PWM信号
5. 实测校验: 实际测向精密度, 必要时进行微调配比。
6. 安全保护:设置软件限位,防止超范围转动
记住核心公式:
脉宽 = 0.5 + (角度 ÷ 180) × 2.0
占空比 = 脉宽 ÷ 20 × 100%
掌握这个计算方法,就能精确控制任意角度的舵机旋转。



