1. 为什么“只调电压”在真实项目里不够用调试BUCK电源的时候大多数人翻来覆去就动那一个元件——反馈分压电阻把输出电压调准就收工了。但真到了给锂电池充电、驱动LED灯串、或者后级可能短路这类场景光把电压调准根本不够用你需要的是电流也被限制住。TL494这个老牌PWM控制器内部其实藏着两个误差放大器多数人只用了一个做电压环第二个白白闲着。这篇内容就是讲怎么把TL494的第二个误差放大器用起来给BUCK电路搭出真正的恒流模式实现电压/电流双环自动切换让电源具备限流、充电、过流保护这些“智能”能力。1.1 锂电池充电没有限流的电源会直接炸给你看很多人在实验室里做锂电池充电器第一步就是把BUCK的输出电压调到4.2V然后接上电池觉得万事大吉。实际上电池没电的时候端电压可能只有2.8V甚至更低这时候BUCK的输出电容和电池之间的压差全部加在回路上充电电流完全失控。如果是18650电芯内阻只有几十毫欧瞬间电流能冲到十几安充电芯片没烧电池先鼓包了。正确的做法是BUCK先以恒定电流给电池充电电池电压慢慢爬升到了4.2V之后自动切换成恒压模式电流逐渐减小。这个“先恒流、后恒压”的过程电源行业叫CC-CV充电。如果只用单个电压环你只能做到“限制最高电压”做不到“限制充电电流”这就是标题说的“别再只调电压了”最典型的场景。1.2 LED驱动与短路过流恒流不是“高级功能”是安全底线LED驱动是另一个典型。LED是电流型器件亮度由电流决定电压稍微变化一点电流就可能翻几倍。用电阻限流当然可以但电阻上的损耗大而且LED结温升高后压降下降电流只会越来越大光衰越来越快。恒流源才是LED驱动的正解。还有个场景是后级短路。普通BUCK没有限流输出短路的一瞬间电感电流不受控地往上冲MOSFET和续流二极管很容易直接炸掉。就算加了保险丝那也是事后保护不是主动限制。有了恒流环输出短路时电源自动进入CC模式电流被死死压在设定值上电源本身不坏短路移除后还能自动恢复。这套逻辑在工业电源里叫“限流保护”在可调电源里叫“恒流输出”本质都是同一个东西——让电源知道“电流不能超过多少”。1.3 TL494里的第二个误差放大器被多数人忽略的“隐藏开关”TL494这颗芯片1960年代就出来了现在看确实老但它在电源工程师手里的地位一直没倒。它内置振荡器、5V基准、两个误差放大器、PWM比较器、死区控制、两路输出晶体管一套完整的PWM控制核心。很多人在BUCK电路里用TL494只用了一个误差放大器做电压反馈把另一个直接接地闲置。实际上这颗芯片设计之初就预留了双环控制的架构第二个误差放大器就是留给限流、恒流这类功能的。我没记错的话TL494的datasheet里给的方框图两个误差放大器的输出都汇总到COMP节点也就是Pin3。这个节点最终接到PWM比较器控制输出脉冲宽度。也就是说谁把COMP拉得更低谁就说了算。第二个误差放大器做恒流环输出直接叠加在同一个COMP节点上不需要额外加任何切换逻辑硬件上天然支持CC/CV自动切换。这就是我接下来要展开的东西。2. 先弄清TL494误差放大器的脾气线或逻辑与输入边界2.1 两个误差放大器怎么“抢”COMP控制权TL494的误差放大器不是普通运放那种推挽输出结构它内部是开集电极输出。每个误差放大器的输出级是一个NPN三极管集电极连接到COMP节点发射极接地。当正相输入Noninv电压高于反相输入Inv电压时输出三极管导通把COMP节点往下拉反之则三极管截止输出高阻不干预COMP。两个误差放大器的输出在COMP节点内部直接并联这就是所谓的“线与”或者叫Wire-OR。谁的输出更低COMP就被谁主导。回到我们的应用误差放大器1做电压环输出电压采样接同相端基准接反相端。输出电压低于设定值时同相端低于反相端输出截止不干预输出电压高于设定值输出导通往下拉COMP减小占空比。误差放大器2做电流环电流采样信号接同相端限流基准接反相端。负载电流低于限流值时同相端低于反相端输出截止不干预电流超过限流值输出导通同样往下拉COMP减小占空比。正常情况下输出电压在设定范围内误差放大器1输出截止误差放大器2也截止COMP被内部上拉电流源拉到高位占空比由最大占空比决定。轻载时输出电压偏高电压环介入重载或短路时电流超限电流环介入。两个环路一个管电压上限一个管电流上限互不干扰自动交接。理解这一点后你就能明白为什么我用“智能芯”这个词来形容TL494的恒流模式它不靠MCU不靠软件纯粹靠模拟比较逻辑就实现了CC/CV自动切换上电那一刻起就一直在工作不会死机不会掉固件。2.2 为什么说低端采样是TL494恒流方案的天然组合电流采样有高端采样和低端采样两种。高端采样在输出正端串采样电阻用差分放大器或专用电流检测放大器把信号取出来。好处是负载可以直接接地缺点是共模电压很高对放大器要求苛刻而且TL494内部误差放大器的共模输入范围是-0.3V到VCC-2V采样信号如果叠加在24V或者更高的输出电压上根本没法直接送进去。低端采样在输出负端、负载和系统地之间串采样电阻采样信号对地电平很低一般在几十到几百毫伏完全落在TL494误差放大器的共模输入范围之内可以直接接。这是低端采样的最大优势简单、便宜、不需要额外的差分放大器。代价是负载地电位被抬高了一个采样压降如果负载对地电位敏感就要考虑这个偏移量。另外低端采样的地弹问题严重后面第4节我会专门讲怎么用Kelvin走线解决。我的结论是在大多数12V、24V输入的BUCK应用里TL494低端采样是性价比最高的恒流方案。输出5V时采样电阻压降200mV对负载影响很小完全可以接受。2.3 输入共模范围的坑VCC-2V这个上限和-0.3V这个下限TL494的误差放大器输入共模范围规格书给的是-0.3V到VCC-2V。这意味着什么如果VCC12V那么误差放大器的两个输入引脚电压不能超过10V不能低于-0.3V。低端采样信号正常在0到0.2V之间没问题但开关节点的高频振铃和地弹可能把采样信号打到负压一旦低于-0.3V误差放大器输入端就会正向偏置可能把输入电流灌进芯片内部轻则采样不准重则烧毁芯片。所以低端采样必须保证采样电阻的信号走线足够短、靠近IC引脚并且在输入引脚上并联一个小电容到地滤掉开关噪声和地弹尖峰。规格书还提到如果误差放大器闲置不用两个输入应该接地避免悬空捡噪声输出端虽然开集电极不接负载但悬空输入可能导致内部晶体管乱导通。另外5V基准Pin14的带载能力只有10mA给振荡器定时电阻、分压网络、基准分压供电都必须算清楚总电流。我自己就吃过亏在基准上给LED指示灯供电结果基准电压被拉低了好几十毫伏恒流设定点肉眼可见地漂移。基准这玩意儿能省则省。3. 恒流环电路设计从采样电阻到COMP的完整信号链3.1 先把BUCK主电路参数算明白18-36V输入、5V/4A输出我以一个具体设计为例展开输入电压18-36V典型24V输出5V/4A开关频率设定在约110kHz恒流设定4A。这是很常见的板级电源参数。先决定开关频率。TL494的振荡器频率公式是fosc ≈ 1.1 / (RT × CT)RT接在Pin14和Pin6之间CT接在Pin5和地之间。我取RT10kΩ、CT1nF计算得到约110kHz。这个频率对大多数磁性元件和MOSFET都友好TL494本身能轻松应对同步BUCK驱动IC也没有压力。最大占空比出现在最低输入电压时Dmax Vout / Vin_min 5 / 18 ≈ 0.278。最小占空比出现在最高输入电压时Dmin 5 / 36 ≈ 0.139。电感纹波电流取输出电流的15%左右也就是0.6A。电感量按最高输入电压占空比最小工况计算L Vout × (1 - Dmin) / (fsw × ΔI) 5 × (1 - 0.139) / (110000 × 0.6)≈ 65μH取标称值68μH。电感饱和电流至少留1.2倍峰值电流余量峰值电流 4 0.3 4.3A所以饱和电流必须大于5.5A。我用的是铁硅铝磁环绕的68μH饱和电流余量能做到8A没问题。输出电容按纹波要求选。陶瓷电容加电解电容混合使用电解电容提供主要储能陶瓷电容负责高频去耦。输出纹波主要由ESR决定ΔV ΔI × ESR ≈ 0.6 × 0.025 15mV完全满足50mV纹波要求。电容组合我选了470μF/10V低ESR电解电容加2颗22μF/25V X7R陶瓷电容4A输出时实测纹波约18mV。3.2 采样电阻选型0.05Ω、2W只是起点采样电阻是整个恒流环的“前端传感器”精度直接决定恒流设定点的精度。我选0.05Ω也就是50mΩ。4A电流时压降200mV这个值不能太小太小会被误差放大器失调电压吃掉也不能太大太大浪费功率且抬高地电位。200mV对TL494来说是个不错的信号水平。功率计算P I² × R 4² × 0.05 0.8W。标称功率2W只是个起点实际还要看温升。合金电阻或者康铜丝是必须的不能用普通贴片电阻普通厚膜电阻的温漂太大电流一上去阻值就跑恒流点跟着漂。我用的是一款2512封装的1%精度合金采样电阻温漂系数约50ppm/°C实测从室温到70℃阻值变化可以忽略。采样电阻放在输出负端和系统地之间也就是低端采样。负载电流从采样电阻流过在采样电阻两端产生压降这个压降就是电流信号。注意采样电阻的连接一定要用Kelvin结构也就是信号线从电阻的两个焊盘内侧单独引出不能让大电流主回路经过信号线否则PCB铜箔电阻会叠加进采样信号恒流点全偏。3.3 电流基准设定与滤波网络参数TL494的5V基准经过两个电阻分压得到限流基准电压。4A电流对应采样电阻压降200mV所以基准电压设200mVR_top 24kΩR_bottom 1kΩV_ref 5 × 1 / (24 1) 0.2V 200mV分压电阻我用1%精度。如果想限流点可调把R_bottom换成10kΩ电位器串一个330Ω固定电阻可以实现大概1.5A到8A的连续调节范围但注意采样电阻功耗和电感饱和电流会限制最大可用电流别调太高。Pin16误差放大器2同相输入接采样信号Pin15误差放大器2反相输入接200mV基准。采样信号从采样电阻到Pin16之间加了一级RC滤波R100Ω、C10nF截止频率约159kHz。这个滤波非常关键开关节点的高频振铃如果不滤掉误差放大器2会在开关边沿被毛刺反复触发CC模式会输出肉眼可见的纹波振荡。RC时间常数带来的延迟对110kHz开关频率来说可以忽略但对几十MHz的高频噪声衰减很明显。Pin15基准电压端也加了100nF电容到地滤掉基准上的噪声。这里的逻辑是电流环的参考源一定要“干净”基准如果带着纹波整个恒流环都会跟着抖。3.4 同步BUCK驱动TL494输出怎么接半桥驱动ICTL494的输出级是开集电极/开射极结构Pin13接地是双端输出模式Pin13接5V基准是并联单端输出模式。BUCK需要接近100%占空比的能力所以我用并联模式Pin13直接接Pin145V基准C1和C2并联后接VCCE1和E2并联后作为PWM输出输出端接10kΩ下拉电阻到地。TL494输出高电平接近VCC低电平被下拉电阻拉到地。但注意TL494内部输出晶体管在导通时是低阻抗截止时靠外部下拉电阻拉低。这个下拉电阻必须有否则低电平会悬浮。我用的10kΩ下拉高电平约11.8V低电平约0.1V足够驱动半桥驱动IC。同步BUCK需要互补带死区的驱动信号来推动上下两个N-MOSFET不可能让TL494直接驱动。我在中间加了一颗带内部死区的半桥驱动IC方案是IR2184这种单路输入、互补输出的驱动芯片。TL494的PWM输出直接接IR2184的IN引脚芯片内部自动产生带死区的HO上管和LO下管互补信号不需要额外生成反相信号。半桥驱动必须配自举电路VB和VS之间接100nF自举电容VS接半桥中点。VCC用12V给驱动IC供电和TL494的VCC共用一个12V。上下管我选了耐压60V以上、RDS(on)在10mΩ左右的N-MOSFET4A输出电流下导通损耗很小。栅极回路串10Ω电阻抑制开关振铃。3.5 COMP端电容全局补偿的一刀切与取舍COMP端Pin3是TL494频率补偿的“操作窗口”。很多人不知道COMP端绝对不要接大电阻到地因为COMP节点内部有上拉电流源外部对地电阻会直接把COMP静态电位拉低导致占空比上不去。正确做法是COMP到地接一个电容形成积分主极点。我调试时用的是10nF电容到地。这个电容同时作用于电压环和电流环电流环的带宽被限制在一个较低的水平换来的好处是两个环路都稳定不会出现CC/CV切换时的振荡。如果COMP电容太小比如1nF以下电流环带宽太高开关噪声很容易激励起限流环自激振荡输出电流会周期性摆动。如果太大比如100nF系统响应变慢短路时电流环接管太慢起不到快速限流的作用。要更精细地分别补偿两个环路就得用外部运放做电流环然后通过二极管接到COMP。但那是另一种方案这里直接用的内部误差放大器结构COMP端一个10nF电容就够了。实测下来这个参数在重载切恒流、短路保护、CC/CV自动切换时都没出现明显振荡属于“粗调一把过”的典型参数。4. 调试恒流环最容易踩的三个坑地弹、切换点振荡、短路恢复4.1 地弹如何骗过误差放大器以及Kelvin连接的正确姿势第一次做低端采样时我犯过一个特别典型的错误采样电阻的PCB走线路径上大电流先流过采样电阻的一段焊盘再从焊盘引线到控制IC的GND引脚。结果在示波器上一看恒流点一直在抖4A设定值实际是3.2A和4.6A之间来回跳根本稳不住。问题出在地弹上。大电流回流的路径有寄生电感电流变化时在铜箔上感应出电压这个电压哪怕只有几十毫伏也会叠加在采样信号上。而采样电阻正常压降才200mV几十毫伏的噪声已经是相当大的比例了。TL494误差放大器无法区分这个噪声是真实电流信号还是地弹只能照单全收。解决方法是Kelvin连接。采样电阻两侧的信号线要从电阻焊盘的内侧单独引出走细线直接送到TL494的Pin16和系统地信号路径与大电流主回路完全分开只在采样电阻两个焊盘上汇合。这样地弹电压不会叠加进采样信号因为信号线不经过大电流路径。控制IC的GND引脚也要单独走线回到采样电阻的地端不要让控制IC的GND电流流过采样电阻。PCB布局上还有一条铁律采样电阻尽量靠近负载的返回端不要让功率地电流在采样电阻和负载之间再串一段长的铜箔走线否则这段铜箔的压降也变成采样信号的一部分。4.2 CC/CV切换点怎么用电子负载和示波器看明白调恒流环没有电子负载和示波器等于瞎猜。电子负载设成恒压CV模式也就是设定一个电压然后让电源往里灌电流。从低到高一点点调电子负载的设定电压观察电源的输出状态如何从恒压转入恒流。具体操作先把电子负载设成CV模式比如5V此时电源输出5V电流由负载决定。把电子负载的设定电压调低到4.9V电源会试图把输出电压拉回5V电流增加。继续慢慢调低电子负载设定电压直到输出电压开始低于5V此时电源进入了恒流模式输出电流被钳在恒流设定值4A上。用示波器同时看输出电压和负载电流切换点应该是一个平滑的过渡电压缓慢下降电流稳定在4A不能出现电流尖峰或者振荡。如果看到输出电压刚要从5V跌落时电流突然冲到5A再回落说明电流环没及时接管需要检查采样滤波时间常数和COMP电容。如果切换点处电流来回摆输出电流波形像锯齿波说明电流环有自激振荡这时候要把COMP端电容调大同时检查Pin16前的RC滤波是否有效。4.3 短路恢复时的电流过冲一次完整的排查链路有一次调完恒流环短路测试时发现一个非常隐蔽的问题输出短路瞬间电流尖峰达到了6.8A持续了约80μs才被电流环压回4A。虽然这个尖峰没烧器件但已经接近电感和MOSFET的极限了万一输入电压再高点很可能直接击穿。排查过程是这样的先看TL494的COMP端波形发现Pin3被拉低时有一个明显的毛刺持续几十微秒电流尖峰和这个毛刺完全同步。再往前查发现Pin16的采样信号在开关动作瞬间有一个窄尖峰这个尖峰的幅度超过了限流基准导致误差放大器2误触发COMP被提前拉低占空比被错误地限制住。但当输出电压掉为零、真正的短路发生时占空比已经完全被之前那个“假触发”压住了误差放大器2需要花时间重新把COMP拉低这个时间窗口就是80μs的过冲窗口。真相是Pin16上的毛刺来自采样电阻两端寄生电容在开关节点高压跳变时形成的位移电流也就是dV/dt耦合到采样电阻信号线上。我在采样信号线上加了一个10nF电容到地把信号源阻抗降低同时把RC滤波电阻从100Ω加大到330Ω滤波截止频率降到约48kHz有效衰减了高频耦合分量。改完后Pin16上的毛刺被压到几毫伏短路电流尖峰从6.8A降到了5.1A持续时间缩小到约15μs完全可以接受。这个排查过程我花了一下午最后发现根因不在TL494本身而在采样信号线上的寄生耦合。低端采样最怕的就是这种高频污染你在实际项目中遇到CC模式不正常、限流点漂移、短路过冲偏大这些问题时先别急着怀疑芯片把示波器探头夹在采样电阻的信号线上看看是不是有高频毛刺顶着。5. 一组实测数据恒流精度、切换点、纹波和温漂5.1 恒流设定值与实测值的偏差我把这台试验板的恒流设定值定在4A然后用电子负载在CV模式下逐点校准。实测数据如下负载设定电压 (V)实际输出电压 (V)实际输出电流 (A)工作模式5.0005.0000.50CV5.0004.9982.00CV5.0004.9973.60CV4.9004.8543.95CV边界4.7504.5124.03CC4.5004.1054.05CC2.5000.6244.06CC0.5000.0064.07近短路可以看到CC模式下的电流稳定在4.03-4.07A之间和设定值4A的偏差约1.5%这个精度对TL494级别来说相当不错。误差主要来自采样电阻精度1%和TL494误差放大器输入失调电压约±2mV折合电流±40mA。从CV转到CC的边界上输出电流从3.95A平滑过渡到4.03A没有跳变切换点很干净。5.2 CC模式下的输出纹波和电感电流波形CV模式下5V输出的纹波约18mV这是电感纹波电流0.6A在输出电容ESR上的正常表现。一旦进入CC模式纹波会变大实测约45mV接近50mV的设计目标上限。这是因为CC模式下COMP被电流环钳住占空比不再由电压环精细调整输出电压的控制精度下降输出电容上的残余纹波自然变大。对电池充电和LED驱动场景来说这个纹波水平完全够用。电感电流波形在CC模式下是标准的三角波平均值4A峰峰值0.6A。当电子负载设定电压降到接近零时输出电压接近0占空比几乎为0电感电流的三角波变成一条近乎平直的4A直线此时续流二极管同步BUCK中是下管MOSFET的体二极管或同步整流管承担几乎全部电流温度上升明显。这提醒我们持续短路状态下下管和采样电阻的功耗管理要做好不能指望无穷无尽地扛。5.3 温度上升后的恒流点漂移满载连续工作一小时后我用热像仪看了下各器件温度电感约62℃采样电阻约58℃上管约55℃下管约51℃TL494本身约40℃。这时候再量恒流点变成了4.09A比冷态时的4.05A又高了一点。这个漂移主要来源是采样电阻的阻值随温度上升而采样电阻阻值升高后同样的电流产生更大的压降误差放大器2提前触发理论上恒流值应该下降才对。实测反而是升高了说明另一个影响因素占了主导——TL494的5V基准和误差放大器失调电压随温度漂移。综合效应约1%对于充电和限流用途完全没问题。如果你要求恒流点在宽温度范围内变化小于0.5%就得把采样信号放大后再送进误差放大器降低失调电压的相对占比或者改用外部精密运放做电流环。后面我会简单提这个方案。6. 从恒流环延伸出去限流保护、可编程充放电、GaN化6.1 把CC环当“可变保险丝”短路保护与软启动配合恒流环设计好之后它的价值不只是恒流输出更是一个可复用的限流保护机制。把限流基准电压设到额定电流的110%比如4.4A那么电源在任何情况下都不会输出超过4.4A的电流短路也一样。这在很多场景下比保险丝可靠得多因为它是闭环控制不是熔断机制故障排除后自动恢复。但要注意持续短路时功率器件的热损耗很大。以我的试验板为例输出短路状态下输出电压约0V电流恒定为4A采样电阻功耗1W电感直流电阻损耗约0.3W同步下管导通损耗约0.6W这个状态下电源可以长时间扛住不烧。如果把上限放宽到8A采样电阻功耗就变成3.2W下管和电感的功耗也大幅增加必须配合过热保护或者自动降额。我建议在实际产品里加一个NTC贴近功率器件通过一个比较器直接控制TL494的DTC死区时间控制引脚温度过高时把最大占空比逐渐压低实现热降额。6.2 用数字电位器改造基准做可编程电源既然恒流基准和电压基准都是靠电阻分压得出的那把这些固定电阻换成数字电位器或DAC输出就能轻松实现数控可调电源。我在后续实验里把限流基准分压电阻换成了MCP4131数字电位器把电压基准分压电阻也换成了另一个数字电位器用单片机的SPI接口分别控制实现了0.5-5V可调输出、0.5-4A可调限流的数控电源。实测数字电位器的步进精度足够限流点最小步进约50mA电压步进约10mV。这个改造不用动TL494的任何结构就是替换基准产生方式非常干净。唯一的坑是数字电位器的供电电压和地噪声要控制好基准端的纹波会直接进入误差放大器影响恒流精度。我在数字电位器输出端多加了一级RC滤波截止频率1kHz左右不影响环路响应但把DAC的量化噪声和时钟干扰都滤掉了。6.3 关于GaN FET和更高开关频率的思考TL494的老架构决定了它的开关频率上限大约在300kHz实际工程中很少超过200kHz。现在GaN FET越来越普及很多新设计把同步BUCK做到500kHz甚至1MHz以上来减小电感尺寸。TL494确实跟不上这个节奏但这并不等于TL494的恒流设计方法过时了。我在一个后续项目里用了一片基于TL494设计思路但频率更高的控制器仍然沿用了“两个误差放大器经COMP做线与”的架构只是采样网络和补偿参数按更高频率重新计算。核心思想没变恒流环的参考信号要干净采样要走Kelvin结构COMP端电容要全局压缩带宽保证稳定。你如果要把这套设计移植到GaN FET方案上只需要把TL494替换成更高频率的PWM控制器驱动部分换成支持更高开关频率的GaN专用驱动芯片采样电阻、滤波参数和COMP电容按比例调整频率特性即可。我自己对“老的TTL时代”电源芯片的态度是别因为芯片老就否定它。TL494的两个误差放大器、内部基准、死区控制这些特性放到今天依然是完整的控制核心。很多充电器、可调电源、电池保护板内部跑的还是这套架构。学会把一个看似过时的芯片的潜力压榨出来比单纯堆新器件更能锻炼对电源控制本质的理解。等你真正理解了COMP节点上两根“线”是怎么互相制衡的再回头尝鲜GaN、数字电源会发现很多道理都是相通的。