
前几天在群里看到一位朋友发的求助用LM358搭了个恒流源想驱动一颗LED结果一上电三极管就烫得不敢碰。他把电流从300mA降到了50mA发现还是烫。拍了电路图过来我一眼就看明白了问题根本不在电流大小而是他把三极管当成了可以随便过电流的“导线”忘记了它在恒流源里其实是工作在放大区相当于一个动态的“可调电阻”。三极管发烫这件事在恒流源电路里实在太常见了几乎是每个从开关电路转到线性电路的人都会踩一遍的坑。今天我就借着这个LM358实战案例把“为什么你的三极管总是发烫”彻底掰开揉碎从恒流源的工作原理、功耗计算、器件选型到排查方法一步步讲清楚。如果你正在被三极管发热折磨或者准备搭一个恒流源但不想踩坑这篇文章可以直接当操作手册用。1. 先把恒流源的底层逻辑理清楚1.1 “恒流”到底恒的是什么很多人一上来就动手搭电路但对“恒流”这两个字的理解其实是模糊的。恒流源要保证的不是负载两端电压稳定而是流过负载的电流稳定。也就是说无论负载电阻如何变化电流都被锁定在你设定的数值上。打个比方恒流源就像自来水系统。你不用关心家里的水管粗细水龙头开到某个位置后单位时间流过水表的水量基本是恒定的。水管粗水流快一点总流量不变水管细流速慢一点总流量还是那么多。对应到电路里这个“水表”就是取样电阻只要把这个电阻上的压降锁定住电流自然就锁定了。理解了这一点再看恒流源里三极管的角色就清楚了——三极管不是开关它在恒流源中工作在放大区起着“动态调节电阻”的作用把电源电压和负载电压之间多出来的那部分电压自己扛下来。而扛电压就意味着发热这是后面所有问题的根源。1.2 为什么是“运放三极管”这个组合纯三极管也能做恒流源比如两个三极管组成的镜像恒流源或者单个三极管加稳压二极管的简易恒流源。但这类方案精度低、温度漂移大满足不了稍微正经一点的需求。运放介入之后核心思路变成了“负反馈闭环”。电路结构一般是这样运放的同相输入端接一个基准电压Vref反相输入端接取样电阻Rsense上的压降运放输出直接或通过限流电阻驱动三极管基极。当电流偏大时取样电阻压降超过Vref运放输出降低基极电流减小三极管关小一点电流回落电流偏小时则反向调整。最终电路会稳定在取样电阻压降等于Vref这个平衡点上。这里有个很容易被忽略的好处运放的开环增益很高哪怕取样电阻上的压降和Vref只有毫伏级的误差运放也会拼命调整三极管去纠正。所以恒流精度主要取决于基准电压Vref的精度、取样电阻的精度和温漂三极管本身的参数反而被负反馈“藏”起来了这比纯三极管方案好太多。1.3 核心公式I Vref / Rsense整个电路的核心公式就一个I Vref / Rsense比如Vref取0.25VRsense取1Ω那么电流就是0.25A也就是250mA。调整电流只有两个办法改基准电压或者换取样电阻。这个公式虽然简单但它揭示了一个设计原则取样电阻上的压降Vref决定了电路“成本”和“性能”的取舍。压降越大基准电压越好做抗噪声和失调的能力越强但留给三极管的电压余量越少。压降越小损耗越小但基准就容易受运放失调电压、噪声影响。后面我会专门讲这个取值的实际考量。2. 三极管发烫的根本原因功耗算歪了2.1 发烫不是“电流太大”而是Vce × Ic太大很多新手看到三极管发烫第一反应是“电流太大了”于是把电流调小然后发现还是烫。这就是没找到问题的本质。三极管的发热功耗计算公式是P Vce × Ic注意这里用的是Vce也就是集电极到发射极之间的电压差而不是电源电压也不是负载电压。恒流源正常工作时三极管必须待在放大区Vce通常有好几伏甚至十几伏。真正决定发热量的是“三极管两端扛了多少电压”和“流过多少电流”的乘积。举一个我在实际中遇到过的例子。供电电压12V负载是一颗正向压降3V的LED目标恒流300mA取样电阻取1Ω压降0.3V。这个时候三极管上的Vce是多少Vce 12 - 3 - 0.3 8.7V功耗就是P 8.7V × 0.3A 2.61W一个TO-92封装的小三极管比如9013热阻大约200°C/W这意味着2.61W的功耗会让结温上升500多度一秒钟就冒烟。哪怕你把它换成TO-220封装的TIP41不加散热片时热阻约62.5°C/W2.61W造成的温升也超过160°C瞬间烫得没法摸。所以说电流30mA还是300mA不是关键关键是三极管上承受的电压。同样的300mA如果用5V供电Vce只有1.7V功耗0.51W普通的S8050勉强能扛但如果用24V供电Vce是20.7V功耗6.2W什么小管子都白搭。2.2 标称1A不代表能在线性区跑1A这是另一个特别容易误导新手的点。三极管数据手册上的“最大集电极电流ICM”指的通常是它在特定条件下的极限能力比如短时间脉冲或者在饱和区工作时的电流承载能力。但在恒流源这种线性应用场景下三极管长时间工作在放大区真正限制电流能力的不是ICM而是热阻和最大结温。举个直观的例子。TIP41标称ICM高达6A看起来是个“大功率管”。但在12V供电负载压降2V的场景下如果要恒流1AVce大约是9.8V12-2-0.2取样压降功耗就是9.8W。TIP41不加散热片的结到环境热阻约62.5°C/W即使环境温度25°C结温也会飙升到25 9.8 × 62.5 637.5°C早就超过了150°C的绝对最大结温管子直接报废。所以选三极管时不能只看ICM必须算“工作时候的Vce × Ic”这个功耗再根据功耗选择合适封装和散热方案。这是一个从“选管子”到“选系统散热”的思维转变想通了这个恒流源设计就算入门了。2.3 负载越轻三极管反而越烫这是恒流源发烫最容易让人迷惑的地方。按理说负载轻了电流应该小怎么反而不是关键在于恒流源啊电流是被强制锁定的。无论负载怎么变化电流始终是设定值I。三极管上的电压是Vce Vcc - Vload - Vsense负载上的电压Vload越小Vce就越大三极管功耗P Vce × I反而越大。所以恒流源带一个很小的电阻负载时或者负载短路时三极管的功耗达到最大值而负载电阻很大接近开路时回路中几乎没有电流三极管反而不会发烫。这也是为什么用恒流源驱动LED时一颗3V的LED很安全但如果你把LED换成一根导线去测试“恒流效果”三极管瞬间就会过热。很多人第一次烧管子就是在这种“测试”场景下烧的。3. LM358在恒流源里的角色与选型逻辑3.1 为什么选LM358这种“慢”运放恒流源不是高速电路电流建立和调节过程通常只需要毫秒级甚至更慢。LM358作为一款经典的低速运放增益带宽积只有1MHz左右但在这个应用里完全够用反而还有好处。带宽低意味着环路对高频噪声不那么敏感不容易自激。恒流源最怕的就是运放自激振荡一旦振荡三极管会在线性区和截止区之间快速切换瞬间功耗比正常工作时高出一大截而且振荡本身很难用万用表测出来。LM358的“慢”在一定程度上帮你规避了高频振荡的风险。另外LM358的输入共模范围包含了地电位特别适合“低端采样”这种电路结构。所谓低端采样就是取样电阻放在三极管发射极和地之间取样电压是相对于地的正电压LM358可以直接处理不需要电平偏移电路。3.2 LM358能不能驱动得了三极管这是很多人忽略的一个参数。LM358的输出能力并不是很强数据手册上典型的输出电流能力大约是20mAsource电流。但这个20mA到底够不够要看三极管的基极电流需求。基极电流和集电极电流、放大倍数之间的关系是Ib Ic / β比如设定恒流100mA用的三极管β值是100那么基极电流只需要1mALM358轻松搞定。但如果三极管β值比较低比如功率管TIP41的β只有15到75那么100mA集电极电流需要的基极电流在1.3mA到6.7mA之间这对LM358来说也还能承受。但如果你把电流提高到1Aβ取低值15基极电流就需要66mALM358根本输出不了这么大电流。这时候要么换达林顿三极管要么在运放输出后加一级推挽驱动。实际设计中LM358直驱NPN三极管的方案稳定做到300mA以下比较稳妥超过这个电流就得考虑驱动能力了。3.3 LM358的电源去耦、输出反转和共模限制LM358在恒流源电路里有三个容易出问题的地方都是我实测踩过的。第一是电源去耦。LM358电源脚附近必须加一个100nF的陶瓷电容否则电源线上的纹波和高频噪声可能让运放工作不稳定甚至产生高频自激。自激的后果前面说了就是三极管发热异常。很多面包板上的恒流源“莫名其妙发烫”一查才发现LM358的电源脚根本没有去耦电容。第二是输入共模电压范围。LM358的输入共模范围上限大约是Vcc-1.5V。如果Vref是从电源电压直接分压得到的而电源电压又比较高导致Vref接近Vcc运放就可能进入异常工作状态输出相位反转输出电压反方向跳变三极管基极电流瞬间失控。所以基准电压Vref至少要比电源电压低2V以上才安全。第三是输出摆幅限制。LM358不是轨到轨输出运放它的输出高电平最多到Vcc-1.5V左右。这意味着如果你用12V供电运放输出最高只能到10.5V。这通常不是问题但要注意它影响的是三极管基极可用的最高驱动电压。4. 从零搭一个不发烫的恒流源实战步骤4.1 先定指标再动笔算电路设计恒流源的第一步不是画电路图而是先把设计指标写清楚。我以一个实际项目为例输入电压12V负载是0到8Ω的可变电阻目标恒流100mA要求长时间运行三极管外壳温度不超过60°C手摸略有温度但不烫。根据指标可以计算关键参数。负载最大8Ω时负载压降是0.8V取样电阻压降我设定0.2V也就是Vsense0.2V那么三极管上的电压是Vce 12 - 0.8 - 0.2 11V三极管最大功耗出现在负载压降最小的时候也就是负载短路0Ω时Vce 12 - 0 - 0.2 11.8VP 11.8V × 0.1A 1.18W所以我的设计必须能承受至少1.2W的功耗这样才能保证任何负载情况下都不烧管。4.2 根据功耗选择三极管和散热方案1.2W的功耗如果用TO-92封装的S8050或9013热阻约200°C/W结温升高240°C直接烧掉。哪怕环境温度25°C结温也到了265°C远超150°C的极限。所以小管子根本没戏。换成TO-220封装的TIP41不加散热片时结到环境热阻约62.5°C/W温升约75°C环境25°C时结温100°C左右勉强能用但很烫手而且工作寿命堪忧。规范的做法是给TIP41加一个小型散热片。假设散热片的热阻约15°C/W加上TIP41本身的结到壳热阻约1.2°C/W再加上绝缘垫片的热阻约0.5°C/W总热阻约17°C/W。这时结温是25 1.2 × 17 45.4°C这个温度就非常舒适了连续工作也不会出问题。所以别舍不得那个几毛钱的散热片它比换更贵的管子管用得多。4.3 取样电阻与基准电压的取值细节取样电阻我选了2Ω100mA电流下压降0.2V这就有个关键问题基准电压Vref也要设成0.2V。0.2V这个电压不算高对运放的失调电压容忍度就会降低LM358的输入失调电压典型值是2mV最大能到7mV直接影响到电流精度。先算算误差比例。LM358失调电压7mV相对0.2V基准是3.5%的误差对普通恒流应用来说可以接受。如果你想要更高精度可以把取样电阻加大到3Ω让压降变成0.3V误差比例就降到2.3%但代价是三极管上的可用电压余量更少了。基准电压的生成我推荐用TL431。TL431输出2.5V基准通过两个电阻分压得到0.2V。用一个10k固定电阻和一个1k电位器串联把2.5V分压到0.2V附近然后用多圈电位器细调。这个方案比直接从电源分压可靠得多因为TL431的输出温漂小、线性度好不会随电源电压波动。这里要注意分压电阻的阻值不能太大否则LM358的输入偏置电流会在电阻上产生压降造成基准电压偏移。LM358的偏置电流大约45nA如果是10k级别的阻抗偏移只有0.45mV可以忽略但如果用1M级别的电阻就会产生45mV的偏移基准就完全不准了。4.4 布局布线与散热细节电路板布局对恒流源的稳定性影响很大这些年我总结出几个必须注意的点。取样电阻的采样线要走“开尔文接法”也就是从取样电阻的两个引脚根部单独引出细线接到运放的反相输入端和地。绝对不能从功率电流经过的粗铜箔上取信号因为大电流在铜箔上会产生压降这些压降会混进采样信号里导致恒流精度变差甚至引起振荡。功率部分和信号部分的“地”要分开。取样电阻的功率地流过大电流应该单独走一条粗线回到电源地LM358的信号地则从取样电阻的信号端引出。两个地在电源端单点汇合这样能把功率电流的干扰隔离开。LM358电源脚旁边放100nF陶瓷电容尽量靠近Vcc引脚这是运放稳定工作的基础。三极管的基极走线不要太长也不要用它去平行靠近负载输出线防止寄生电容耦合导致自激。散热片安装时注意TIP41这种TO-220封装金属背板是和集电极导通的。如果散热片直接接触金属背板散热片就带上了电源电压触碰有触电风险也容易和别的器件短路。正确做法是加云母绝缘垫片和绝缘垫圈再涂一层薄薄的导热硅脂。4.5 用串联电阻给三极管“减负”如果你不想加大的散热片还有一个思路在三极管的集电极回路串一个功率电阻让这个电阻分担一部分电压也就是分担一部分功耗。比如上面那个12V供电、100mA恒流的例子正常工作时三极管要扛11.8V功耗1.18W。如果我在集电极串一个47Ω的功率电阻根据欧姆定律100mA电流在这个电阻上的压降是4.7V功耗0.47W。这样一来三极管上的压降就降到11.8 - 4.7 7.1V三极管功耗降到0.71W发热压力小了很多。这个电阻选一个1W以上的绕线电阻就能稳定工作比加散热片省地方也便宜。但这个办法要注意它只适用于“输入输出电压差很大”的场景。如果输入电压本身接近负载所需电压再串电阻会把三极管压到饱和区恒流就失效了。所以串电阻前一定要算清楚确保三极管在任何负载情况下仍至少有2V以上的Vce保证它待在放大区。5. 三极管发烫排查清单与常见问题速查5.1 现场排查顺序如果你现在手上就有一个发烫的三极管别急着换管子按下面这个顺序查基本都能找到问题。第一步测取样电阻压降Vsense。万用表打到直流毫伏档直接在取样电阻两端测量。如果Vsense明显高于设定值说明电流太大检查基准电压Vref是不是被分压电阻搞错了或者取样电阻阻值是不是选小了。第二步测三极管的Vce。Vce接近电源电压说明负载压降很小三极管在扛几乎所有电压功耗大是必然的。这时候要问自己负载是设计成这样的吗如果负载短路或阻值太小要么根据实际负载重新设计要么接受这个功耗并加强散热。Vce只有0.2到0.3V说明三极管已经饱和了这时候电路根本不是恒流工作而是纯限流电流由负载决定你需要检查运放输出是否被拉到足够高的电压。第三步测LM358输出引脚电压。输出接近Vcc-1.5V说明运放输出饱和了可能基极驱动不足或者三极管放大倍数太低。输出在来回跳变说明环路可能在振荡需要加反馈电容。第四步用手背感受三极管的温度变化趋势。如果温度是慢慢升高的而且电流读数也随之增大说明电路有热失控的趋势重点关注取样电阻的温度系数而不是怀疑三极管。5.2 常见问题速查表现象可能原因排查方法一上电三极管就烫得冒烟电流设定过高、Vce过大、散热不足测Vsense是否超标测Vce是否接近电源电压检查散热片工作几分钟后越来越烫散热不足导致热量积累取样电阻温漂导致电流缓升摸散热片对比升温速度用温度探头测取样电阻温度电流周期性抖动环路自激振荡示波器看运放输出在反馈端并联10nF电容输出电流远低于设定值运放输出饱和、基极驱动不足测运放输出电压是否被钳在Vcc-1.5V以内负载短路时三极管烧毁短路时Vce最大功耗最高加串联功率电阻分担功耗检查散热是否应对最恶劣工况空载时反而没事一接负载就烫恒流源带小负载时Vce大功耗高这是正常的关键看是否在散热预算内5.3 几个容易被忽略的坑面包板搭恒流源是最容易出“玄学问题”的。面包板的接触电阻和寄生电感很大加上飞线太长本来稳定的LM358环路很可能在这里变成振荡器。如果发现电路在面包板上异常发烫而原理图看着没啥问题先别怀疑器件换个焊接板或者把飞线剪短试试。不要用数字万用表的“自动挡”去测取样电阻压降自动挡在低电压档位切换时读数不稳定容易误判。直接手动选到200mV或2000mV档准确得多。取样电阻一定要选温度系数低的金属膜电阻别用碳膜电阻。温度系数太大比如100ppm/°C取样电阻随温度变化会影响恒流值。更麻烦的是如果取样电阻靠近发热的三极管热传导会让它温度升高这时电流就会漂移看起来像三极管出问题其实是电阻在“作怪”。取样电阻摆放位置要远离散热片。6. 再往深想一步给三极管减负的系统方案6.1 降低电源电压是最直接的减负手段很多场景下输入12V甚至24V只是为了迁就系统中某个模块而恒流源本身根本不需要这么高的电压。比如负载LED压降只有3VRsense压降0.2V三极管想好好工作其实3.5V供电就够了。用12V电源那9V左右的压差全落在三极管上白白浪费成热量。如果系统中确实只有12V可用可以在恒流源前面加一级Buck降压电路先把12V降到5V再进恒流源。这样三极管压降从接近9V降到1.5V左右功耗直接降到原来的六分之一。虽然多了一个Buck电路的成本但从散热、效率和可靠性角度综合考虑往往是更划算的方案。6.2 功率电阻前置分担功耗的进阶用法前面说的串联功率电阻减负方法进阶版本是在三极管前面放一个PTC热敏电阻。刚开机时PTC温度低阻值小不影响电路如果电流持续较大、功耗上升PTC温度升高阻值增大自动分担更多电压给三极管减负。不过PTC的方案也要谨慎因为它引入了正反馈如果PTC和三极管热耦合太紧可能造成电流波动。用在实验电路里可以量产还是要实测验证。6.3 要不要直接换MOSFET很多人问既然是线性调整为什么不直接用MOSFET确实大功率恒流源里用MOSFET做调整管的场景很多MOSFET没有基极电流需求驱动电路更简单也没有二次击穿问题大功率应用下比三极管皮实。但MOSFET在线性区工作也有门槛。LM358这种普通运放输出幅度有限驱动N-MOS时栅极需要的电压等于Vsense加上Vgs。如果Vsense取0.2VVgs取3V那栅极至少需要3.2VLM358输出还有能力但如果Vsense取0.1VVgs取5V那栅极需要5.1V在低电压供电场景下可能就推不动了。所以换MOSFET不是简单的“换了就完事”需要重新核算驱动电压和功耗。三极管在中小电流的恒流源里仍然是性价比极高的选择只要把功耗算清楚散热做好完全能用得很稳。6.4 给电路加一道温度保护保险丝工程上的最后一个保底方案是温度保护。在散热片附近贴一个NTC热敏电阻比如10k的B值为3950的NTC与一个固定电阻分压分压点接一个比较器或者LM358的另一半运放。当散热片温度超过设定阈值比如90°C比较器输出翻转把一个低电平信号送到基准电压端把Vref拉低强制降低恒流值让整个系统降温。这个方案特别适合“产品化”的恒流源。实验室里可以用手摸判断温度但产品不能指望用户摸所以这种自动降额保护是必要的。利用LM358里没用上的另一半运放几乎不增加成本就能实现非常实用。关于恒流源发烫这个问题如果让我用一句话总结这些年的调试经验那就是“先把功耗写在纸上再决定用什么管子”。三极管发烫不是什么神秘的玄学故障它只是电路在告诉你你设计的功耗分配位置错了。先算Vce × Ic再选封装和散热最后才是焊接调试这个顺序不能反。每次调试前把这三个步骤走一遍大部分烧管事故根本不会发生。