工程师平台
返回知识文章
0

3 分钟讲透 PWM:为什么 LED、电机、舵机都离不开它?

PWM精讲

工程师平台官方
官方
电气电子38 分钟阅读2026/7/1 22:00:4814 次浏览

很多同学学单片机,一开始最容易卡住的不是点灯,而是 PWM。

因为 PWM 看起来很简单:高电平、低电平、占空比。可一到项目里,问题就来了:LED 为什么能调亮度?电机为什么能调速度?舵机为什么不是看占空比,而是看 1ms 到 2ms 的脉宽?ARR、CCR、PSC 又到底在调什么?

这篇文章就用一条线把 PWM 讲清楚:PWM 不是模拟电压,它是用“时间比例”制造连续控制效果。

PWM 入门:不是模拟电压,而是时间比例控制

------------------------------------

一、PWM 的本质:不是改变电压,而是改变“高电平持续多久”

PWM,全称 Pulse Width Modulation,中文叫脉冲宽度调制

它的输出不是连续变化的模拟电压,而是一串快速切换的数字方波:

· 一会儿输出高电平;

· 一会儿输出低电平;

· 周期不断重复;

· 通过调整高电平持续时间,让外部器件感受到不同的“平均效果”。

所以,理解 PWM 的第一句话应该是:

PWM 控制的不是电压值,而是高电平持续时间。

比如 5V 单片机输出 PWM:

· 占空比 20%:一个周期里 20% 时间是 5V,80% 时间是 0V;

· 占空比 50%:一半时间 5V,一半时间 0V;

· 占空比 80%:大部分时间都是 5V。

从瞬时波形看,它只有 0V 和 5V;但从 LED 亮度、电机转速、加热功率这类“有惯性”的对象看,它像是在输出一个可调强度。

------------------------------------

二、看懂 PWM,先看 8 个关键词

学习 PWM,不要一上来就背代码。先把 8 个概念看懂,后面配置定时器才不会乱。

 

PWM 先看 8 个点:周期、频率、Ton、Toff、占空比、脉宽、ARR、CCR

1. 周期 T

周期就是一轮完整高低电平变化所用的时间。

例如 PWM 频率是 1kHz,那么周期就是:

T = 1 / f = 1 / 1000 = 1ms

2. 频率 f

频率表示每秒重复多少次周期。

频率太低,LED 可能闪烁;电机可能抖动;蜂鸣器音调也会变化。频率太高,则可能受限于定时器精度、驱动电路响应速度和负载特性。

3. Ton

Ton 是高电平持续时间,也就是“开”的时间。

4. Toff

Toff 是低电平持续时间,也就是“关”的时间。

5. 占空比 D

占空比是高电平时间占整个周期的比例:

D = Ton / T

占空比越大,高电平时间越长,平均效果通常越强。

6. 脉宽

脉宽通常就是 Ton。对 LED 和直流电机来说,大家经常说占空比;但对舵机来说,更常说脉宽,例如 1ms、1.5ms、2ms。

7. ARR

ARR 是自动重装值,决定计数器数到哪里结束一个周期。它直接影响 PWM 周期。

8. CCR

CCR 是比较值,决定计数到哪里时发生输出状态变化。它直接影响占空比。

简单记:

ARR 管周期,CCR 管占空比,PSC 管定时器计数速度。

------------------------------------

三、定时器到底怎么生成 PWM?

PWM 通常不是靠 CPU 一直手动拉高、拉低引脚实现的,而是由定时器硬件自动输出。

 

定时器生成 PWM:PSC、CNT、CCR、ARR 的关系

一个典型过程可以这样理解:

1. 系统时钟进入定时器;

2. PSC 预分频,把时钟变慢;

3. CNT 计数器从 0 开始计数;

4. CNT 不断和 CCR 比较;

5. 当 CNT 小于 CCR 时,输出高电平;

6. 当 CNT 超过 CCR 后,输出低电平;

7. 当 CNT 计到 ARR,周期结束;

8. CNT 回到 0,进入下一轮。

所以 PWM 的核心不是神秘算法,而是一个很朴素的比较过程:

CNT < CCR:输出高电平
CNT >= CCR:输出低电平
CNT 到 ARR:重新开始下一周期

常见公式可以这样记:

PWM 周期 ≈ (ARR + 1) × (PSC + 1) / f_clk
PWM 频率 ≈ f_clk / [(ARR + 1) × (PSC + 1)]
占空比 ≈ CCR / ARR

不同芯片或配置方式可能有 +1 的细节差异,但思路不变:

· PSC 改变计数速度;

· ARR 决定一轮计数多长;

· CCR 决定高电平占这一轮的多少。

------------------------------------

