1. PWM 基础概念:从一盏灯说起
各位同学好,我是老周。做嵌入式这些年,我接触最多的外设控制方式,就是 PWM。说它基础吧,它确实简单;说它重要吧,电机调速、LED 调光、开关电源,哪哪都离不开它。
这一章,咱们就把 PWM 的底裤扒干净。什么是 PWM?占空比、频率、周期到底在说什么?搞懂了这些,后面写代码才不会懵。
1.1 什么是 PWM?
PWM,全称 Pulse Width Modulation,脉冲宽度调制。名字挺唬人,说白了就是:用数字信号模拟模拟量。
你想想看,单片机引脚只能输出高电平(3.3V 或 5V)和低电平(0V)。那我想让 LED 半亮怎么办?不能输出 1.65V 吧?
PWM 的解法很巧妙:让引脚在极短的时间内,一会儿高、一会儿低。只要切换得够快,人眼和惯性系统就感觉不到闪烁,只会感受到一个平均效果。
核心思想: 通过快速切换高低电平,用高电平占整个周期的比例,来等效一个中间电压值。
举个例子。5V 的引脚,如果 50% 的时间是高电平,50% 是低电平,那等效电压就是 2.5V。LED 就会半亮。这就是 PWM 的本质。
1.2 三个核心参数:频率、周期、占空比
这三个参数,是 PWM 的灵魂。我当年刚入行时,就吃过频率没算对的亏——电机嗡嗡响,LED 还闪得我眼睛疼。咱们一个一个说清楚。
| 参数 | 符号 | 单位 | 一句话解释 |
|---|---|---|---|
| 周期 | T | 秒 (s) | 一个完整的高低电平循环所用的时间 |
| 频率 | f | 赫兹 (Hz) | 每秒完成多少个周期,f = 1/T |
| 占空比 | D | 百分比 (%) | 高电平时间占整个周期的比例 |
周期(T):就是一次完整的“高+低”时间。比如周期是 20ms,那每 20ms 就重复一次。
频率(f):周期的倒数。20ms 的周期,频率就是 50Hz。频率越高,切换越快,控制越平滑。
占空比(D):这是最常用的参数。占空比 0% 就是一直低电平,100% 就是一直高电平。50% 就是一半一半。
我的经验: 做 LED 调光时,频率别低于 100Hz,否则人眼能看出闪烁。做电机调速时,频率通常选 1kHz~20kHz,太低会抖动,太高会增大开关损耗。
1.3 一张图看懂 PWM 波形
光说概念太干。我画了一张 SVG 图,把频率、周期、占空比的关系一次性讲清楚。你盯着看 10 秒,比读 500 字管用。
看到没?三个波形的周期完全一样,都是 200ms。但高电平的宽度不同。25% 占空比时,高电平只有 50ms;75% 时,高电平有 150ms。这就是 PWM 控制的核心——固定频率,调节占空比。
1.4 典型应用场景
PWM 能用的地方太多了。我挑两个最常见的,也是咱们课程后面会动手做的。
LED 调光
这是 PWM 的入门级应用。LED 不像白炽灯,改变电压并不能线性调光。但用 PWM 就很简单:
- 占空比 0% → 全灭
- 占空比 50% → 半亮
- 占空比 100% → 最亮
频率选 200Hz 以上,人眼就感觉不到闪烁了。我做过一个项目,用 500Hz 调光,效果非常顺滑。
注意: 频率不能太高。超过 20kHz 后,虽然人眼看不到闪烁,但 LED 驱动芯片的开关损耗会明显增加,发热变大。我曾经为了追求“无感”,把频率设到 50kHz,结果驱动芯片烫得能煎鸡蛋。
电机调速
直流电机调速,PWM 是标准方案。通过改变占空比,改变电机两端的平均电压,从而控制转速。
- 占空比 30% → 低速转动
- 占空比 70% → 中速转动
- 占空比 100% → 全速转动
电机调速的频率选择有讲究。太低(< 100Hz),电机会一顿一顿地转,发出“咔咔”声。太高(> 20kHz),虽然安静了,但 MOS 管的开关损耗会上升。我一般选 1kHz~10kHz,兼顾效率和噪音。
1.5 占空比与等效电压的关系
这个关系很简单,但很重要。等效电压的计算公式:
V_avg = V_max × D
其中 V_max 是引脚的高电平电压,D 是占空比(0~1 之间的小数)。
举个例子:
| 占空比 | 等效电压 (5V 系统) | 等效电压 (3.3V 系统) |
|---|---|---|
| 0% | 0V | 0V |
| 25% | 1.25V | 0.825V |
| 50% | 2.5V | 1.65V |
| 75% | 3.75V | 2.475V |
| 100% | 5V | 3.3V |
你看,占空比和等效电压是线性关系。这就是为什么 PWM 能精确控制功率输出。
避坑指南: 实际电路中,由于驱动芯片和负载的非线性,等效电压并不完全等于 V_max × D。尤其是电机启动时,电流很大,电压会被拉低。我建议你在调试时用万用表实测一下,别光靠公式算。
1.6 本章小结
好,咱们捋一遍。这一章讲了:
- PWM 的本质:用数字信号模拟模拟量,快速切换高低电平
- 三个核心参数:周期(T)、频率(f)、占空比(D)
- 两个典型应用:LED 调光和电机调速
- 等效电压计算:V_avg = V_max × D
这些概念是 PWM 的基石。后面咱们写代码、调参数,全得靠它们。下一章,我会带你看看单片机里 PWM 是怎么生成的,以及怎么用代码控制占空比。
嗯,今天就到这儿。有问题随时在群里问我。