
1. 起点为什么做一台AC-DC充电器1.1 项目来龙去脉从电池到充电器这个项目其实是被一块电池逼出来的。手头有一套4串锂电池组标称电压14.8V满充电压16.8V原来的充电器突然罢工输出时有时无。拆开一看里面的反激开关管已经炸裂次级电容也鼓了包。修旧不如做新我索性决定重新设计一台AC-DC充电器输入直接接市电输出给这组电池做恒流恒压充电。AC-DC充电器这个名字听起来宽泛但真正动手之前必须想清楚一件事它和普通电源适配器有本质区别。普通适配器只管把交流变成稳定的直流电压负载是设备而充电器的负载是电池电池在充电过程中电压会从低到高变化电流需求也在变。所以光有稳定的16.8V输出还不够必须包含恒流阶段、恒压阶段最好还要有充满后的涓流或截止判断。我的目标很明确做一个可靠、可复现、不依赖复杂单片机控制的模拟方案把充电控制和反激电源放在一块板上。这篇杂记不会去系统讲一遍开关电源理论而是把我从选磁芯到调环路、再从调环路到改布局的完整过程记录下来。如果你正准备做自己的第一台隔离式充电器或者对反激电源的设计流程有兴趣这篇文章应该能帮你避开一些最典型的坑。1.2 先定指标再谈选型很多新手做电源习惯先把元件焊上去再测结果炸了几块板才发现指标都没定。我不建议这样。电源设计的所有选型包括拓扑、磁芯、开关管、反馈方式最终都要由指标倒推。这个项目我一开始就把硬指标写在纸上参数指标输入电压AC 85V265V47Hz63Hz输出电压DC 16.8V恒压阶段精度±1%输出电流恒流3A涓流0.3A输出功率50.4W效率目标85%以上220V输入、满载输出纹波≤100mVp-p待机功耗≤0.3W隔离要求初级与次级可靠隔离充电逻辑CC/CV/涓流三段式这里每一项都直接影响后续设计。比如输出功率50W决定了反激拓扑和磁芯尺寸隔离要求决定了不能用非隔离降压芯片直接做待机功耗0.3W则要求控制芯片在轻载时进跳周期模式同时要尽量减少启动电阻的静态损耗。输出电压精度±1%也就是正负0.17V左右TL431加1%精度分压电阻完全能顶住但如果用普通5%电阻去分压温度一漂就可能超标。我建议你在动手之前也把这种表写出来贴在电脑上。后面每次犹豫“这个器件要不要省”看一眼指标就知道答案。2. 拓扑选型反激不是唯一答案但往往是共识2.1 常见拓扑方案对比AC-DC充电器可选的拓扑并不多尤其是50W这个功率段每个方案都有明显取舍。我整理了一张表方便你横向比较拓扑适用功率隔离方式恒流恒压控制成本主要短板非隔离Buck任意无隔离简单低输入直接与输出共地充电器不安全反激5W150W变压器中等低开关管电压应力高EMI需要下功夫正激50W300W变压器中等中高需要磁复位绕组变压器绕法复杂LLC谐振100W以上变压器较复杂高轻载效率和调压范围是短板非隔离Buck首先被排除原因不是效率而是安全。电池充电器会被人拿在手里输出线也可能被挤压磨损如果初级和次级不隔离一旦出现绝缘破损用户就有可能触及高压这是绝对不能接受的风险。正激拓扑在这个功率段可以做但变压器需要磁复位绕组多绕制难度明显上升性价比不如反激。LLC的效率和EMI表现很好但它是靠频率调制工作的设计谐振参数时对变压器漏感和励磁电感的一致性要求很高而且调压范围相对窄不太适合宽输入电压、还要做CC/CV切换的场景。真正做到50W级别的LLC控制芯片和驱动电路的成本比反激高一大截完全没有必要。2.2 为什么最终选择反激反激拓扑在50W这个档位几乎是标准答案。它的核心思想是开关管导通时变压器初级储能开关管关断时储能通过次级释放给负载。换句话说变压器本身就是电感既完成电压变换又完成能量传输省掉了正激拓扑里的输出滤波电感所以元件数量少成本低控制也直观。反激做充电器还有一个天然优势就是CC/CV控制方便。次级输出电压电流通过光耦反馈到初级控制芯片调占空比就能同时实现恒压和恒流。更重要的是反激变压器输入输出之间有物理隔离辅助绕组还能给控制芯片供电整个方案只需要一个磁性元件体积也容易控制。当然反激的缺点也要认。开关管关断瞬间会承受输入电压、反射电压和漏感尖峰三者叠加的应力所以选型时必须留足电压余量。另外反激是断续或临界导通工作电流纹波相对大对输入输出滤波电路有要求。但这些缺点在成熟方案里都有对应的处理方法后面布局和EMI章节我会详细讲。2.3 控制芯片和开关频率怎么定控制芯片选型我优先考虑带内置功率MOSFET的电流模式反激控制器。集成的好处是芯片厂家已经把驱动、保护、短路检测做在一块外围元件少PCB面积小寄生参数也比外置MOS方案容易控制。电流模式控制还有一个好处它天然有逐周期限流能力输出过载或变压器饱和时能快速保护。开关频率我选了65kHz。这个频率在反激电源里很常见原因很实在一是频率不算高驱动损耗和开关损耗容易控制二是65kHz的谐波不太容易干扰到民用频段EMI调试的工作量比100kHz以上小三是变压器体积在这个频率下能做到合适的大小EE30或PQ26磁芯足够承担50W功率。如果你用氮化镓器件频率可以提高很多但变压器和布线的寄生参数会变得更加敏感初学者不建议上来就挑战高频。芯片工作模式上我用了准谐振谷底导通方案。这种模式在每次开关周期内检测漏极电压的谷底在电压最低点打开开关管可以有效降低开关损耗和EMI。轻载时芯片自动降频或进入跳周期模式待机功耗更容易压低。比如我这个项目在220V输入、空载状态下测整机待机功耗约0.27W勉强守住了0.3W的指标线。3. 变压器整个充电器最像玄学的组件3.1 设计前提从匝比和电感量开始变压器设计是整个AC-DC充电器项目里最考验动手能力的部分。磁芯选的是EE30PC40材质有效截面积约110mm²。这个尺寸对50W反激来说不算紧张还能给散热和绕线留一点余量。先把几个关键参数理顺。输出电压16.8V次级整流管压降按0.6V估算输出绕组电压需要做到17.4V左右。输入最低按AC 85V计算整流滤波后的母线电压重载下大约在100V左右最大占空比取0.5反射电压Vr取90V。根据Vr和次级电压的关系算匝比匝比n Vr / (Vo Vf) 90 / 17.4 ≈ 5.17所以初级匝数比次级匝数大约是5.2比1。EE30磁芯的饱和磁通密度一般在0.4T左右反激设计一般取工作摆幅0.25T留足余量。初级匝数按下面的公式估算Np Vbulk_min × Dmax / (ΔB × Ae × f)代入数值约等于100 × 0.5 / (0.25 × 110 × 10⁻⁶ × 65000) ≈ 28匝。次级匝数就是28 / 5.17 ≈ 5.4匝取整数6匝。实际匝比变成4.67反射电压会略降但完全在可接受范围内。反激变压器还要确定初级电感量。按DCM临界方式设计输入功率Pin 50.4 / 0.85 ≈ 59W电感量用能量公式反推Lp Vbulk_min² × Dmax² / (2 × Pin × f)算出来约为327μH。这里要提醒一句这是基于理想情况的估算值实际绕完后要用LCR表测量并微调气隙让电感量落在320μH到340μH区间。如果电感量偏大轻载效率好但峰值电流小重载可能进入CCM控制环路特性会变如果电感量偏小峰值电流变大开关管和变压器损耗都会上升。3.2 绕制顺序和屏蔽层直接影响EMI变压器绕法在教科书里讲得少却是实际调试中最影响EMI和尖峰的地方。我采用的是三明治绕法初级分成两段中间夹次级绕组。具体顺序是先绕初级第一段再绕次级绕组再绕初级第二段最后绕辅助绕组。这种绕法能让初级的两个半边绕组夹住次级增大初次级之间的耦合面积漏感明显下降。漏感产生的电压尖峰是反激开关管关断时的主要威胁漏感越小RCD吸收回路压力越小EMI噪声也会更平滑。绕完之后最好测一下漏感用LCR表把次级短路测初级电感漏感占初级电感的比例控制在5%以内比较理想。如果漏感超过8%就要考虑调整绕法或屏蔽结构。初次级之间我还加了一层铜箔屏蔽包住绕组铜箔一端接初级地另一端悬空。这里有个细节屏蔽层的焊片绝对不能两端短接形成闭环否则屏蔽层会变成一个电阻极低的短路环不仅发热还会让效率下降。屏蔽层的作用是把变压器内部的共模电场泄放掉避免高频噪声直接耦合到次级接错反而变成灾难。3.3 气隙与磁芯的选择反激变压器工作在较大的直流偏磁下如果不加气隙磁芯很容易饱和饱和之后电感量骤降初级电流瞬间飙升开关管和整流管都会受伤。EE30磁芯在中心柱磨气隙气隙厚度可以按经验公式估算lg ≈ 0.4π × Np² × Ae / Lp。把Np28、Ae110mm²、Lp330μH代进去约0.33mm。实际操作中我一般先在中柱上垫一层聚酰亚胺胶带或青稞纸测出电感量再根据偏差增加或减少垫片厚度。注意气隙加大会降低磁导率需要略增加匝数才能维持电感量所以理想做法是先磨气隙再定匝数。如果磁芯磨过头了不要硬塞到变压器壳里换一只磁芯重新来更靠谱。绕制还有一个容易忽视的点磁芯装配方向。EE磁芯的中柱有气隙气隙处漏磁很大如果靠近敏感电路会干扰控制芯片的工作。装配时最好让气隙位置远离控制芯片一侧必要时在气隙外侧加一小片铜箔胶带屏蔽。很多EMI问题就是变压器气隙漏磁直接耦合进控制环路导致的处理完气隙问题会缓解一大半。4. 反馈补偿与充电控制4.1 环路的基本构成反激电源的反馈环路本质上是把输出电压或电流的变化转换成光耦LED电流的变化再传到初级控制芯片的FB脚改变占空比。这个项目里我用TL431作为电压基准和误差放大器搭配PC817光耦完成隔离反馈。次级侧还要额外加一个恒流控制环路因为只做恒压的话电池充电电流会失控。恒流环我用了一个普通双运放来实现。输出电流在回路里串联一个0.1Ω的锰铜采样电阻压降0.3V对应3A。把这个压降放大后和恒流基准电压比较当输出电流超过设定值运放输出就主动拉低光耦LED的电流从而让初级降低输出。恒压环和恒流环通过二极管隔离后共同控制光耦哪个环要求更低的输出电压就生效这就是典型的“环路取低”逻辑。这种模拟CC/CV控制方案好处是延迟极低不需要单片机干预。给电池充电时先以3A恒流方式把电池电压往上推等电池电压接近16.8V恒压环接管电流自然下降最后进入涓流阶段。对于4串锂电池组这个精度足够用了。4.2 TL431加光耦的补偿写法TL431的R极连接到输出电阻分压点K极通过上拉电阻和光耦LED连接。R极到K极之间要并联一组RC网络形成II型补偿目的不是为了好玩而是为了调整环路的增益和相位。我的做法是先放一个10nF电容在R极和K极之间再串联一个1kΩ电阻和100nF电容的组合组成一个零点和一个极点。零点放在几百赫兹用来抵消输出电解电容ESR带来的零点影响极点放在几十赫兹压低高频增益保证环路不会在高频处振荡。这里想多说一句反馈环路不是越“硬”越好。输出电压纹波大很多人想通过提高环路增益来解决结果增益一高变压器漏感和电容ESR带来的高频噪声也被放大控制芯片的FB脚上出现一堆毛刺反而让占空比抖动。我调试时吃过这个亏最后把增益降下来瞬态响应稍微牺牲一点但稳定性立刻变好了。4.3 为什么输出电容和相位裕度都要留余量电池接入瞬间充电器输出端相当于接了一个很大的电容。如果环路相位裕度不足接上电池那一刻电池电容会和输出反馈环路形成LC谐振输出电压会出现长时间振荡甚至导致保护误动作。输出电容本身的ESR也在环路里扮演重要角色ESR太低ESR零点频率太高如果补偿网络没有给够相位提升环路一样会不稳定。所以我建议在测试阶段不只测电阻负载还要真的接上电池试。电子负载虽然是好东西它的等效电容特性和真实电池差别很大。我用电子负载测试时环路表现很好换了电池之后电压在2A电流切换时出现了明显振铃。后来把输出电容从两个470μF并联增加到三个并微调了补偿电容振铃才压下去。5. 布局、EMI与测试现场5.1 PCB布局顺序不是拍脑袋是走电流路径反激电源的PCB布局我最看重一个原则让高频开关电流的环路面积最小。变压器初级、开关管、输入电解电容之间会形成脉冲电流回路这个回路面积越大辐射噪声越强传导EMI也越难压。我布线时的顺序是输入端子到整流桥整流桥到大电解电容大电解电容到变压器初级的正端同时要从初级的负端连到开关管漏极开关管源极经过电流采样电阻回到大电解电容负极。这个回路中的元器件尽量摆成一条线不要绕弯开关管的散热片位置也不能和这条回路穿插否则会增加额外寄生电感。次级侧同样要注意。变压器次级绕组、整流二极管、输出电容之间也存在高频电流回路我习惯让次级绕组引脚直接对着整流二极管整流二极管再直接对着输出电容三者之间的距离尽量短。整流二极管如果离输出电容太远导线电感会和输出电容谐振产生高频振铃这个振铃是纹波超标的重要原因。5.2 输入输出滤波的取舍输入滤波部分我在保险丝后面加了NTC热敏电阻抑制上电浪涌然后是X电容和共模电感。启动瞬间大电解电容相当于短路如果没有NTC整流桥和保险丝很容易在第一次上电时炸掉。X电容主要滤除差模噪声共模电感滤除共模噪声这样组合对传导EMI有很好的压制效果。共模电感后面的大电解电容容量我取的是47μF/400V。容量的取值要看母线电压纹波和最低保持时间50W输出下47μF已经能满足要求。容量过大会拉低功率因数、增加浪涌电流容量过小则最低母线电压掉得太狠影响反激在低压满载下的输出能力。输出侧滤波我用了两级一级是电解电容吸收低频纹波一级是小型共模电感和陶瓷电容滤除高频开关噪声。这里有个教训不要在输出端堆太多陶瓷电容而不考虑阻尼。陶瓷电容ESR极低容易和输出电感产生高频振荡最终纹波反而更大。电解电容和陶瓷电容搭配使用才是合理的滤波结构。5.3 热测试和效率测试的坑满载测试时我用电子负载把输出恒定在16.8V、3A然后用功率计记录输入功率效率输出功率÷输入功率。220V输入下实测效率86%还算达标但85V输入时效率掉到了82%左右这很正常因为低压输入时初级电流更大开关管导通损耗上升变压器铜损也增加。热测试比效率测试更花时间。我用热像仪扫了整个板子温度最高的器件是变压器和开关管。变压器在环境温度25°C时表面温度到了86°C开关管外壳温度到了84°C。这个温度在常态环境里能用但夏天密闭环境里可能偏危险。我后来在变压器的上下两面加了散热垫把热量引导到外壳铝合金板上满载运行半小时温度能再降接近10°C。热测试要至少跑半小时不能只测几分钟就结束磁性元件和电解电容的热平衡很慢有些板子十分钟内看起来正常二十分钟后纹波突然变大十有八九是电容温度太高导致特性变化。6. 常见问题排查实录6.1 上电就炸先从缓启动和输入浪涌查起这个项目第一次打样上电时没有串调压器直接把电源插到插座上结果一声闷响保险丝和整流桥一起走了。后来排查问题不是元件选错而是上电瞬间NTC冷态电阻不够大浪涌电流直接冲破了整流桥的承受能力。正确操作是先接一个220V、100W的白炽灯串在交流输入端相当于限流电阻。如果板子不正常灯泡会变成很亮这说明有大电流如果板子正常灯泡开机会闪一下然后保持暗淡。用这个方法我再上电时避开了一次又一次炸板。另外每次拔电后不要立刻摸大电解电容必须等它放电或者用放电电阻人工放掉400V电压可不是闹着玩的。如果板子上电后反复烧开关管优先查辅助绕组极性。辅助绕组反接输出极性反了芯片供电会异常开关管驱动波形会乱掉。第二查变压器输出绕组的同名端相位相位反了反激会变成正激输出起不来初级电流还会异常升高。6.2 输出电压飘多半是反馈采样位置不对第二批板子调试时我发现恒压阶段电压在16.6V到16.9V之间缓慢漂移温度变化后漂得更厉害。一开始怀疑TL431质量问题换了好几颗也没有改善。后来发现是反馈采样线接在了输出电容正极而输出滤波的LC网络在电容后面还有一点压降负载变化时采样点和输出端口的电压不一致。我把采样线改到输出端口的铜箔上并且用开尔文接法单独走一对细线不和高电流主回路共用走线电压就稳定了。如果板上空间允许最好让TL431分压电阻的下端直接接到输出端负极避免采样回路承担输出电流在铜箔上的压降。这个方法在低电压大电流输出时特别重要因为铜箔的电阻在几安培电流下会产生几十毫伏级误差直接破坏恒压精度。6.3 待机功耗降不下来看启动电阻和假负载设计指标是待机功耗0.3W以内第一次测0.35W。我检查了一圈发现启动电阻一直挂在母线高压和芯片启动脚之间。芯片启动后应该由辅助绕组供电但这颗启动电阻仍然持续消耗电流功耗硬生生多了0.1W。解决办法是调整启动电阻的阻值让它在满足芯片启动时间要求的前提下尽量变大。把两个470kΩ串联改成两个1MΩ串联启动时间从约1秒变成2秒待机功耗降到了0.27W。如果对启动时间要求苛刻可以加一个高压启动电路启动完成后关闭启动电阻但元件成本会增加一点对于这个项目没必要。假负载也要检查。反激电源在空载时如果输出端的放电电阻太大输出电压会被拉高或振荡。但放电电阻也不能随便取消因为输出电容需要维持最小负载。我把一个1kΩ的假负载改成3.3kΩ待机功耗又降了一截同时空载电压依然稳定。6.4 常见问题速查表症状可能原因检查方法处理方向上电烧保险丝整流桥击穿、NTC阻值太小断电后测整流桥、电解电容增大NTC或换整流桥输出无电压启动电阻断、辅助绕组相位反测芯片启动脚电压、辅助绕组波形换启动电阻、调整绕组同名端输出电压偏低反馈分压电阻漂移、环路补偿过高测TL431基准电压、FB脚波形换1%电阻、调整补偿网络输出纹波大输出电容ESR大、布局回路远示波器看开关节点、输出端纹波就近放输出电容、增加小容值陶瓷满载时开关管过热漏感过大、RCD吸收损耗偏高测漏感、看漏极尖峰调整绕法、重新匹配RCD待机功耗超标启动电阻损耗、假负载过大逐项断开待机功耗来源增大启动电阻、减小假负载7. 再做一次我会改什么7.1 把模拟充电控制换成带PID的小控制器这个项目的模拟恒流恒压方案优点是响应快、无代码、好调试但也有明显不方便的地方充电曲线是固定的电流和电压的设定依靠硬件电阻换一组不同规格的电池就得重新算一遍分压电阻和采样电阻。如果重新做我大概率会在次级侧加一颗几毛钱的小控制器用电阻分压把电池电压送给ADC用采样电阻把电流送给另一路ADC然后用软件做CC/CV切换和充满截止。这样不仅可以轻松调整充电曲线还能增加电池温度检测输入温度超过45°C就降流充满之后自动关断这对锂电池充电器来说非常重要。模拟电路做这些功能会很啰嗦但用控制器就是几条判读逻辑。当然加上控制器之后反馈环路也会变得更复杂。软件调节占空比不能太激进否则会在电池接入瞬间出现振荡。我会在恒压环上使用慢速PI控制让占空比平滑变化恒流环则用快速PI这样两种模式切换时不会冲击输出。7.2 物料和工具储备建议做AC-DC充电器手里有一套趁手的工具比多买几块开发板有用得多。示波器必须有至少100MHz带宽最好带隔离通道或者用差分探头测初级高压信号。LCR表用来测变压器电感量和漏感电子负载用来测恒流和带载能力热像仪虽然贵但能帮你快速找到热点如果没有红外热像仪可以用点温计逐点扫。变压器物料我会多备几种磁芯EE30、PQ26、EFD30都买几对不同磁芯的漏感和散热表现差异很大。二极管和开关管也要多备几颗炸管在电源调试中太常见了多备一点能省下等快递的时间。输出电容建议直接采购低ESR长寿命品种普通电容在高温工作状态下衰减很快半年后输出纹波变大是常有的事。最后还有一句安全提醒调试AC-DC充电器时初级部分是带高压电的不要在通电状态下去触摸元件和走线必须连接隔离变压器操作养成单手调测、先放电再拆板的习惯。电源调试确实有风险但这些习惯养成了反而会越做越顺手。