
做电源这一行功率因数校正是躲不开的坎。这几年我前后做了两台kW级的数字电源样机前级PFC换过几种方案最终都落在了图腾柱PFC GaN DSP数字控制这套组合上。图腾柱PFC的好处圈里人都知道效率天花板比传统Boost PFC高配合氮化镓器件可以把开关频率拉上去功率密度也能做起来。但真正让它成为主流的还是数字控制的普及——拓扑本身早就有了能把它的潜力榨干靠的是数字控制带来的灵活性和精度。这篇先讲设计思路的上半部分拓扑选型、工作模态、数字控制链路和软件模块怎么搭下一篇再讲PCB布局、驱动、EMI和整机调试的实测内容。内容偏实战我会把公式、参数和调试时踩坑的点都放进来。适合正在做适配器、服务器电源、充电桩模块或者想转数字电源的工程师参考。1. 图腾柱PFC为什么是当前高效率电源的主流选择1.1 传统PFC方案的效率瓶颈传统PFC的拓扑大家都熟整流桥全波整流后面接一个Boost升压电路。这个方案成熟、可靠、控制简单模拟芯片方案一大堆成本也压得很低。但效率有个天花板卡在整流桥和升压二极管上。先说整流桥。交流输入电流每半个周期流过两个二极管每个二极管导通压降大约0.8V~1.0V。咱们做个简单的估算220V输入、1000W的电源输入有效值电流大概5.5A但整流桥流过的电流是半个正弦波等效平均损耗怎么也有15W到30W。这个损耗在满载效率上直接贡献了0.5%到1.5%的差距而且无法通过器件选型彻底消除只能找压降低的二极管治标不治本。再看升压二极管。CCM模式连续电流模式下升压二极管每周期都要经历一次反向恢复Qrr带来的损耗随开关频率上升得非常快。所以传统方案通常把开关频率限制在65kHz到100kHz左右再往上频率二极管反向恢复损耗和开关管的开关损耗叠在一起效率掉得让人心疼散热也跟着紧张。这就是为什么传统PFC很难在千瓦级功率下同时做到高效率和高功率密度。1.2 图腾柱如何把整流合并进升压无桥PFC的思路简单说就是把整流这个动作从独立器件里拿掉让开关管兼着完成整流和升压。图腾柱PFC就是无桥家族里用得最广的一种。图腾柱这个名字很形象两个开关管一上一下堆叠成半个桥臂像根柱子一样立在那里。它的主电路结构是交流输入端串联一个升压电感电感另一端接到高频半桥的中点半桥上面和下面各是一只开关管这两个管负责高频开关另一个桥臂就是工频桥臂通常用两只慢管或者二极管负责在正负半周切换时提供电流回路。输出母线电容并联在整体输出端。相比传统方案图腾柱省掉了整流桥的导通路径。正半周时电流从输入经过电感进入高频桥臂再经过工频桥臂的一只管子回流负半周时电流流向刚好反过来高频桥臂里两个管子交换主从关系。整个回路中同时导通的半导体器件数量减少了一半以上导通损耗直接降下来。但这套拓扑也有明显的代价输入交流电的地电位是悬浮的采样、驱动、EMI设计都比传统方案麻烦。早期图腾柱PFC没火起来主要问题就出在高频桥臂的体二极管反向恢复上——这个等下详说。1.3 GaN器件让图腾柱拓扑真正活了过来图腾柱拓扑不是新东西2010年前后就有不少论文和样机。但那时候高频桥臂只能用Si MOSFET而Si MOSFET的体二极管存在严重的反向恢复问题。在CCM模式下PFC工作状态是两个高频管交替开关一个管子关断后另一个管子的体二极管要承担续流。体二极管从导通转向截止时存储的少数载流子需要被复合这个过程产生Qrr损耗还伴随很大的电压尖峰和振铃。换在Boost PFC里这个损耗集中在二极管上发热就发热但在图腾柱结构里它落到了高频桥臂的MOSFET本身频率越高损耗越难看严重时还会因为电压尖峰直接把管子打坏。GaN HEMT氮化镓高电子迁移率晶体管没有传统意义上的PN结体二极管它的反向导通是通过二维电子气实现的不存在少数载流子存储效应。所以反向恢复电荷Qrr几乎为零关断时可以按照硬开关方式以更高频率工作这就是图腾柱PFC能搭配GaN频率上到100kHz以上而不炸管的核心原因。把这个替换逻辑捋清楚你就能明白图腾柱PFC的火热不是拓扑本身的功劳是GaN把拓扑最后的短板补上了数字控制又把控制复杂度接住了三件事凑齐了才在近几年大规模商用。2. 主电路拓扑与关键工作模态拆解2.1 主电路结构扫盲每个器件是干什么的咱们把图腾柱PFC的原理图画在脑子里左边是交流输入串联一个电感L电感出来接高频桥臂的中点高频桥臂的上下两个管子就是核心开关管右边工频桥臂连接母线电容和负载。高频桥臂这两只管是图腾柱PFC最关键的器件一般用增强型GaN MOSFET。它们负责高频开关动作根据控制信号交替导通把电感电流泵到母线侧。工频桥臂那只管子或二极管负责正负半周的回流路径因为工作在50Hz/60Hz工频可以用常规Si MOSFET也可以用快恢复二极管成本低、驱动简单我一般建议用Si MOSFET做同步整流至少能再抠一点效率但驱动逻辑要注意。母线电容是PFC输出储能电容把高频开关产生的脉动能量平滑成稳定的直流高压典型目标电压是380V~400V。电感L是升压电感负责储存和释放能量它的设计直接决定CCM模式的电流纹波和磁芯损耗。在实际设计中还要额外考虑预充电路和输入滤波器。预充电路在母线电容上电前限制浪涌电流输入滤波器用于抑制开关噪声回灌到电网这个通常在EMI调试阶段才深入优化但在布板阶段就要留出位置来。2.2 正半周与负半周的四步工作模态图腾柱PFC在一个完整的工频周期内正半周和负半周的工作逻辑是对称的但电流路径和控制对象完全对调。咱们以正半周输入电压为正为例拆开看。第一步下管开通电感储能。输入电压通过电感加在下管上电感两端承受正向电压电流线性上升能量存储到电感磁芯中。此时负载由母线电容供电。第二步下管关断上管续流。电感电流被强制改道经过上管的反向导通路径向母线电容充电。电感两端电压变成母线电压减输入电压仍然是正值但方向相反电感电流线性下降。这个阶段就是Boost电路的斩波升压过程占空比越大输出电压越高。第三步负半周到来上管变成主开关管下管变成续流管。上管开通时电感电流上升储能上管关断时电流通过下管反向导通续流流向母线电容电流方向与正半周相反但输出始终是正向母线电压。第四步工频桥臂换向。整个负半周期间原本导通的工频桥臂管关断另一只管接管回流路径。这个换向必须和输入电压过零同步如果换向不及时电流会出现一段畸变这就是过零畸变的来源之一。从控制角度看工程师只需要告诉控制器当前处于哪个半周然后选择正确的主开关管做PWM调制另外那只对应管做同步续流即可。切换点由输入电压的极性检测ZCD零交叉检测触发。2.3 CCM连续模式与CrCM临界模式的选型逻辑图腾柱PFC的工作模式主要分两种CCM连续电流模式和CrCM临界电流模式也叫BCM边界模式。这两种模式在控制策略、器件应力、EMI表现上差别很大选错方向会带来一堆问题。对比项CCMCrCM / BCM电流波形特征电感电流连续纹波小电感电流三角波每周期从零起振开关频率固定频率通常65kHz~130kHz变频随输入电压变化可能从20kHz到1MHz开关管损耗硬开通居多开关损耗占比高可设计ZVS谷底开通开通损耗接近零电感体积磁芯利用率高体积小电流纹波大磁芯利用率低磁芯更大EMI表现频谱集中在固定频率及其谐波好处理频率变化滤波器设计难度高控制复杂度平均电流控制环路设计较简单需要变频控制、谷底检测算法复杂适用功率段1kW~3kW以上中大功率65W~600W小功率适配器、充电器我的经验是做500W以下的快充适配器CrCM GaN能靠ZVS把满载效率做得很漂亮而且轻载自动跳DCM或突发模式效率曲线很平滑。做1kW以上的服务器电源、通信电源、充电桩模块选CCM固定频率对磁性器件和EMI滤波器设计都友好控制环路也稳定。目前市面上大部分数字图腾柱都是CCM GaN少数消费类产品走CrCM。数字控制在这里还有个隐藏优势可以在CCM、DCM、突发模式之间根据负载自动切换。模拟控制器要切换工作模式需要一整套电压阈值和滞回逻辑数字方案就是软件里写个状态机和阈值判断灵活得多。这也是当初我选数字方案的直接原因。3. 数字控制架构从采样到PWM的完整信号链路3.1 双环控制结构电压外环与电流内环怎么协同数字PFC的控制核心是双环电压外环稳住输出母线电压电流内环让电感电流跟踪正弦参考。两个环各司其职带宽天差地别。电压外环的带宽非常低我一般取10Hz到20Hz采样周期可以做到100微秒到200微秒。它的输入是母线电压反馈和电压参考值的误差输出是电流参考的幅值系数。这个系数会跟输入电压波形相乘形成正弦电流参考信号。为什么电压环要这么慢因为PFC输出母线电容上的电压本身就带有100Hz的工频纹波如果电压环带宽太高环路会把这个100Hz纹波当作误差去调整导致电流参考发生畸变输入电流谐波会明显变差。电流内环带宽按开关频率的1/10到1/5设计。CCM模式下开关频率100kHz电流环带宽大约10kHz到20kHz控制周期等于开关周期每个开关周期计算一次占空比更新。电流环的输入是电流参考值减去电感电流反馈的误差输出是占空比。它的设计目标是让实际电感电流在一个开关周期内快速逼近正弦参考所以带宽必须足够高但要留出足够的相位裕量避免振荡。数字实现时有个关键点电流环的计算延迟会影响环路性能。从ADC采样到PWM寄存器更新中间要经过ADC转换时间、算法计算时间、寄存器装载时间这些延迟加起来可能有几个微秒。在高带宽设计中必须补偿这一拍延迟常用的办法是在算法里做前馈或者预测补偿把占空比计算结果提前一个周期写入PWM寄存器。3.2 电感电流采样方案与增益校准数字控制的第一步是把模拟量采进来采样的精度和时刻决定了控制质量的底线。PFC控制里最核心的反馈量是电感电流采样方案常见两种第一种是采样电阻。在低频桥臂的低压侧串联一个精密分流电阻通过差分放大电路把信号送到ADC。这个方法成本低、带宽高但需要处理好共模电压和地弹噪声在大电流下采样电阻的功耗也不可忽视通常只适合小功率应用。第二种是电流互感器CT。CT几乎不引入额外损耗天然隔离高压侧适合中大功率图腾柱PFC。CT的原边串在电感电流回路里副边经过整流和采样电阻得到电压信号。缺点是低频响应差在轻载或者电流断续时误差稍大不过CCM模式下影响可控。采样时刻的选择要非常讲究。我强烈建议用PWM硬件触发ADC让采样点固定在开关周期的特定位置比如开关管关闭后、电感电流达到谷值或平均值的时刻。这样能避开开关管动作瞬间的电压尖峰和振铃采样值更接近真实平均值。数字采样的零漂和增益误差问题是PFC失控的一个隐性因素。每次上电初始化时在电感电流为零的状态下读一次ADC采集值把它记为偏置误差保存下来在运行期间从实际采样值中扣除。这个偏置校准非常必要不校准的话偏置电流会在输入电流中叠加一个直流分量久而久之可能造成电感磁偏、工频桥臂不均流甚至保护误触发。3.3 过零畸变的成因与占空比补偿手段过零畸变是图腾柱PFC数字控制里最让人头疼的问题之一。现象很直观用电流探头看输入电流波形交流电压过零的前后一小段电流会出现明显的凹陷或者平台期造成输入电流THD升高实测可能从正常的4%劣化到8%甚至更高。成因主要有两个。一是过零附近输入电压接近为零电感两端电压反向电流变化率极快传统的占空比控制难以及时响应会出现短暂的电流断续或失控窗口。二是正半周和负半周切换时控制对象需要从高频下管切换到高频上管工频桥臂也要换向如果切换时序处理得不好就会在过零点附近留下一小段真空期。我在数字控制中处理这个问题的方法在过零附近不依赖电流环误差直接计算占空比而是加入一个根据工频角度生成的占空比前馈表。这个表可以通过理论计算得到初值然后实测THD后逐点修正。工程上可以把工频周期划分为几百个角度格点每个格点存一个补偿系数在线计算时用查表加线性插值的方式补偿占空比。另一个手段是调整换向时序。切换动作要稍微提前于电压过零点我用的是提前1%到3%的工频周期。太早切会导致另一只管提前导通电流路径切换时产生毛刺太晚切则正好落在过零畸变区。这个提前量需要通过示波器观察电流波形微调我最终锁定在比过零提前约0.5ms的位置上对应50Hz工频大概是过零前3%的相位。3.4 PWM死区时间计算与ZVS实现策略图腾柱PFC高频桥臂的死区时间设计比常规半桥要敏感得多。因为增强型GaN没有体二极管反向导通压降在1.5V到2.5V左右比Si MOSFET的体二极管压降高不少死区时间太长反向导通损耗会显著拉低效率死区时间太短上下管直通GaN瞬间就烧了。死区时间的基础计算公式可以用这个来做初值估算[ t_{dead} \approx \frac{2 \times C_{eq} \times V_{bus}}{I_L} ]C_eq是高频桥臂等效输出电容之和V_bus是母线电压I_L是死区时刻的电感电流。举个例子等效输出电容300pF母线电压390V死区时刻电感电流10A估算结果大约24纳秒。这个值很小说明GaN图腾柱的死区通常就在50到150纳秒这个量级。实际设置时不能直接用这个公式的精确值因为还要覆盖器件差异和温漂。我的做法是先按公式算的理论值加上30纳秒到50纳秒的安全裕量设为初始值然后跑效率测试逐步缩小死区时间观察效率变化直到出现拐点。如果死区设得太长轻载和过零附近效率会明显变差这一点在效率曲线上非常明显。另外CrCM模式下可以用ZVS零电压开通来进一步降损耗。实现条件是死区时间足够让关断器件的结电容在电感电流帮助下完成充放电让下一周期开通的管子D-S电压先降到零再触发开通。占空比和开关频率由软件根据输入输出电压实时计算这里数字控制的价值就体现出来了模拟方案很难跨这么宽的频率范围做精确的变频ZVS控制。4. 软件模块设计中的关键实现细节4.1 MCU选型与任务调度规划数字PFC对MCU的要求不算变态但很明确ADC采样速度要快PWM分辨率要够细中断延迟要可控最好有硬件触发ADC同步功能。我常用两类平台TI的C2000系列比如F28004x、F28002x。C2000是DSP架构做电源控制有天然优势12位ADC、高分辨率PWMHRPWM、CLA协处理器。我自己量产项目里用的就是F28004xPWM分辨率和ADC同步触发这块做得很舒服官方SDK里还有现成的数字电源库DPLib控制算法可以直接参考上手很快。STM32G4系列是另一个性价比方案。它的HRTIM定时器组非常灵活专门针对开关电源设计ADC可以配置成由定时器触发同步采集频率和精度都够用。如果团队之前有STM32的开发积累G4系列会是成本更低、更容易上手的路线。软件架构上我通常把任务分成三层最上层是状态机负责模式切换、故障管理、与上位机通信中间层是慢速控制环包括电压环、温度采样、保护逻辑运行周期100微秒到1毫秒最底层是电流环中断用PWM的周期中断触发运行频率等于开关频率每次中断里完成电流采样处理、电流环计算、PWM占空比更新。电流环中断优先级最高代码必须短小精悍我一般控制在几微秒以内多出的时间用来处理一些次要标志。4.2 数字化补偿器的实现PID离散化与抗饱和模拟PFC控制芯片里补偿器是由运放和RC网络搭出来的硬件电路。数字方案里直接用代码实现。这里最基础的是一个增量式PI控制器用于电流环和电压环代码框架大概长这样// 电压环PI增量式 float kp_v 0.02f, ki_v 0.10f; float vbus_ref 390.0f, vbus_fb 0.0f; float err_v, err_v_prev 0.0f; float d_ac_ref 0.0f; // 电压环输出正弦电流参考的幅值 void voltage_loop_task(void) { err_v vbus_ref - vbus_fb; d_ac_ref kp_v * (err_v - err_v_prev) ki_v * err_v; // 限幅防积分饱和 if (d_ac_ref 5.0f) d_ac_ref 5.0f; if (d_ac_ref 0.05f) d_ac_ref 0.05f; err_v_prev err_v; }注意几个工程细节。一是在启动过程中必须限幅否则电压环的输出在母线电压没有建立起来时会飙到最大值开机瞬间容易过流。二是要做积分饱和保护标准做法就是限幅但更稳妥的做法是条件积分误差大时暂不积分误差收敛到一定范围后再正常积分。这个细节在切负载测试中特别重要不加条件积分母线电压动态响应会显得粘滞。电流环的控制周期和开关频率同步。插一句PWM周期中断里不能做浮点运算我在项目里全部用定点数Q格式来计算要不然延迟和抖动没法控制。这只是调优层面的经验新手先能跑通功能后面再逐帧优化。4.3 软启动流程与硬件/软件协同保护上电启动是整个PFC最容易出问题的环节。直接对母线电容充电浪涌电流可能大到直接把整流器件打穿。成熟的数字化流程分三步。第一步母线预充电。通过预充电阻或者NTC限流让母线电容电压慢慢升到输入电压峰值附近这一步不需要PWM参与纯硬件或者软件控制的继电器即可。第二步PWM软启动。当母线电压稳定后开始缓慢打开PWM占空比让输出电压从当前的电容电压逐步爬升到额定390V。这个爬升过程可以做成电压基准斜坡斜坡时间我一般设150到300毫秒太快会过流太慢用户会感觉输出建立偏慢。第三步电流限幅逐步放开。启动初期电流限幅设得低一些等输出电压接近额定值后逐步放开到满载限幅避免启动瞬间的热冲击。保护逻辑既要分层又要冗余。最快的是硬件比较器保护采样电流超过预设过流阈值硬件电路直接在几百纳秒内封锁PWM输入这个响应速度软件完全比不了。第二层是DSP中断保护在电流环中断里快速判断是否超限慢了半拍但逻辑更灵活可以区分过流类型、记录故障现场。第三层是慢速任务保护处理过热、输入欠压、通信超时这类不要求纳秒级响应的故障。我习惯的故障处理策略是母线过压要立刻锁PWM并打开放电回路过流可以尝试短暂降低占空比而非立即关闭过热要分级处理温度超过一级阈值降功率超过二级阈值才停机。逻辑用状态机管理每个故障都有独立的置位和恢复条件这个在反复调试中省了很多事。5. 调试实录常见问题与排查技巧5.1 上电阶段最常见的炸机原因数字PFC调试时第一轮炸机几乎都不是器件本身质量问题而是启动阶段控制逻辑问题。我先数几个自己踩过的坑。母线电容没有预充就直接跑软启动是大功率电源最容易犯的错误。母线电容在零电压状态PWM一旦打开就是短路放电电流上升速度远超软件保护能力。为了这个我在台架上加了一台带限流功能的直流电源输入电压逐级往上加并在母线电容上并联一个预充电阻调试时先用限流保护顶着确认正常后才把限流解开。死区设置错误导致上下管直通这个炸得更隐蔽。很多人以为死区设得越小越好结果GaN导通过程极快死区一旦不够上下管在几个纳秒内就完成交叉导通发热速度比保护动作快得多。我现在的流程是先把死区设成保守值比如150纳秒确认环路稳定后再逐步缩小每一步跑长时间老化测试观察发热不要一步到位。还有一类启动失控来自电流环极性判断错误。正半周和负半周的控制对象不同如果软件在切换半个工频周期时把极性标错了正反馈会瞬间让电流失控。这个没法靠保护救回来只能靠上电前把软件逻辑用仿真和开环测试仔细验证一遍。5.2 过零畸变的调试流程与波形判断过零畸变处理得好不好直接决定THD指标过不过。我的调试流程是这样的。先把输入电流波形抓下来观察过零点的形状。如果畸变表现为凹陷说明占空比前馈补偿不足需要加强过零附近的占空比补偿量如果畸变表现为平台拖尾说明换向时序偏晚需要把换向提前量加大如果过零附近出现明显的高频振铃就要检查电流采样是否受到开关噪声干扰先做采样处理再做控制补偿。补偿表的作用范围一般只需要覆盖过零前后各10度到15度的角度范围超出这个范围的基础占空比由电流环自动调整。我试过把补偿范围做得很宽结果导致非过零区域的电流波形反而出现附加畸变得不偿失。正确思路是补偿表只解决过零附近的本地问题不要把补偿量拖到整个工频周期。调试完成后的验收标准我一般看两个数输入电流THD在典型电网电压下小于5%同时在10%负载到100%负载范围内THD不能有离散点突然恶化。如果只有满载优化得好轻载THD高得离谱大概率是轻载下进入了DCM但补偿表还是CCM的补偿需要在轻载时切换成另一套参数。5.3 ADC采样噪声问题与数字滤波处理数字PFC调试中最容易让人烦躁的是采样噪声。症状表现为输入电流波形上叠加了一堆毛刺环路不稳定PWM占空比来回跳动效率数据也测不准。排查思路先从硬件下手。ADC采样信号走线要尽量短采样电阻或CT的次级引线用差分走线远离功率二极管和开关管的di/dt回路。我在第一版PCB上因为采样走线靠近高频桥臂噪声大得完全没法看波形改动走线并增加一阶RC滤波后信号质量立竿见影地改善。软件端的滤波要小心电流环带宽高不能随便加低通滤波拉高延迟。我的做法是电流环的采样值最多做一次相邻两次采样的均值再往下加滤波深度就会让环路的相位裕量崩溃。电压环和温度传感器信号可以放心多采几次求平均反正带宽低、延迟不敏感。ADC触发的时机更重要。PWM硬件触发ADC可以让采样点精确落在开关周期中电压电流最稳定的位置比如开关管关断后一段时间的中心点。有些工程师为了省事用CPU软件轮询触发ADC结果采样点随机落在开关沿上读到的信号完全是振荡值环路根本没法稳定工作。这个问题我排查了两天才找到根因后来全部改成PWM定期触发通用写法是在PWM中断里启动ADC转换转换完成后进入电流环中断处理结果。5.4 效率调试中的几个隐藏损耗点图腾柱PFC效率做到后期能明显感觉到剩下那0.5个百分点非常难抠。这里有几个被很多人忽略的地方。死区时间对GaN鹏化效率和神效率的影响是非常敏感的。我用效率测试台测过一个对照死区从50纳秒改到150纳秒满载效率掉了接近0.3个百分点。所以在保证安全的前提下死区要往小了调。工频桥臂的换流损耗。很多人觉得工频桥臂工作在50Hz随便弄个慢管就行但换向瞬间依然存在一个短暂的硬开关过程会产生尖峰损耗。选用超结Si MOSFET或者快恢复二极管换向损耗会有肉眼可见的优化。电感磁芯的温升和频率特性。CCM模式下电感电流纹波虽然小但高频纹波分量依然在磁芯里产生额外损耗。同样的标称感值不同磁材在100kHz下的性能差距很大。我项目里先后试过铁硅铝和铁氧体铁氧体在中大功率CCM模式下表现更稳定温升更低同样感值下效率更高。6. 写在最后的几个经验做数字图腾柱PFC这一年多我最大的感受是这方案拼的已经不是拓扑本身了而是控制细节的打磨。拓扑就那几个管子网上论文一搜一大把真正拉开差距的是采样准不准、保护快不快、环路稳不稳、过零处理得干不干净。这些全都要靠反复上电、反复测波形、反复改参数磨出来。给准备入坑的同行一个建议先不要急着上高电压大功率我第一版样机就是直接在220V下调试结果每次炸管都要心疼半天。后面改成低压30V到50V小电流先把环路子方向调对、保护逻辑调通再往上加电压效率高很多。这期先写到这里拓扑、控制架构和软件模块是数字图腾柱PFC的主干下篇我把PCB布局、GaN驱动电路、EMI调试和整机效率实测的数据整理出来那部分是伺候好这套控制逻辑的最后一公里也是真正决定产品能不能量产的地方。