PWM基础:基本原理、占空比与频率、电源管理应用

说到电源管理,PWM(脉冲宽度调制)是个绕不开的话题。我刚开始做电源那会儿,总觉得PWM不就是方波嘛,有什么好研究的?后来踩了几个坑才明白——PWM的参数配置,直接决定了你的电源系统稳不稳、效率高不高、会不会烧管子。

这一章,咱们就把PWM的底裤扒干净。从原理到实战,我会把我在项目中积累的经验和教训都抖出来。

PWM的基本原理

PWM说白了,就是用数字信号去模拟模拟信号。你想想看,微控制器只能输出高电平(比如3.3V)和低电平(0V),但电源需要的是可调电压,怎么办?

答案就是:让高电平和低电平快速交替出现,然后通过后端滤波,把平均值提取出来。

核心公式:

Vout = Vin × Duty

其中 Duty 是占空比,范围 0~1。

举个例子:输入5V,占空比50%,输出就是2.5V。当然,实际电路还要考虑负载、滤波电容、开关损耗等因素,但基本原理就是这么简单。

我记得有一次调试一个LED调光电路,PWM频率设得太低,肉眼都能看到闪烁。客户说“这灯在跳舞”,搞得我哭笑不得。后来把频率提到1kHz以上,问题就解决了。

占空比与频率

这两个参数是PWM的灵魂。咱们一个一个说。

占空比(Duty Cycle)

占空比就是高电平时间占整个周期的比例。用公式表示:

Duty = T_on / (T_on + T_off) × 100%

占空比决定了输出平均值。比如:

  • 0% → 一直低电平,输出0V
  • 50% → 一半时间高,一半时间低,输出一半电压
  • 100% → 一直高电平,输出满电压

我的经验:占空比不要卡在极限值。比如0%和100%附近,很多控制器会有非线性区。我一般留3%~5%的余量,避免控制精度下降。

频率(Frequency)

频率决定了PWM的开关速度。频率越高,开关管切换越频繁,损耗越大;频率越低,输出纹波越大,可能需要更大的滤波电容。

频率范围 典型应用 优缺点
几十Hz ~ 几百Hz LED调光、电机低速控制 人耳可闻噪声,纹波大
1kHz ~ 20kHz 通用电机控制、加热器 平衡了效率和纹波
20kHz ~ 几百kHz 开关电源、DC-DC转换器 效率高,但开关损耗增加
MHz级别 高频电源、无线充电 体积小,但设计难度大

为什么会有人用20kHz以上?因为人耳能听到的频率上限大约是20kHz。超过这个值,你就听不到“滋滋”声了。我做过一个项目,客户投诉电源有噪音,我一看,PWM频率设的是18kHz。改到22kHz后,世界清净了。

注意:频率不是越高越好。频率每翻一倍,开关管的开关损耗就翻一倍。我曾经在一个项目中把频率从100kHz提到200kHz,结果MOS管热得能煎鸡蛋。后来老老实实降回100kHz,加了一级LC滤波才搞定。

PWM在电源管理中的应用

PWM在电源管理里,主要干三件事:调压、调流、调功率。咱们一个一个看。

1. 调压——Buck/Boost变换器

Buck(降压)和Boost(升压)变换器是PWM最经典的应用。通过调节占空比,控制开关管的导通时间,从而改变输出电压。

Buck电路公式:

V_out = V_in × Duty

Boost电路公式:

V_out = V_in / (1 - Duty)

你看,占空比直接决定了输出电压。我调试Buck电路时,习惯先用示波器看PWM波形,确认占空比和频率对不对,再去看输出电压。这样能快速定位问题。

2. 调流——LED驱动、电机控制

LED驱动和电机控制,本质上是调电流。PWM通过控制导通时间,改变平均电流。

比如LED驱动:

  • 占空比10% → 亮度很低
  • 占空比50% → 中等亮度
  • 占空比90% → 接近全亮

