一、PWM是什么

PWM,全称为脉冲宽度调制。顾名思义,它是一种通过调节脉冲的“宽度”来模拟不同“能量”水平的技术。

我们可以用一个简单的比喻来理解:

想象一个在1秒钟内快速开关的水龙头。

如果你在整整1秒钟内都开着水龙头,那么流出的总水量是100%。

如果你只在前0.5秒打开,后0.5秒关闭,那么流出的总水量就是50%。

如果你只在前0.1秒打开,后0.9秒关闭,那么流出的总水量就是10%。

PWM做的就是同样的事情,只不过它控制的是电信号,而不是水流。它在一个固定的周期内,通过改变高电平(“开”) 的时间比例,来等效出一个不同的电压或功率值。

关键术语:

周期:一个完整脉冲波形的时间长度,通常用 T 表示。

频率:周期的倒数,f = 1/T,表示一秒钟内有多少个这样的脉冲。频率越高,脉冲变化越快。

占空比:这是PWM的核心概念。

  • 定义:在一个周期内,高电平时间占整个周期时间的百分比。
  • 公式:占空比 = (高电平时间 / 周期时间) * 100%

图示理解:

高占空比 (例如 75%):
|---ON---|--OFF--|
^                   ^
|<------- 周期 T ---->|

低占空比 (例如 25%):
|-ON-|-------OFF------|
^                   ^
|<------- 周期 T ---->|

75%占空比:大部分时间处于“开”状态,输出的平均电压高。

25%占空比:大部分时间处于“关”状态,输出的平均电压低。

对于MCU来说,其GPIO引脚通常是3.3V或5V。一个3.3V的MCU引脚:

  • 占空比100% -> 持续输出3.3V。
  • 占空比50% -> 输出一个在0V和3.3V之间跳变的方波,其平均电压约为1.65V。
  • 占空比0% -> 持续输出0V。

重要:PWM输出的是数字方波,而不是真正的模拟电压。但由于负载(如LED、电机)的惯性,它们无法立即响应这种快速变化,因此会表现出对平均电压的响应。

二、MCU如何生成PWM

在MCU中,PWM通常由专门的硬件外设生成,最常见的是定时器。

PWM生成的核心部件:

  • 计数器:一个可以向上或向下计数的寄存器。
  • 自动重载寄存器:决定PWM的周期。当计数器达到这个值时会重置,从而开始一个新的周期。
  • 比较/捕获寄存器:决定PWM的占空比。你通过代码设置这个值。
  • 输出比较电路:持续将计数器的值与比较寄存器的值进行比较,并根据模式控制输出电平。

工作模式(以向上计数为例):

MCU启动一个定时器,计数器从0开始向上计数。

计数器的值会不断与比较寄存器的值和自动重载寄存器的值进行比较。

当计数器的值 小于 比较寄存器的值时,PWM输出高电平(或低电平,可配置)。

当计数器的值 大于等于 比较寄存器的值但小于 自动重载寄存器的值时,PWM输出低电平(或高电平)。

当计数器达到自动重载寄存器的值时,它被重置为0,整个过程重复,开始一个新的PWM周期。

通过代码,你只需做两件事:

  • 设置 自动重载寄存器 -> 确定PWM频率。
  • 设置 比较寄存器 -> 确定P空比。

一旦设置完成,硬件就会自动生成PWM波形,无需CPU干预,非常高效。

三、PWM在MCU中的应用

PWM是MCU最强大和最常用的功能之一。

1、LED调光/控制亮度

原理:通过改变占空比来控制LED在一个周期内的平均通电时间。占空比越高,LED越亮。由于频率很高(通常几百Hz到几KHz),人眼不会看到闪烁,只会感觉到亮度的变化。

2、直流电机调速

原理:与LED类似,通过改变占空比来施加到电机上的平均电压。占空比越高,电机转速越快。这是机器人、智能小车等领域的基础。

3、生成模拟电压(DAC)

原理:将PWM波通过一个低通滤波器(电阻和电容组成),可以滤除高频的交流成分(方波变化),留下直流分量,即平均电压。

举例:3.3V的MCU,50%占空比的PWM通过滤波后,可以得到一个约1.65V的平滑直流电压。这相当于一个廉价的数模转换器。

4、控制舵机

原理:舵机的位置是由输入信号的脉冲宽度(不是占空比!)精确控制的。标准的舵机控制脉冲周期为20ms,其中高电平脉冲宽度在0.5ms到2.5ms之间,对应舵机0度到180度的位置。PWM是生成这种精确脉冲的理想工具。

5、音频输出

原理:通过以极高的频率(远高于人耳能听到的20KHz)改变占空比来模拟音频信号的电压变化,再经过滤波和放大,就可以驱动扬声器发出声音。

四、深入理解

1、分辨率

PWM的分辨率是指占空比可以被调节的精细程度。它通常由定时器的计数位数决定。

  • 8位定时器:计数器可以从0计数到255。那么占空比的最小调节步进是 1 / 256 ≈ 0.4%。你有256个等级来调节亮度或速度。
  • 16位定时器:计数器可以从0计数到65535。分辨率高达 1 / 65536 ≈ 0.0015%。这对于需要精密控制的场合(如高精度电源)至关重要。

2、分辨率、频率与系统时钟的关系

三者相互制约。PWM频率 = 系统时钟 / (分频系数 * (自动重载值 + 1))

在系统时钟固定的情况下,如果你想要很高的PWM频率,自动重载值就必须设得小,这会导致分辨率降低(因为可调的等级变少了)。

反之,如果你想要很高的分辨率(自动重载值很大),那么PWM频率就会降低。

工程权衡:你需要根据应用场景选择合适的平衡点。例如,LED调光可能只需要几百Hz和8位分辨率,而电机控制可能需要几十KHz的频率来避免可闻噪音。

3、对齐模式

边沿对齐模式:计数器从0向上计数到自动重载值,然后复位。这是我们最常理解和使用的模式。

中心对齐模式:计数器从0向上计数到自动重载值,然后向下计数到0。这种模式可以减小电磁干扰,常用于电机驱动和电源逆变器中。

4、互补输出与死区插入

这是高级MCU(如STM32)中高级定时器的功能,主要用于驱动H桥电路来控制电机的正反转和刹车。

互补输出:生成两路PWM信号,一路是正常的,另一路是其完全反向的。这两路信号分别控制H桥的上半桥和下半桥的开关管。

死区时间:在互补输出切换的瞬间,必须确保一个开关管完全关闭后,另一个开关管才能开启,否则会造成电源短路(“直通”),烧毁器件。死区时间就是在切换过程中插入的一个双方都关闭的短暂时间,由硬件自动插入,至关重要。

五、总结

PWM是什么:一种通过数字方式编码模拟量的调制技术,核心是占空比。

MCU如何实现:主要通过定时器/计数器硬件外设,自动、高效地生成。

它能做什么:调光、调速、模拟电压、舵机控制、音频等,用途极其广泛。

深入要点:理解分辨率、频率与系统时钟的权衡,了解对齐模式和死区等高级概念对于复杂应用至关重要。掌握PWM是嵌入式系统开发中的一项基本功,它将数字世界的精确控制与物理世界的连续变化完美地连接了起来。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