1. PWM 基础概念:从波形到实战

各位同学好,我是老周。做嵌入式这些年,PWM 是我打交道最多的外设之一。今天咱们就从最基础的东西聊起——什么是 PWM,它的两个核心参数,以及到底能用在哪些地方。

你可能会想,PWM 不就是个方波吗?嗯,对,也不全对。它背后藏着不少门道。

1.1 什么是 PWM

PWM,全称 Pulse Width Modulation,脉冲宽度调制。说白了,就是通过调节脉冲的宽度来模拟一个连续变化的信号。

我习惯这么理解:你有一个开关,只能开或关。但如果你开关的速度足够快,并且控制每次开的时间比例,就能让负载感受到一个介于 0 和 100% 之间的效果。比如 LED 灯,快速闪烁时人眼就感觉它在半亮。

核心思想:数字引脚只能输出高电平或低电平,但通过快速切换并控制高电平的持续时间,就能模拟出模拟量输出效果。

举个例子,我早期做的一个项目里,需要用一个 GPIO 控制加热丝的功率。没有 DAC,怎么办?PWM 就是答案。50% 占空比,加热丝就工作在 50% 功率。简单粗暴,但有效。

1.2 占空比与频率

这两个参数是 PWM 的灵魂。搞不懂它们,后面优化就无从谈起。

占空比(Duty Cycle)

占空比,就是一个周期内高电平时间占总周期的百分比。

  • 0% 占空比:一直低电平,相当于关断。
  • 100% 占空比:一直高电平,相当于直通。
  • 50% 占空比:一半时间高,一半时间低。

我曾经踩过一个坑:用 8 位定时器做 PWM,占空比寄存器写 255 对应 100%,写 0 对应 0%。但有个芯片的计数器是从 0 到 255 共 256 个周期,所以 50% 占空比对应的值不是 128,而是 127。这种细节,手册不仔细看真容易翻车。

频率(Frequency)

频率就是 PWM 信号每秒钟重复的次数,单位 Hz。频率决定了 PWM 的「细腻程度」和「响应速度」。

应用场景 典型频率范围 说明
LED 调光 100 Hz - 1 kHz 低于 100 Hz 人眼会看到闪烁
电机控制 1 kHz - 50 kHz 太低电机抖动,太高开关损耗大
音频输出 20 kHz - 200 kHz 需要避开人耳可听范围
开关电源 50 kHz - 2 MHz 高频可减小变压器体积

我的经验:选频率时先看负载特性。LED 调光用 500 Hz 左右就挺好,既省电又不闪。电机控制我一般从 10 kHz 起步,再根据噪音和发热微调。

1.3 PWM 的应用场景

PWM 的应用范围很广,我挑三个最常见的说说。

电机控制

直流电机调速,PWM 是标准方案。通过改变占空比,就能控制电机转速。

我记得第一次做小车项目时,直接用 100% 占空比让电机全速跑,结果小车直接窜出去了。后来加了 PID 配合 PWM,才让速度稳下来。

这里有个关键点:电机是感性负载,PWM 频率不能太低。否则电机会发出尖锐的啸叫声,那是线圈在振动。我一般设 10 kHz 以上,人耳就听不到了。

LED 调光

LED 调光可能是大家接触最多的 PWM 应用。手机屏幕亮度调节、台灯调光,背后都是 PWM。

为什么不用调电阻?因为 LED 是电流型器件,调电阻会导致色温偏移。PWM 调光保持 LED 工作在额定电流,只改变点亮时间,色温不变。

注意:LED 调光的 PWM 频率不能太低。低于 100 Hz 人眼能感知到闪烁,长时间看容易疲劳。我建议至少 200 Hz 起步,最好 1 kHz 以上。

音频输出

用 PWM 做音频输出,本质上是用高频 PWM 信号经过低通滤波器还原出模拟音频波形。

这个我踩过坑。有次想用单片机播放一段提示音,直接用 8 位 PWM 加 RC 滤波。结果声音又小又失真。后来换成 12 位分辨率的 PWM,频率提到 200 kHz,滤波后效果才勉强能听。

音频 PWM 对分辨率要求高。8 位只有 256 级,动态范围不够。至少 10 位以上,配合高阶滤波器,才能得到可用的音质。

1.4 PWM 知识体系总览

下面这张图把本章的核心知识点串起来了。你可以把它当作后续学习的路线图。

PWM 知识体系总览 PWM 核心概念 占空比 (Duty Cycle) 频率 (Frequency) 分辨率 (Resolution) 电机控制 LED 调光 音频输出 优化方向:精度 · 稳定性 · 效率 · 低纹波 参数决定 PWM 信号质量,应用决定参数选择,优化贯穿始终

1.5 小结

这一章我们聊了 PWM 的本质——用数字信号模拟模拟效果。占空比控制输出大小,频率控制响应速度。三个典型应用各有侧重:电机看频率和功率,LED 看闪烁和色温,音频看分辨率和滤波。

我个人觉得,PWM 是嵌入式开发里性价比最高的外设之一。一个定时器加一个 GPIO,就能实现调速、调光、调音。但用好它,需要对参数有深刻理解。后面的章节,我会带你一步步深入,从配置到优化,把 PWM 的性能榨干。