首页 > 行业资讯 >舵机
TECHNICAL SUPPORT

PWM控制舵机程序:接线与角度代码示例

发布时间: 2026-05-01

01PWM控制舵机程序:从接线到代码的完整实操指南

不论您此刻是在进行机械臂的制作,还是在开展机器人相关工作,亦或是从事舵机控制方面的事宜,借由PWM(脉冲宽度调制)信号去操控舵机角度,这都是极为常见的一种需求。在本文当中,给出了一套能够直接着手使用的完整方案,其中涵盖硬件接线、核心代码以及角度换算公式,以此保证您在30分钟之内能够完成首个舵机控制程序。

一、核心原理:PWM的“脉宽”决定舵机角度

有一个在舵机内部的比较器,它为于将输入PWM信号里高电平持续的那个时间长度也就是脉宽、与内部电位器反馈回来的角度数值去做比较。标准模拟舵机的控制周期长度是20ms、也就是50Hz的那个频率,当中。

0.5ms脉宽 → 0度(极限左端)

1.5ms脉宽 → 90度(中位点)

2.5ms脉宽 → 180度(极限右端)

> 仅有这三个核心数据即可推出任意角度对应的脉宽:

目标脉宽(毫秒这个单位)等于,零点五加上,目标角度除以一百八十之后,再乘以二点零。

二、硬件接线表(无需任何品牌特定开发板)

舵机线颜色 功能 连接目标
棕色/黑色 地线(GND) 控制器的GND引脚
红色 电源正极(4.8V~6.0V) 独立稳压电源或控制器的5V输出(小舵机)
橙色/黄色 信号线(PWM) 控制器的任意PWM支持引脚

重点警示:当多个舵机一同进行工作之际,要去运用外置的5V/2A之上的稳压电源 ,不可以从控制器主板那里获取电力 ,不然的话电流不够会致使复位现象产生或者舵机出现抖动情况。

三、可直接运行的代码示例(以常见平台为例)

以下程序会使舵机从0度开始,以缓慢的状态摆动至180度,之后再返回来,然后循环地执行这个操作。任何能够支持PWM的控制器,像STM32、ESP32、51单片机等等,都可以按照相同的逻辑进行移植。

# 
// 定义PWM引脚号(以常见开发板的9号引脚为例)
const int  = 9;
// 角度转脉宽的函数(单位:微秒)
int (int angle) {
  // 限制角度范围0~180
  angle = (angle, 0, 180);
  // 映射:0°→500μs, 180°→2500μs
   map(angle, 0, 180, 500, 2500);
}
void setup() {
  (, );
}
void loop() {
  // 从0度逐渐增加到180度
  for (int angle = 0; angle <= 180; angle++) {
    int  = (angle);
    // 产生一个持续微秒的高电平,其余时间为低电平
    (, HIGH);
    ();
    (, LOW);
    // 剩余周期时间 = 20ms  脉宽,确保周期稳定20ms
    (20000  );
  }
  // 从180度逐渐减少到0度
  for (int angle = 180; angle >= 0; angle) {
    int  = (angle);
    (, HIGH);
    ();
    (, LOW);
    (20000  );
  }
}

使用pwm控制舵机程序_控制舵机的程序_pwm控制舵机的基本原理

移植到其他控制器的注意事项

要保证人尽皆知的绝大多数标准舵机的工作频率得以确保,需使PWM信号频率成为50Hz,也就是周期为20ms。

在运用硬件PWM之际,直接去进行占空比的设置,其计算方式为,占空比等于脉宽以毫秒为单位的值除以20毫秒。举例来说,90°所对应的情况是,1.5毫秒除以20毫秒,结果等于7.5%占空比。

四、高频问题与(覆盖全场景闭环)

问题1:舵机剧烈抖动或无法保持位置

原因:PWM信号不稳定或电源纹波大。

解决

在舵机电源引脚两侧,并联一个容量处于100μF至470μF范围的电解电容,以此滤除电源纹波。

信号线与电源线分开走线,避免大电流串扰。

采用硬件PWM输出,来替换软件模拟的(),因为后者容易受到中断的干扰。

问题2:舵机只能在一个方向旋转,不回中点

理由是,脉宽范围没有进行校准,存在这样的情况,个别舵机处在0°的时候和550μs相对应,而当处于180°的时候,和2450μs相对应

进行解决,编写一个开展测试作业的程序,分别去发出500μs长度的脉宽,还要发出1500μs长度的脉宽,并且发出2500μs长度的脉宽,进而去观察实际呈现的角度,随后再去修改map(angle,0,180,校准最小脉宽,校准最大脉宽)。

问题3:舵机完全不转,只发出嗡嗡声

这是因为,电源电压处于不足的状态,或者信号线电平出现不匹配的情况伟创动力舵机,像是采用3.3V控制器去驱动5V舵机这样的情形。

控制舵机的程序_pwm控制舵机的基本原理_使用pwm控制舵机程序

要解决此问题,可采用电平转换模块(5V至3.3V双向的那种),或者去确认舵机是否支持3.3V逻辑(多数现代舵机是支持的)。还要检查电源负载能力:单个9g舵机需要0.5A瞬间电流,大扭矩舵机需要2A以上。

五、进阶:连续旋转舵机的PWM控制

如果您所运用的是那种360°能够进行连续旋转操作的舵机,此种舵机常常被应用于轮式机器人上面,那么PWM脉宽所表明的意味是不一样的:

1.5ms:停止转动

1.5ms ~ 2.5ms:正向速度随脉宽增大而增加

0.5ms ~ 1.5ms:反向速度随脉宽减小而增加

在这个时候,程序已经不再对角度进行控制了伟创动力,而是会去控制转速。只要把上面所提及的代码当中的角度映射改成速度映射就行。

六、行动建议与核心观点重复

主要核心观点为:PWM去控制舵机,其本质是这样的原理,即依据目标角度,通过线性方式计算得出处于0.5至2.5ms之间的脉宽,而且要以20ms作为周期持续不断地输出。任何一种偏离了这一原理的方法,都会造成控制失败。

立即执行的三个步骤

1. 要是没有仪器,那就得利用代码先去对中位1.5ms脉宽展开 测试,此时舵机指向90°,以此来确认您的PWM输出脉宽是不是准确呢,不过这是采用示波器或者逻辑分析仪才行的。

2. 进行独立供电,对电源电压于舵机标称范围之内(通常是4.8V至6.0V)予以验证。

3. 在您的项目里,把本文所具有的角度 脉宽换算公式直接作复制的操作,经行替换硬件引脚之后进而能够运行

做出以上操作完毕之后,您已然掌握了全部标准PWM舵机的控制办法。要是碰到本文没有涵盖的特殊情形(像是总线舵机、巨无霸舵机这种),那其底层的PWM控制逻辑依旧是依照本指南的。

为所有产品提供动力单元

联系伟创动力产品专家,为你的产品推荐合适的驱动系统所需部件。

发送邮件
在线留言
WhatsApp
+86 0769 8399 3238
 
kpowerMap