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 字管用。

PWM 波形与参数关系图 PWM 波形与参数关系 D = 25% D = 50% D = 75% 周期 T = 200ms 频率 f = 1/T = 5Hz 📌 关键点 • 占空比越大,等效电压越高 • 周期固定时,频率也固定 • 改变占空比不影响频率 • 高电平时间 = 周期 × 占空比 • 低电平时间 = 周期 × (1 - 占空比) 💡 三个波形周期相同,占空比不同

看到没?三个波形的周期完全一样,都是 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 是怎么生成的,以及怎么用代码控制占空比。

嗯,今天就到这儿。有问题随时在群里问我。