四、为什么 LED、电机、舵机都能用 PWM?

PWM 的厉害之处在于:它用数字信号控制模拟效果。

1. LED 调光:看平均亮度

LED 本质上是快速亮灭。只要 PWM 频率足够高,人眼就感觉不到闪烁,只会看到不同亮度。

· 占空比小:亮的时间短,看起来暗;

· 占空比大:亮的时间长,看起来亮。

所以 LED 调光,重点看占空比。

2. 直流电机调速:看平均能量

直流电机有机械惯性,不会因为 PWM 的每一次开关立刻停下或冲起来。它更像是在感受一段时间内的平均供电效果。

· 占空比小:平均输入能量低,转速低;

· 占空比大:平均输入能量高,转速高。

但这里要注意:单片机引脚不能直接带电机。电机需要驱动电路,例如 MOS 管、H 桥、电机驱动芯片。

3. 舵机控制:重点看脉宽

舵机和 LED、电机不太一样。常见舵机通常看固定周期下的脉宽:

· 周期常见 20ms;

· 1ms 可能对应一个极限角度;

· 1.5ms 常见为中位;

· 2ms 可能对应另一个极限角度。

所以讲舵机时,不要只说“调占空比”,更准确的说法是:

在约 20ms 周期下,通过改变 1ms 到 2ms 的脉宽来控制角度。

------------------------------------

五、毕设答辩里,PWM 应该怎么讲?

很多同学答辩时会背一句:“我使用 PWM 控制电机。”

这句话太空了。老师真正想听的是:你用 PWM 控制了什么对象,改变了哪个参数,输出效果怎么验证。

 

毕设里 PWM 怎么讲:需求、参数、驱动、电路、执行器、测试现象

更完整的答辩逻辑应该是:

需求 → PWM 参数 → 驱动电路 → 执行器 → 测试现象

例如:

· LED 调光:通过改变 PWM 占空比,实现亮度变化;

· 直流电机:通过改变占空比,经驱动电路控制电机转速;

· 舵机控制:通过定时器输出固定周期 PWM,改变 1ms 到 2ms 脉宽实现角度控制;

· 蜂鸣器:通过改变 PWM 频率,实现不同音调输出。

答辩时可以这样说:

本项目通过定时器输出 PWM,控制执行器的动作强度或位置。对于电机,我调节的是占空比;对于舵机,我重点控制的是脉宽;输出信号经驱动电路作用到执行器,并通过转速、角度或亮度变化进行验证。

这段话比单纯说“用了 PWM”更像工程表达。

------------------------------------

六、PWM 出问题,按这个顺序排查

PWM 初学最常见的痛苦,不是公式不会,而是“代码看起来没问题,硬件就是不动”。

这时不要乱改,按顺序查。

 

PWM 易错速查:引脚、通道、频率、占空比、驱动顺序排查

1. LED 不亮

先查 GPIO 是否复用到了正确的定时器通道。

很多芯片一个定时器通道只能映射到特定引脚,不是随便找个 IO 就能输出 PWM。

2. 亮度不变

先查 CCR 有没有更新。

如果占空比变量改变了,但 CCR 没写进去,输出当然不会变。

3. 电机不转

先查驱动电路。

单片机 IO 引脚电流很小,不能直接带电机。没有驱动管、H 桥或驱动芯片,PWM 输出正确也没用。

4. 舵机乱抖

先查周期和脉宽。

常见舵机通常需要约 20ms 周期,以及 1ms 到 2ms 左右的控制脉宽。如果频率或脉宽设置离谱,舵机就容易抖动或不受控。

5. 频率不对

查 PSC 和 ARR。

很多 PWM 频率错误,本质都是定时器时钟、预分频或自动重装值没算对。

6. 完全没波形

查 PWM Start 或通道使能。

配置好了定时器,不等于通道已经开始输出。要确认 PWM 通道真的启动了。

排查口诀:

PWM 出问题,按引脚、通道、频率、占空比、驱动顺序排查。

------------------------------------

七、最后用一句话记住 PWM

PWM 不复杂,但它非常关键。

它把单片机最擅长的数字开关信号,变成了外部世界能感受到的连续控制效果。

对于 LED,它表现为亮度;对于电机,它表现为转速;对于舵机,它表现为角度;对于蜂鸣器,它表现为音调。

所以,PWM 最值得记住的不是某一行代码,而是这句话:

PWM 用时间比例,控制看起来连续的效果。

只要你抓住“周期、频率、占空比、脉宽、ARR、CCR、PSC、通道映射”这几个点,再结合具体执行器去讲,PWM 就不再是一个抽象概念,而是单片机项目里最常用、也最容易讲清楚的控制方法。

评论

暂无评论。