
恒流源这个东西刚入行那会儿我觉得它特别不起眼——不就是让电流稳住不变嘛能有多难后来做LED驱动、电池充电、传感器激励、电化学测试这些项目才发现恒流源电路的花样远比想象中多选错了方案轻则精度不够重则烧管子炸电容。这些年我用过至少十几种恒流源拓扑踩过的坑也够写一本小册子了。这篇文章就把我实际项目中反复用到的六种经典恒流源电路拿出来从原理、计算、选型到实操注意事项一次性讲透。不管你是刚学模电的学生还是正在做硬件方案选型的工程师看完至少能少走两三年弯路。1. 恒流源到底在解决什么问题1.1 从“稳压”到“恒流”的思维切换大部分人学电源是从稳压开始的LM317、AMS1117这些三端稳压器用得很顺手输入电压一变、负载一变输出电压纹丝不动。但恒流源的逻辑正好反过来它不管负载两端的电压怎么变只保证流过负载的电流恒定。这个区别听起来简单实际用起来思维方式要彻底切换。举个最直观的例子。LED的正向压降会随温度漂移一颗白光LED在25°C时Vf大概是3.2V到了80°C可能降到2.9V。如果你用稳压源供电电压不变、Vf降了电流就会猛增LED很快光衰甚至烧掉。但用恒流源供电电流锁死在比如350mAVf怎么变都不影响亮度一致性这就是恒流源在LED驱动领域不可替代的原因。再比如电化学传感器、应变片、铂电阻测温这些传感器的输出信号都正比于流过它的电流。电流一抖测量精度直接崩。所以恒流源的精度和温漂指标往往决定了整个系统的测量上限。1.2 恒流源的三个核心指标选恒流源方案之前先把这三个指标搞清楚后面选型就不会盲目。恒流精度实际电流和设定电流的偏差。注意这个精度要分初始精度和全温区精度很多方案常温下0.1%到了-40°C到85°C就变成2%了原因就是基准源和电阻的温漂。输出 compliance voltage恒流源能维持恒流的最大负载电压。比如你用5V供电做一个恒流源负载电阻太大导致需要的电压超过5V减去管子压降恒流就失效了。这个指标决定了你的恒流源能带多大的负载。温度系数每摄氏度电流变化多少ppm。高精度场合这个指标比初始精度还重要因为初始误差可以校准温漂没法校准。注意很多人选恒流源只看精度不看compliance voltage结果负载一接上去电流就不对了。选型时一定要先算清楚负载在最坏情况下需要多少电压。1.3 六种经典方案的全景对比先上一张总表把六种方案的定位说清楚后面再逐个展开。方案核心器件典型精度温度系数适用电流范围成本复杂度三端稳压器恒流LM3171%~5%较差10mA~1.5A极低极简基准源运放MOSTL431运放0.1%~0.5%好1mA~10A中中等运放三极管运放三极管0.5%~2%中等1mA~500mA低简单镜像电流源匹配三极管2%~10%差10uA~10mA极低简单双二极管恒流源双二极管运放0.5%~1%中等1mA~100mA低中等开关型恒流Buck芯片1%~3%中等100mA~20A中高复杂这张表是我自己项目经验的总结精度和温漂都是实测典型值不是datasheet上的理想值。下面逐个拆解。2. 三端稳压器恒流源最省事的入门方案2.1 LM317恒流源的工作原理LM317做恒流源是教科书级的经典电路原理简单到一句话就能说清LM317的ADJ引脚和OUT引脚之间固定1.25V基准电压只要在这两个引脚之间接一个电阻R电流就是1.25V/R负载接在ADJ引脚和地之间这个电流就全部流过负载。电路结构是这样的LM317的OUT脚接电阻R一端R另一端接ADJ脚负载接在ADJ脚和GND之间。LM317内部会调整OUT脚电压使得OUT和ADJ之间始终保持1.25V于是流过R的电流恒定为1.25/R这个电流从OUT流出经R到ADJ再经负载到地。计算例子要做一个350mA的LED恒流源R 1.25V / 0.35A 3.57Ω。选3.6Ω标准值实际电流约347mA够用。2.2 为什么LM317方案精度上不去LM317的1.25V基准电压本身温漂就有几十ppm/°C加上ADJ引脚的偏置电流典型50uA最大100uA会分流一部分电流导致小电流时误差特别大。比如你设定10mAADJ偏置电流50uA就占了0.5%而且这个偏置电流本身还随温度变。另外LM317的最小工作电流要求是10mA左右低于这个值它就不稳压了所以LM317做不了太小的恒流。我实测过设定5mA的时候电流直接飘到8mA完全不能用。实操心得用LM317做恒流源电流最好设在20mA以上低于这个值精度和稳定性都没法保证。如果非要小电流ADJ脚对地加一个1mA左右的预负载电阻能改善一些。2.3 LM317恒流源的实操要点散热是LM317方案最大的坑。LM317的压差乘以电流就是它自身的功耗。比如输入12V负载LED压降3.2V那LM317上要承受12-3.2-1.257.55V的压差乘以350mA就是2.64W。TO-220封装不加散热片的热阻大概50°C/W2.64W直接让结温升130°C必炸。所以用LM317做恒流源输入电压不能太高或者必须加足够大的散热片。我一般会先算功耗超过1W就上散热片超过3W就换方案。电阻R的功率也要算。350mA流过3.6Ω功耗是0.35²×3.60.44W得用1W的电阻用0.25W的会烧。这个细节很多人忽略。3. TL431加运放加MOS高精度恒流源的主力方案3.1 为什么这个组合能做出0.1%精度TL431是并联型基准源2.5V基准的初始精度可以做到0.5%温漂典型50ppm/°C好的型号能到20ppm/°C。运放负责比较采样电阻上的电压和TL431的基准电压MOS管作为调整管。这个架构的好处是基准和调整管分离各自可以选最优的器件。电路逻辑采样电阻Rs串联在负载回路里运放的同相输入端接TL431产生的2.5V基准通过分压得到你需要的参考电压反相输入端接采样电阻上端运放输出驱动MOS管栅极。运放会调整MOS管导通程度使得采样电阻上的电压等于参考电压于是负载电流 Vref / Rs。这个架构的精度取决于三个因素TL431基准精度、采样电阻精度、运放失调电压。三个都可以选很好的器件所以整体精度能做到0.1%甚至更高。3.2 采样电阻的选型与计算采样电阻是恒流源的“标尺”它的精度和温漂直接决定电流精度。我一般选合金电阻或者精密金属膜电阻温漂25ppm/°C以内精度0.1%。阻值的选择要权衡阻值大采样电压大运放失调影响小但功耗大、compliance voltage损失大阻值小则相反。经验法则是让采样电压在100mV到500mV之间。计算例子要做一个2A的恒流源采样电压选200mV则Rs 0.2V / 2A 0.1Ω。功耗 2²×0.1 0.4W选1W的2512封装合金电阻。参考电压Vref 200mV用TL431的2.5V经分压得到分压电阻选1%精度的金属膜电阻。运放的选择很关键。失调电压要小因为失调电压直接叠加在采样电压上。比如运放失调1mV采样电压200mV误差就是0.5%。要0.1%精度运放失调要小于0.2mV得选OPA333、ADA4522这类零漂移运放。3.3 MOS管选型与环路稳定性MOS管选型看三个参数Vds耐压、Rds(on)、栅极电荷。Vds要大于最大compliance voltage加裕量。Rds(on)要小减少压降和功耗。栅极电荷影响环路响应速度。环路稳定性是这个方案最容易翻车的地方。运放加MOS管构成负反馈环路如果相位裕度不够就会振荡。振荡的表现是电流纹波大、MOS管发热、甚至啸叫。我一般会在运放输出和MOS管栅极之间串一个小电阻10Ω到100Ω在栅极和源极之间加一个电容100pF到1nF构成一个低通压低高频增益。同时在采样电阻两端并联一个小电容100nF滤掉高频噪声。注意环路补偿没有万能公式跟运放带宽、MOS管跨导、PCB布局都有关。我建议先用仿真跑一下环路增益和相位再实际调试。实测时用示波器看采样电阻上的电压波形有振荡就加大栅极电容或降低运放带宽。3.4 一个实际项目的完整参数我之前做过一个电化学传感器激励用的恒流源要求100uA精度0.1%温漂小于50ppm/°C。参数如下基准TL431B0.5%初始精度50ppm/°C运放ADA4522-2失调0.5uV温漂0.01uV/°C采样电阻100Ω 0.1% 25ppm/°C 金属膜MOS管2N7002小电流场合够用参考电压10mVTL431的2.5V经250:1分压供电12V这个方案实测精度0.05%温漂30ppm/°C完全满足要求。关键点是采样电阻选了100Ω而不是小阻值因为100uA电流下采样电压10mV用大阻值能提高信噪比但要注意运放失调要足够小。4. 运放加三极管低成本中等精度方案4.1 三极管方案和MOS管方案的本质区别三极管是电流控制器件基极电流会影响集电极电流而基极电流本身又是输出电流的一部分发射极电流 集电极电流 基极电流这就引入了误差。MOS管是电压控制器件栅极几乎不取电流所以精度更高。但三极管便宜、驱动简单、低频噪声好在对成本敏感、精度要求不高的场合还是很常用。比如LED指示灯、小功率充电器、简单的传感器激励。4.2 三极管恒流源的误差分析三极管的β值直接影响精度。假设β100输出电流100mA基极电流就是1mA如果采样电阻接在发射极那发射极电流是101mA集电极电流才是100mA。如果你从集电极取输出误差就是1%。而且β随温度变化-40°C到85°Cβ可能变化一倍误差也跟着变。解决办法是用达林顿管提高β或者用运放反馈把基极电流也纳入环路。但达林顿管压降大至少1.2Vcompliance voltage损失大。我一般会在发射极串一个小电阻做负反馈改善β变化带来的影响。但这样又损失了电压裕量需要权衡。4.3 实操中的温度补偿技巧三极管的Vbe有-2mV/°C的温度系数如果采样电阻上的电压比较小比如100mVVbe的变化就会显著影响电流。补偿方法是在运放的同相输入端加一个同样温度系数的三极管be结让两个Vbe变化相互抵消。具体做法用一颗和调整管同型号的三极管基极和集电极短接接在基准电压和运放同相输入端之间。这样基准电压就叠加了一个Vbe和调整管的Vbe抵消。这个方法在精密场合很有效能把温漂从几百ppm降到几十ppm。实操心得三极管方案我一般只用在精度2%以内的场合超过这个要求直接上MOS管方案。省下的调试时间远比省下的几毛钱值钱。5. 镜像电流源集成电路内部的经典结构5.1 镜像电流源的工作原理镜像电流源是模拟集成电路里最基础的恒流结构两颗匹配的三极管基极相连、发射极相连其中一颗的集电极和基极短接二极管接法另一颗的集电极作为输出。因为两颗管子Vbe相同如果匹配得好集电极电流就相等。参考电流由一颗电阻决定Iref (Vcc - Vbe) / R。输出电流理论上等于Iref实际因为基极电流误差和Early效应会有几个百分点的偏差。5.2 镜像电流源的精度限制镜像电流源的精度取决于三极管的匹配度。分立三极管的匹配度很差Vbe可能差几十mV导致电流差百分之几十。所以分立器件做镜像电流源基本没法用它主要是集成电路内部的结构因为IC上相邻的三极管匹配度可以做到1mV以内。如果非要用分立器件得用匹配对管比如BCM847、MAT02这些但价格不便宜还不如直接用运放方案。镜像电流源的另一个问题是输出阻抗不够高Early效应导致输出电流随负载电压变化。改进方案是共源共栅镜像cascode能提高输出阻抗但需要更多电压裕量。5.3 什么时候该用镜像电流源镜像电流源适合多路相同电流输出的场合比如给多个传感器提供相同的偏置电流。在IC内部一个参考电流可以镜像出十几路每路精度1%左右非常经济。分立电路里我基本不用镜像电流源除非是超低成本、精度要求极低的场合。比如给几颗LED提供大致相同的电流用匹配对管做镜像比每路都做一个恒流源省事。6. 双二极管恒流源一个被低估的巧妙结构6.1 双二极管恒流源的原理双二极管恒流源利用两个二极管的压降差来产生恒流。具体来说一个二极管的正向压降大约是0.7V两个二极管串联是1.4V但如果你让一个二极管流过不同的电流密度它的压降会变化。利用这个压降差除以一个电阻就能得到恒流。更常见的结构是用一颗三极管的be结和一颗二极管串联利用be结和二极管压降的差异。或者用两颗不同电流密度的二极管。这个结构的温度系数可以通过调整电流密度比来补偿做到接近零温漂。6.2 双二极管恒流源的实操计算假设你用一颗1N4148和一个三极管be结。1N4148在1mA下Vf约0.65V三极管be结在1mA下Vbe约0.65V两者差不多压差接近零没法用。所以要让两者电流密度不同比如二极管流过10uA三极管流过1mA这样压差可能有100mV左右。实际电路中这个压差加在一个电阻上产生恒流。压差的正温度系数和电阻的负温度系数如果用普通电阻可以部分抵消但很难做到完全补偿。我实测过这个电路精度大概1%温漂200ppm/°C不算好但也不差。优点是电路极简两颗管子一个电阻就搞定适合对成本极度敏感的场合。6.3 双二极管恒流源的适用场景这个结构我主要用在两个地方一是给运放提供偏置电流精度要求不高但要求简单二是做电流限制比如限制某个电路的启动电流。它不适合做精密恒流但作为“够用就好”的方案性价比很高。注意双二极管恒流源的输出电流对电源电压比较敏感因为二极管的压降会随电流变化。用的时候最好加一个预稳压或者用恒流源供电。7. 开关型恒流源大电流场合的唯一选择7.1 为什么大电流必须用开关方案线性恒流源的调整管始终工作在线性区压差乘以电流就是功耗。比如做一个5A的恒流源压差3V功耗就是15W得用巨大的散热片效率只有百分之几十。开关型恒流源用Buck拓扑调整管工作在开关状态效率能到90%以上功耗小、体积小。Buck型恒流源的原理和Buck稳压一样只是反馈量从电压变成了电流。采样电阻放在输出回路里反馈电压正比于输出电流控制环路调整占空比使电流恒定。7.2 Buck恒流源的电感选型电感是Buck恒流源的核心器件选型要看三个参数电感量、饱和电流、直流电阻。电感量决定了电流纹波。纹波电流ΔI (Vin - Vout) × D / (L × fsw)其中D是占空比fsw是开关频率。一般让纹波电流为输出电流的20%到40%。比如输出2A纹波取0.6A根据公式反推电感量。饱和电流要大于输出电流加纹波电流的一半即Iout ΔI/2。比如2A输出、0.6A纹波饱和电流要大于2.3A留20%裕量选2.8A以上。直流电阻影响效率越小越好但太小体积大。一般选DCR在50mΩ以内的。7.3 开关恒流源的EMI和纹波问题开关恒流源最大的问题是EMI和输出纹波。开关节点的高dv/dt和di/dt会辐射干扰输出电流上叠加开关纹波。对于LED驱动纹波会导致光闪烁对于电池充电纹波影响充电质量。解决办法输入加π型滤波开关节点的铜皮面积尽量小电感选屏蔽型输出加LC滤波。如果纹波要求高可以在输出再加一级线性恒流源做后级构成开关加线性的混合方案兼顾效率和精度。我做过一个10A的LED驱动用Buck恒流加线性后级效率88%电流纹波小于1%效果很好。但成本比纯线性方案高不少得看项目预算。8. 六种方案选型决策树与实战建议8.1 按精度和电流快速定位方案选型其实就两个维度精度要求和电流大小。我整理了一个决策流程照着走基本不会错。电流范围精度要求推荐方案理由10mA一般镜像电流源简单IC内部常用10mA高运放MOS精度高失调小10mA~500mA一般LM317或运放三极管成本低够用10mA~500mA高TL431运放MOS精度0.1%可达500mA~5A一般LM317加散热或Buck看压差和效率500mA~5A高TL431运放MOS线性方案精度高5A任意Buck恒流线性方案功耗不可接受8.2 我踩过的选型坑第一个坑用LM317做1A恒流源没算功耗结果LM317烫到能煎鸡蛋加了散热片还是热最后换成Buck方案才解决。教训是线性方案超过2W功耗就要慎重。第二个坑运放MOS方案采样电阻选了0.01Ω采样电压只有10mV运放失调1mV导致10%误差。后来改成0.1Ω采样电压100mV误差降到1%。教训是采样电压不能太小至少100mV。第三个坑Buck恒流源电感选小了纹波电流达到输出电流的80%LED闪烁明显。后来电感量加倍纹波降到30%问题解决。教训是电感量要按纹波要求算不能随便选。第四个坑TL431方案里TL431的阴极电流没留够低于1mA导致基准不稳。TL431需要至少1mA的阴极电流才能正常工作分压电阻要算好。8.3 元器件选型的几个硬指标采样电阻精度0.1%起步温漂25ppm/°C以内功率留2倍裕量。合金电阻优于金属膜但贵。运放失调电压小于采样电压的0.1%温漂小于5uV/°C。零漂移运放如ADA4522、OPA333是首选。基准源初始精度0.5%以内温漂50ppm/°C以内。TL431B、LM4040、REF3025都是常用型号。MOS管Vds耐压留2倍裕量Rds(on)在目标电流下压降小于100mV栅极电荷适中。电感饱和电流留20%裕量DCR尽量小屏蔽型优先。实操心得选型时不要只看datasheet的典型值要看全温区的最坏值。很多器件的参数在温度极限时会恶化好几倍常温调好的电路到了高温就飘了。9. 常见问题排查与调试技巧9.1 恒流源不恒流的排查思路恒流源不恒流先查三个地方供电电压够不够、采样电阻对不对、环路有没有振荡。供电电压不够是最常见的。用示波器看调整管两端的电压如果接近零说明调整管已经饱和没有调节余量了。这时候要么提高供电电压要么减小负载。采样电阻虚焊或阻值不对也会导致电流不对。用万用表量采样电阻的实际阻值和标称值对比。环路振荡表现为电流波动、管子发热、有啸叫。用示波器看采样电阻上的电压波形有高频振荡就是环路问题加补偿电容或降低运放带宽。9.2 温漂问题的定位与解决温漂大先分清是基准漂、采样电阻漂还是运放漂。用热风枪或恒温箱给各部分分别加热看电流变化。基准漂换低温漂基准或者用恒温槽。采样电阻漂换合金电阻或精密金属膜。运放漂换零漂移运放。还有一个容易被忽略的PCB布局导致的温漂。采样电阻靠近发热器件局部温度高阻值变化。解决办法是把采样电阻远离热源或者用四线制接法消除引线电阻影响。9.3 常见问题速查表现象可能原因排查方法解决措施电流偏大采样电阻偏小万用表量阻值换电阻电流偏小基准偏低量基准电压换基准或调分压电流波动环路振荡示波器看波形加补偿高温电流漂温漂大加热测试换低温漂器件带载能力差compliance不够量调整管压差提高供电开机冲击软启动缺失看开机波形加软启动纹波大滤波不足看纹波波形加LC滤波9.4 调试时的几个实用技巧调试恒流源我习惯先不接负载用电子负载或者大功率电阻做假负载从低电流开始调逐步加到目标电流。这样安全不会一上来就烧管子。测电流不要用万用表串联万用表的内阻会影响恒流源工作。用采样电阻上的电压除以阻值来算电流或者用电流探头。调环路时先用一个大的补偿电容比如1uF让环路变慢确认能稳定工作再逐步减小电容提高响应速度。这样比一上来就调快更安全。注意调试大电流恒流源时一定要戴护目镜。我见过采样电阻过功率炸开的碎片飞出来很危险。安全第一。10. 从恒流源延伸出去的几个设计思路10.1 恒流源加恒压源做电池充电锂电池充电需要先恒流后恒压用一颗运放加MOS管就能实现。恒流阶段运放控制电流恒压阶段运放控制电压两个环路通过二极管或逻辑切换。这个结构在充电器里非常常见理解了恒流源充电器设计就通了一半。10.2 恒流源做传感器激励铂电阻测温、应变片测力、电化学传感器都需要恒流激励。恒流源的精度直接决定测量精度。我做过一个PT100测温用TL431加运放加MOS做1mA恒流测温精度0.1°C比用恒压分压方案好很多。10.3 恒流源做LED驱动LED驱动是恒流源最大的应用市场。从几毫安的指示灯到几十安的舞台灯恒流源方案从LM317到Buck加线性后级覆盖了全功率段。做LED驱动核心就是选对恒流源拓扑和散热方案。10.4 程控恒流源的设计思路程控恒流源用DAC代替基准电压MCU控制DAC输出就能编程设定电流。关键是DAC的精度和温漂要匹配恒流源的要求。我用过DAC8552加OPA333加MOS管做程控恒流源0到1A可调精度0.1%用于自动化测试设备。最后分享一个我个人的习惯每次做恒流源我都会在采样电阻旁边放一个测试点方便随时量电压算电流。这个小小的测试点在调试和排查问题时能省大量时间。还有恒流源的PCB布局采样电阻的地线一定要单独走接到运放的地不要和功率地混在一起否则地线上的压降会串进采样回路精度直接崩。这些都是文档里不会写、但实际项目中决定成败的细节。