简介:《单相有源功率因数校正电路仿真》是一份电力电子领域的技术文档,面向电气工程专业学生、电源设计工程师及科研人员,系统阐述有源功率因数校正(APFC)的原理与实现。文档针对传统AC-DC变换器谐波污染严重、功率因数偏低的问题,深入分析了Boost电路配合滞环控制的校正方案,并通过Matlab仿真验证了其可将功率因数提升至接近1、有效降低输入电流畸变的能力。内容涵盖功率因数与谐波的定义、桥式整流电容滤波的电流尖脉冲成因、CCM与DCM模式的特点对比,以及恒频/变频等具体控制策略,结构上按照绪论、原理、拓扑与控制策略的顺序展开,便于循序渐进地建立APFC知识体系。资源为单个docx文件,压缩包大小约996KB,整体精简而完整;目前已有196人学习浏览,适合用于课程设计、毕业设计或电源项目前期的技术预研。 做电源的人十有八九都会碰上“单相有源功率因数校正电路仿真”这个题目,不管是在学校做课程设计,还是刚入职接手电源项目,APFC基本是绕不开的一关。我当年做这个仿真时,光是让Simulink模型稳定跑出正弦电流波形就折腾了好几天,PI参数乱给导致发散、电感取值不合适导致电流畸变、求解器配置不对导致仿真慢如蜗牛,各种状况都遇到过。这篇文章就把整套流程重新梳理一遍:从为什么必须做APFC、主电路参数怎么算,到控制环路怎么搭、PI参数怎么调,再到常见问题怎么排查,适合准备用Simulink做单相APFC仿真、或者已经搭好模型但结果不对的朋友参考。
1. 从标题说起:这个APFC仿真到底要解决什么问题
1.1 传统整流电路为什么功率因数低
先把最基础的问题讲清楚。大多数设备输入端都有一颗整流桥,后面直接并联大电解电容。这个电容只有在输入电压峰值附近才会充电导通,其他时间全靠电容放电给负载供电,所以电网侧看到的电流是又窄又高的尖峰,不是正弦波。用功率分析仪一测,PF值往往只有0.6左右,总谐波失真THD可以飙到80%以上。
这里可以打个比方:把电网看成供水管,这种设备不是平稳匀速用水,而是每隔固定时间猛开一次阀门,其余时间把阀门完全关死。供水公司为了维持压力,只能按这个尖峰流量配置管道容量,但大部分时间管道是空转的。谐波电流还会在电缆、变压器上产生额外损耗,让旁边其他设备莫名其妙地发热或误动作。所以“功率因数低”不只是数字难看,而是实实在在的电网污染问题。
1.2 无源PFC和有源PFC怎么选
改善功率因数有两条路线。无源PFC是在整流桥前后加电感、电容或陷波器,结构简单,不用控制芯片,但工频电感体积非常大、重量也大,而且PF值做到0.9左右基本到顶了,负载变化大时补偿效果还会漂移。现在电源产品都在追求高功率密度,无源方案在大功率场合很难站住脚。
有源PFC,也就是标题里的APFC,是在整流桥和输出电容之间插入一级高频开关变换器,最常用的是Boost升压拓扑。通过控制开关管的导通和关断,强制输入电流去跟踪输入电压波形,把尖峰电流掰成正弦电流。做得好的方案可以做到PF大于0.99,THD压到5%以内,而且开关频率高达几十到上百千赫兹,磁性元件体积比工频电感小一个量级。现代开关电源、LED驱动、充电桩、电机驱动器基本都是这个路线。
下面这张表可以直接拿来对比:
| 对比项 | 无源PFC | 有源PFC(APFC) |
|---|---|---|
| 典型PF值 | 0.8~0.9 | 0.98~0.99 |
| THD | 20%~30% | 3%~8% |
| 体积重量 | 大 | 小 |
| 控制复杂度 | 低 | 中高 |
| 成本 | 低 | 中高 |
| 典型应用 | 小功率灯具、廉价电源 | 中大功率开关电源、充电桩 |
1.3 为什么先仿真再上硬件
直接搭APFC硬件不是不行,但调试成本很高。功率级炸管、控制环路振荡、采样噪声干扰,随便一个问题都能消耗掉好几个晚上,而且硬件上一旦出了问题,很难判断是主电路问题还是控制参数问题。仿真的优势就是“改参数零成本”,电感电容随便改、PI参数随意调、开关频率随时换,还能看硬件调试中很难抓到的电感电流细节、功率管电压应力这些内部信号。
做仿真的目的不是单纯交一份文档,而是把控制逻辑和参数整定方法彻底跑通。等模型里的波形合格了,再去画板子、写DSP代码,心里就非常有底。这个顺序几乎适用于所有电力电子课题。
2. 搭建仿真模型:Simulink里的APFC主电路
2.1 仿真平台选型与开模型准备
做APFC仿真可选工具不少,PSIM、LTspice、Saber都能干,但我个人建议用MATLAB/Simulink,搭配Simscape Electrical库(老版本叫SimPowerSystems)。原因很简单:Simulink的控制系统建模能力最强,APFC本身就是“功率级+控制级”的复合系统,Simulink里可以直接用连续传递函数模块搭PI调节器,也可以用S函数写数字控制逻辑,后面想改成数字控制做C代码生成也很顺畅。
打开Simulink后,先确认几个基础库在不在:Simscape Electrical里的电力电子器件、信号处理里的PWM发生器、以及电源分析用的Powergui模块。Powergui是Simulink电力电子仿真的核心,必须拖进模型里,右边的“Continuous”和“Discrete”两个模式选项后面会重点讲。
2.2 主电路参数计算(以1kW/400V输出为例)
主电路参数是仿真能跑对的根基。下面以一组典型规格为例:交流输入220V/50Hz,直流输出400V,额定功率1kW,开关频率100kHz,预计效率95%。
先算输入电流峰值:
I_in_pk = √2 × P / (η × V_rms) = 1.414 × 1000 / (0.95 × 220) ≈ 6.8A
电感电流纹波通常取输入电流峰值的20%,也就是约1.36A。Boost电感的取值需要在输入电压峰值附近计算,因为这里的占空比条件下纹波最恶劣。输入电压峰值V_in_pk = 220 × √2 ≈ 311V,占空比D = (V_out - V_in_pk) / V_out = (400 - 311) / 400 ≈ 0.223。
电感值由下面这个经典公式确定:
L = V_in_pk × D / (f_sw × ΔI_L) = 311 × 0.223 / (100000 × 1.36) ≈ 510μH
所以仿真里取500μH是比较合理的起步值。电感偏大一点,电流纹波会更小,但动态响应变慢;电感太小,电流容易进入断续模式DCM,控制特性会明显改变。
输出电容主要按纹波要求来定。输出电压纹波取1%,也就是4V峰峰值,纹波频率是全波整流后的100Hz:
C = P / (2π × 100 × V_out × ΔV_out) = 1000 / (2π × 100 × 400 × 4) ≈ 995μF
仿真中取1000μF就可以快速看到稳定输出,实际工程还会考虑断电保持时间(hold-up time),电容会适当加大到2000μF以上,但仿真阶段先用计算值即可。
完整参数表如下:
| 参数 | 取值 | 说明 |
|---|---|---|
| 交流输入电压 | 220V / 50Hz | 有效值 |
| 直流输出电压 | 400V | 目标稳压值 |
| 额定功率 | 1kW | 阻性负载 |
| 开关频率 | 100kHz | 常见APFC频率 |
| Boost电感 | 500μH | 按20%纹波电流计算 |
| 输出电容 | 1000μF | 按1%纹波电压计算 |
| 负载电阻 | 160Ω | 400V/1kW = 160Ω |
2.3 控制电路模型怎么搭
主电路搭好后开始接控制部分。单相APFC最常用的控制策略是平均电流控制,模型结构大致是:交流源→整流桥→Boost主电路→负载,这是功率级;控制级需要从主电路采样三路信号,输出电压、整流后的输入电压(馒头波)、Boost电感电流。
电压环负责稳住输出电压,它把输出电压误差经过PI调节后,输出一个慢变信号;电流环需要生成一个和输入电压同相的正弦参考电流,所以要把电压环输出和整流后的馒头波电压相乘,得到电流参考I_ref。电感电流和这个参考值比较后,经过电流环PI调节器,输出占空比指令,再送到PWM发生器。
在Simulink里,乘法器直接用Product模块,PI调节器可以用PID Controller模块。PWM发生器最简单的做法是拿占空比信号和固定的锯齿波比较:占空比大于锯齿波就输出高电平驱动开关管。注意占空比要加限幅,一般限制在0到0.95之间,因为Boost电路占空比逼近1的时候开关管几乎常通,输出无法升压,控制也会失去意义。
3. 控制参数整定:从“跑不起来”到“稳态0.99”
3.1 平均电流控制的原理
APFC控制的核心逻辑一句话就能说清:让输入电流时刻跟随输入电压的波形和相位。要实现这个目标,需要先把输入电压“整流后”的波形当作参考形状,再把这个形状缩放成合适的大小,缩放系数由输出电压误差决定。
电压环比较慢,它只负责“输出电压偏低就放大电流指令,偏高就缩小电流指令”;电流环比较快,它负责“电感电流大于参考就减小占空比,小于参考就增大占空比”。两层环路一个管稳态精度,一个管动态跟踪,带宽必须拉开差距,否则会互相打架导致系统振荡。
3.2 电流环和电压环PI参数整定流程
PI参数调试有先后顺序。千万别一上来就把两个环路都闭合,否则波形乱套时根本分不清是谁的问题。我的习惯是先断开电压环,给电流参考一个固定的常数指令,单独调电流环PI;然后再闭合电压环,调电压环PI。这样可以逐一确认每个环节的行为。
电流环PI初始值可以给KP=0.1、KI=100左右,观察电感电流跟踪固定参考的能力。如果电流波形振荡,降低KP;如果电流到达参考值太慢,增大KI或KP。电流环调好后,闭合电压环。电压环带宽必须远低于100Hz的纹波频率,一般取10~20Hz,换算成PI参数,大概在KP=0.01、KI=5这个量级。
下面是我实际调试时留下的经验参考值:
| 环路 | KP | KI | 现象与调整方向 |
|---|---|---|---|
| 电流环 | 0.1~0.5 | 100~500 | 电流振荡则减小KP;跟踪慢则增大KI |
| 电压环 | 0.005~0.02 | 1~10 | 输出有100Hz纹波正常,低带宽滤波掉;响应太慢增大KI |
一个很常见的错误是电压环KI给太大,导致输出电容的100Hz纹波直接进入电流参考,最后输入电流波形变成畸变的“双驼峰”,PF反而降下来。电压环越慢越好,这是APFC调试和普通DC-DC最不一样的地方。
3.3 求解器与仿真步长设置技巧
APFC仿真跑得慢或发散,多半是求解器设置不对。Simulink默认的ode45在电力电子开关电路里效率极低,因为开关动作会让系统呈刚性特征。建议把求解器改成ode23tb,变步长模式,最大步长设成2e-5秒,也就是一个100kHz开关周期(10μs)内至少算两步。
如果仿真规模大,还可以把Powergui切成Discrete离散模式,离散步长设1e-6秒。离散模式的好处是仿真速度非常快,而且不受连续步长限制,但也要求PWM和采样逻辑都用离散模块来实现。用离散模式时,所有控制器模块要注意采样时间设置与步长匹配,否则会出现控制信号不更新、波形奇怪的问题。
另外,每次改动PI参数后建议清空Scope里的旧波形再跑,不然新旧波形叠加在一起容易看错。仿真时间也不宜太长,0.2到0.5秒足够观察到启动暂态和稳定状态。
4. 仿真结果分析:波形、THD与三大常见坑
4.1 波形怎么读:从电压电流到功率因数
仿真跑完后,正确读波形比跑通本身更重要。合格的APFC仿真应该有这几个特征:输入电流是整个正弦形状,和输入电压同相;输出电压稳定在400V附近,纹波是100Hz的锯齿状小波动;电感电流在馒头波包络内呈现高频锯齿形状,纹波幅值符合设计预期。
THD可以用Powergui里的FFT分析工具来测。在Powergui上右键选择FFT Analysis,把起始时间选在0.2秒后的稳态区间,基波频率填50Hz,信号选输入电流,点击显示就能得到THD百分比。理想开关模型下,THD一般在0.5%到3%,如果你看到5%以上,说明控制还有问题,优先检查过零点畸变和电流环带宽。
4.2 启动电流尖峰过大
最常见的问题之一是仿真刚开始时输出电容充电电流巨大,电流波形出现几十安甚至上百安的尖峰。这是因为启动瞬间电压环误差很大,PI输出迅速饱和,占空比被顶到最大值,电容以最大电流充电。
解决办法有几个。最简单的是给电压环PI输出加限幅,别让它一上来就饱和;更好一点的做法是给输出电压参考加一个斜坡上升,模拟软启动过程。在Simulink里可以用Ramp模块作为参考输入,让它从0慢慢爬到400V。这样输出电容充电电流被限制住,启动波形就温和了。
4.3 输入电流过零点畸变
第二个典型问题是输入电流波形在过零点附近出现平台或凹陷,看起来像被削平了一截。这个现象的直接原因是过零点附近输入电压很小,Boost电路在该区间几乎无法向输出传递能量,电流跟着电压衰减得很慢;同时电流参考本身也很小,控制器的调节能力在此时很弱。
改善方法:一是适当提高开关频率,让电流跟踪能力增强;二是检查电感值是否取得偏大,电感过大会让电流爬升速度变慢;三是电流环带宽偏低时提高KI值。如果只是仿真模型想快速看到好波形,也可以稍微增大电流环带宽,代价是稳态纹波略大。
4.4 仿真发散或速度慢
第三种常见情况是仿真直接报错,提示数值奇异或仿真速度极慢。这类问题基本绕不开求解器配置、代数环、离散化三个方向。代数环是Simulink里比较隐蔽的问题,建议在控制回路里加一个Memory模块或者Unit Delay,切断瞬时反馈路径。
下面这张速查表是我在调试过程中整理出来的:
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 仿真报错发散 | 求解器不适合、步长太大 | 换ode23tb,MaxStep设为2e-5 |
| 启动电流尖峰过大 | 电压环饱和、无软启动 | 限制PI输出,给电压参考加斜坡 |
| 过零点电流畸变 | 电流环带宽不足、电感偏大 | 提高开关频率或KI,减小电感 |
| 输出电压纹波偏大 | 输出电容偏小 | 增大电容到2000μF以上 |
| 仿真速度极慢 | 连续模式、步长过小 | 改用Powergui离散模式,步长1e-6 |
| 输入电流变成双驼峰 | 电压环带宽过高 | 大幅减小电压环KI |
最后再分享一个观点:APFC仿真最核心的三件事是“带宽分层、限幅保护、采样正确”。电流环快、电压环慢,占空比限幅,采样时序对齐,抓住这三个要害,仿真通常不会出大问题。我个人做完这个仿真后再去调实体机,控制参数基本可以直接搬过去做初值,节省了大量时间。如果后面想继续深入,还可以把这个模型往三相PFC、无桥PFC、数字控制方向扩展,Simulink这套思路是完全通用的。
本文还有配套的精品资源,点击获取