但要注意,LED的电流和亮度不是完全线性的。我做过一个项目,用PWM调LED亮度,结果在低占空比时颜色偏蓝。后来查资料才知道,LED在不同电流下色温会漂移。解决办法是加一个恒流源,或者用更高的PWM频率。

3. 调功率——开关电源、逆变器

开关电源和逆变器,PWM用来控制功率传输。通过调节占空比和频率,控制能量从输入端传递到输出端的多少。

举个例子,反激式开关电源:

  • 开关管导通时,变压器储能
  • 开关管关断时,变压器释放能量给负载
  • 占空比越大,传递的能量越多

关键点:PWM的频率和占空比,决定了电源的效率和纹波。频率高,纹波小但损耗大;频率低,效率高但纹波大。这是一个trade-off,需要根据实际需求来平衡。

PWM波形生成方式

生成PWM波形,常见的有三种方式:

  1. 硬件PWM(定时器/专用PWM模块):精度高,不占CPU。我90%的项目都用这种方式。
  2. 软件PWM(IO口模拟):灵活,但占用CPU。适合对精度要求不高的场景。
  3. 专用PWM控制器芯片:比如SG3525、TL494,适合大功率电源。

我个人习惯,能用硬件PWM绝不用软件。有一次为了省成本,用软件PWM控制电机,结果CPU被PWM中断占满了,其他任务全卡死。后来换了硬件PWM,世界清净了。

PWM参数配置实战

以STM32为例,配置一个20kHz、50%占空比的PWM:

// 假设定时器时钟为72MHz
// 目标频率:20kHz
// 目标占空比:50%

// 计算预分频和自动重装载值
// 频率 = 时钟 / (预分频+1) / (自动重装载+1)
// 20000 = 72000000 / (PSC+1) / (ARR+1)

// 取 PSC = 71, ARR = 49
// 实际频率 = 72000000 / 72 / 50 = 20000 Hz ✓

TIM_HandleTypeDef htim2;
htim2.Instance = TIM2;
htim2.Init.Prescaler = 71;        // 预分频
htim2.Init.Period = 49;           // 自动重装载
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_PWM_Init(&htim2);

// 配置通道1,占空比50%
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 25;             // 占空比 = Pulse / Period = 25/50 = 50%
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1);

// 启动PWM
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);

避坑指南:我曾经在配置PWM时,把预分频和自动重装载值搞反了,结果频率完全不对。后来养成习惯:先算好理论值,再用示波器实测验证。千万别信代码里的注释,示波器才是真理。

PWM与过流保护的关系

这一章讲PWM基础,为什么要提过流保护?因为PWM的占空比和频率,直接影响过流保护的效果。

  • 占空比过大:电流峰值可能超过保护阈值,导致误触发保护。
  • 频率过高:开关管开关损耗大,发热严重,可能触发过温保护。
  • 频率过低:纹波电流大,可能触发过流保护。

所以,配置PWM参数时,一定要考虑过流保护的需求。后面几章我会详细讲怎么配置过流保护,但你现在要记住:PWM和过流保护是绑在一起的,不能分开看。

本章知识体系

下面这张图,把PWM的核心知识点串起来了。你可以把它当作一个快速参考。

PWM知识体系结构图 PWM知识体系结构图 PWM核心概念 基本原理 占空比与频率 电源管理应用 数字模拟转换 平均值原理 占空比计算 频率选择 Buck/Boost调压 LED/电机调流 核心关系 占空比决定输出值,频率决定响应速度和纹波

这张图把PWM的核心知识点分成了三个分支:基本原理、占空比与频率、电源管理应用。每个分支下面还有更细的子节点。你可以把它当作一个快速参考,以后遇到PWM相关的问题,先看这张图,定位问题在哪个分支,再深入查细节。

好了,PWM基础就讲到这里。记住:占空比决定输出值,频率决定响应速度和纹波。这两个参数选好了,你的电源设计就成功了一半。