
恒流源这个东西说简单也简单说讲究也是真讲究。我见过太多项目里用一颗电阻加一颗三极管就敢叫恒流源结果批量生产时LED亮度参差不齐或者传感器激励电流随温度飘得离谱。三极管恒流源电路设计的核心其实不在于“能不能恒流”而在于“恒得住多久、恒得多准、恒得多便宜”。这篇内容我打算把压箱底的几种经典方案翻出来从最简陋的到精度能打的逐个拆解原理、算参数、聊坑点。不管你是刚入行的硬件小白还是画了几年板子想回头补基础的老手应该都能找到能直接抄作业的电路。关键词里的电流镜、cascode、运放恒流源这些我都会结合具体场景讲清楚它们各自适合待在哪。1. 先搞明白三极管恒流源的底层逻辑1.1 恒流源到底在“恒”什么很多人一上来就背公式我觉得不如先想清楚一个事恒流源的本质是让流过负载的电流不随负载阻抗变化也不随电源电压波动而变。理想恒流源的输出阻抗无穷大现实中我们就是用各种电路去逼近这个无穷大。三极管之所以能担此重任核心在于它的输出特性曲线在放大区非常平坦——集电极电流主要由基极电流决定而几乎不受集电极-发射极电压影响。这就是恒流源的物理基础。但这里有个容易被忽略的点三极管的β值本身随温度、集电极电流、甚至批次都在变。所以如果你直接用基极电流去“设定”集电极电流那精度基本靠运气。真正靠谱的做法是用负反馈把电流采样回来让电路自己纠正。这就是为什么几乎所有实用恒流源都绕不开发射极电阻——它把电流转换成电压再反馈到输入端去调节基极。1.2 三极管工作区的选择为什么必须待在放大区恒流源电路里的三极管必须工作在放大区也就是发射结正偏、集电结反偏。如果进入饱和区集电极电流就不再受基极控制而是由外部电路决定恒流功能直接失效。判断方法很简单测集电极-发射极电压Vce如果它低于约0.3V小功率管基本就饱和了。设计时要留足裕量保证在最恶劣工况下Vce仍然大于1V这样温度漂移和参数离散性才不会把管子推进饱和。我实际调试时习惯用示波器同时看Vce和发射极电压。如果发现Vce在动态负载下掉到0.5V以下那这个电路在批量生产时一定会有部分板子失效。这时候要么提高电源电压要么换用饱和压降更低的管子要么重新分配电压裕量。这个经验在低压差场景里尤其重要比如用3.3V驱动白光LED时恒流源的压降预算必须算得非常精细。1.3 电流采样电阻的取值权衡发射极电阻Re是恒流源精度的关键。Re越大负反馈越强恒流精度越高但代价是压降损失也越大。假设你要恒流20mARe取100Ω那压降就是2V电源电压至少得留出2V加Vce的裕量。如果供电只有5V那留给负载的电压就非常紧张了。反过来Re取10Ω压降只有0.2V但负反馈变弱β值变化和Vbe温漂的影响就会被放大。我的经验是在电源电压允许的前提下Re上的压降至少取0.5V到1V。这个区间既能提供足够的负反馈又不会浪费太多电压。对于精度要求高的场合比如驱动精密传感器Re压降可以取到1.5V甚至2V同时配合低温漂电阻。另外Re的功率也要算20mA流过100Ω就是0.04W用0603电阻绰绰有余但如果是200mA流过10Ω那就是0.4W得换0805或1206了。2. 最简方案二极管偏置恒流源2.1 电路长什么样这是最经典的两管方案一颗NPN三极管作为调整管两颗二极管串联在基极和地之间提供偏置发射极接电阻Re到地负载接在集电极和电源正极之间。二极管可以用1N4148或者直接用一颗三极管的发射结代替。电路简单到令人发指成本不到一毛钱但它在很多场景下确实能用。工作原理是这样的二极管串联后的电压约1.2V到1.4V这个电压减去三极管的Vbe约0.7V剩下的电压落在Re上。所以恒流值大约是(Vd1Vd2-Vbe)/Re。如果二极管和三极管用同种材料、同一批次Vd和Vbe的温度系数会部分抵消温漂表现比想象中好。我实测过用1N4148配9013在0到50度范围内电流变化大概在5%左右对于驱动LED指示灯完全够用。2.2 参数计算与选型实例假设我要做一个15mA的恒流源给一颗LED供电电源电压5V。先选Re假设二极管压降1.3VVbe取0.7V那Re上的电压就是0.6V。Re 0.6V / 15mA 40Ω取标准值39Ω。实际电流就是0.6V / 39Ω ≈ 15.4mA可以接受。然后验证三极管是否在放大区LED压降约2VRe压降0.6V那Vce 5V - 2V - 0.6V 2.4V远大于0.3V安全。二极管偏置电流取1mA左右用5V减去1.3V再除以1mA得到3.7kΩ取3.9kΩ。这个电阻不能太大否则二极管动态电阻会影响偏置电压也不能太小否则浪费电流。1mA到5mA是比较舒服的区间。2.3 这个方案的软肋在哪最大的问题是二极管压降和Vbe的匹配度。如果你用的二极管和三极管不是同一工艺温度系数可能差很多温漂就会明显恶化。另外电源电压变化时二极管偏置电流会变导致二极管压降微变恒流值也会跟着动。我测过电源从4.5V变到5.5V电流变化大约2%对于要求不高的场合可以忍。还有一个坑如果负载短路三极管会进入饱和电流会飙升到电源电压除以Re的水平可能烧管子。所以这个电路最好加一个限流电阻或者保险丝。我在早期项目里就吃过这个亏负载端不小心短了一下9013直接冒烟。后来养成习惯凡是恒流源输出端都串一颗小电阻或者用自恢复保险丝。3. 精度进阶运放加三极管的负反馈恒流源3.1 为什么运放能把精度拉起来二极管偏置方案的精度瓶颈在于开环控制——它没有“感知”实际电流是多少只是靠器件匹配来“猜”。运放方案则完全不同它在发射极电阻上取电压和基准电压比较然后驱动三极管基极形成一个闭环。运放的开环增益通常有80dB以上这意味着它能把采样电压和基准电压的误差压到极低。只要基准电压够稳、采样电阻够准恒流精度可以做到1%以内。这个电路的结构是运放同相端接基准电压Vref反相端接三极管发射极运放输出通过电阻驱动三极管基极三极管集电极接负载到电源正极发射极接Re到地。运放会强制反相端电压等于同相端所以Re上的电压就等于Vref恒流值就是Vref/Re。简单粗暴而且精度极高。3.2 基准电压怎么给才靠谱基准电压的来源决定了整个恒流源的精度上限。最便宜的做法是用电阻分压但分压比会随电源电压变化恒流值也跟着变。稍微好一点用TL431温漂可以做到50ppm/度价格也就几毛钱。要求再高就用专用基准芯片比如REF3012之类的初始精度0.2%温漂25ppm/度。我一般根据负载需求来选驱动LED指示灯电阻分压加一颗滤波电容就够了驱动传感器电桥或者激光二极管必须上TL431以上如果是精密测量设备那就直接上专用基准别省这个钱。另外基准电压的噪声也要考虑可以在基准端并一颗1uF到10uF的电容把高频噪声滤掉。3.3 运放选型与补偿电容运放的选择主要看三个参数输入失调电压、输入偏置电流、增益带宽积。输入失调电压直接叠加在Vref上所以越小越好。通用运放如LM358失调电压几个mV对于Vref1V来说就是0.几%的误差可以接受。但如果Vref只有100mV那失调电压的影响就大了得用失调电压几十uV的精密运放。输入偏置电流会影响采样精度特别是Re较大的时候。比如Re10kΩ偏置电流1uA就会产生10mV的误差。所以高阻采样时要用CMOS输入运放偏置电流在pA级别。增益带宽积决定了电路的响应速度恒流源一般不需要太快1MHz以上就够。但要注意运放驱动三极管基极时整个环路可能振荡需要在运放输出和基极之间串一颗小电阻再在基极和地之间加一颗小电容构成一个低通把高频增益压下去。我通常先用100Ω和100pF试然后用示波器看阶跃响应微调到自己满意。4. 电流镜集成电路里的恒流担当4.1 基本电流镜的工作原理电流镜的核心思想是如果两颗三极管的Vbe相同那么它们的集电极电流就成比例。把两颗NPN的基极连在一起发射极都接地其中一颗的集电极和基极短接二极管接法注入参考电流Iref另一颗的集电极就是输出电流Iout。理想情况下Iout Iref因为两颗管子Vbe一样电流自然一样。但现实中基极电流会分走一部分Iref导致输出电流比参考电流小。如果两颗管子的β都是100那误差大约2/β也就是2%。这个误差在要求不高的场合可以接受但精密应用就需要改进。改进方法有两种一是加缓冲管做基极电流补偿二是用cascode结构提高输出阻抗。4.2 威尔逊电流镜和cascode电流镜威尔逊电流镜用三颗管子把基极电流误差几乎完全消除输出阻抗也提高了一个数量级。它的结构是两颗管子做基本电流镜第三颗管子接在输出管的集电极和基极之间形成负反馈。这个电路的输出阻抗大约为β×ro比基本电流镜的ro高了β倍。对于需要高输出阻抗的场合比如给差分对做尾电流源威尔逊电流镜是非常划算的选择。Cascode电流镜则是另一种思路在输出管的集电极再串一颗管子让输出管的Vce保持恒定从而消除Early效应带来的电流误差。Cascode的输出阻抗可以做到β×ro甚至更高而且频率响应也不错。在版图设计里cascode电流镜的匹配性很好做因为所有管子都可以放在同一个阱里方向一致梯度效应可以抵消。我在做高精度DAC的偏置电路时cascode电流镜是首选。4.3 版图匹配的实战经验电流镜的精度很大程度上取决于版图匹配。即使电路原理完美版图画得不对匹配误差也可能超过5%。我的经验是第一所有电流镜管子必须同方向、同尺寸不要为了省面积把管子旋转90度第二在管子周围加dummy管保证边缘管子和中间管子的环境一致第三用共质心布局把两颗管子拆成多个指状交叉排列抵消线性梯度第四尽量远离功率器件和时钟线避免热梯度和衬底噪声。还有一点电流镜的参考电流走线要对称最好用相同的线宽和长度避免IR drop导致Vbe不一致。如果参考电流是外部给的那走线上的压降会直接变成电流误差。我一般会在参考电流路径上留测试点流片后实测再微调。5. 高压场景Cascode恒流源与高压运放方案5.1 高压下三极管的击穿问题当电源电压超过三极管的Vceo额定值时直接使用就会击穿。比如常见的9013Vceo只有20V用在24V或48V系统里就非常危险。这时候有两种选择一是换用高压管子比如MJE13003Vceo有400V二是用cascode结构把电压压力分摊到两颗管子上。Cascode恒流源的结构是下面一颗管子做电流设定上面一颗管子做电压阻挡。下面管子的集电极电压被上面管子的基极电压钳位在一个固定值比如5V这样下面管子永远看不到高压。上面管子承受大部分电压但它的Vbe由下面管子的集电极电压决定所以电流仍然由下面管子控制。这个结构在高压LED驱动和工业传感器激励里非常常见。5.2 高压运放的选型与保护如果用运放做高压恒流源运放本身的供电电压就成了问题。普通运放供电最高36V对于48V系统就不够。这时候要么用高压运放比如OPA454供电可以到100V以上要么用低压运放加高压三极管运放只控制基极集电极电压由外部管子承担。保护方面高压场景一定要考虑负载开路和短路。负载开路时三极管集电极电压会升到电源电压如果超过Vceo就击穿。所以要在集电极和电源之间加钳位二极管或者用TVS管把电压限制在安全范围内。负载短路时电流会飙升要在发射极加快速熔断保险丝或者用运放的限流功能。我在一个48V工业项目里就因为没加钳位负载插拔时打火把管子打穿了后来加了TVS才稳定。6. 调试与实测从仿真到量产的坑6.1 仿真能信几分仿真对于恒流源设计很有帮助特别是验证工作点和温度漂移。但仿真模型里的β值和Vbe通常都是典型值实际批次离散性可能很大。我一般会在仿真里做蒙特卡洛分析把β设为50到200的均匀分布Vbe设为0.6V到0.75V看看电流分布范围。如果仿真显示最坏情况下电流偏差超过10%那实际电路肯定更糟必须改设计。另外仿真里的热效应往往是静态的实际电路中三极管自热会导致Vbe下降电流上升形成正反馈。如果散热不好可能热失控。我习惯在仿真里加一个温度源模拟管子结温升高20度看看电流变化多少。如果变化超过5%就要考虑加发射极电阻负反馈或者用温度补偿。6.2 实测中常见的异常波形调试恒流源时示波器是最重要的工具。我遇到过几种典型异常第一种是上电瞬间电流过冲原因是运放输出从0V升到工作点时三极管基极电压上升太快导致瞬间大电流。解决办法是在运放输出加RC缓启动或者用软启动电路。第二种是负载变化时电流振荡原因是环路相位裕度不够需要在运放输出和基极之间加补偿电容。第三种是电流随温度缓慢漂移原因是采样电阻温漂或者基准温漂需要换低温漂器件。还有一种隐蔽的坑三极管自激振荡。有时候示波器上看电流很稳但用频谱仪能看到几十MHz的杂散。这种振荡可能来自基极引线的电感也可能来自负载的电容。解决办法是在基极串磁珠或者小电阻在集电极加RC吸收。6.3 量产一致性怎么保证量产时最怕的是批次一致性差。我的做法是第一采样电阻用0.1%精度的别用5%的第二三极管选同一批次、同一封装最好让供应商提供β分档第三基准电压源用同一批次避免混用第四在PCB上留一个可调电阻的位置量产时用自动测试设备微调把电流调到目标值±1%以内。另外测试环节要模拟实际工作温度。我一般会在高低温箱里抽测-20度、25度、70度各测一次看电流变化是否在规格内。如果超差就要分析是基准漂移还是三极管漂移然后针对性换料。这个流程虽然麻烦但比批量退货划算得多。7. 几种方案的横向对比与选型建议7.1 成本、精度、复杂度的三角关系方案元件数典型精度温漂成本适用场景二极管偏置4±5%差极低LED指示、低要求负载运放加三极管6-8±1%中低传感器激励、精密LED基本电流镜2-3±3%中极低芯片内部偏置威尔逊电流镜3-4±1%中低高阻抗尾电流源Cascode电流镜4-5±0.5%好中高精度模拟电路高压Cascode5-6±1%中中高压LED、工业传感器选型时先问自己三个问题电流精度要求多少电源电压和负载电压的裕量够不够成本能接受多少如果精度要求低于2%二极管偏置或基本电流镜就够了。如果要求1%以内运放方案或威尔逊电流镜更合适。如果电源电压超过30V必须考虑cascode或高压管。7.2 我的个人选型习惯做了这么多年我形成了一套自己的选型顺序先看电源电压如果低于12V且精度要求不高直接二极管偏置省事省钱。如果精度要求1%左右用运放加三极管基准用TL431采样电阻用0.1%这套组合我用了上百次非常稳。如果是芯片内部设计基本电流镜加cascode面积和精度平衡得最好。高压场景一律cascode下面管子用低压高β的上面管子用高压低β的分工明确。还有一点不要迷信仿真也不要迷信理论计算。实际焊接一块板子用可调电源和电子负载测一遍比什么都强。我见过太多理论计算完美但实际一塌糊涂的电路也见过理论粗糙但实际很稳的电路。硬件设计的乐趣就在这永远有惊喜。8. 几个容易被忽略的细节8.1 三极管的功耗计算很多人选三极管只看电流和电压忘了功耗。恒流源里三极管的功耗是Vce乘以Ic。比如5V电源驱动2V LED恒流20mAVce3V功耗就是60mW。SOT-23封装的热阻大约250度/W温升15度没问题。但如果是24V电源驱动2V LEDVce22V功耗440mWSOT-23就扛不住了得换SOT-223或者加散热片。我一般会留50%的裕量算出来功耗300mW就选额定600mW以上的封装。8.2 采样电阻的温漂采样电阻的温漂直接变成电流温漂。普通厚膜电阻温漂100ppm/度温度变化50度就是0.5%的阻值变化电流也跟着变0.5%。如果精度要求1%那这个温漂就吃掉一半预算。所以精密场合要用金属膜电阻温漂25ppm/度甚至更低。另外电阻的自热也会导致阻值变化功率裕量至少留2倍以上。8.3 电源抑制比恒流源的电源抑制比是指电源电压变化时输出电流的变化率。二极管偏置方案的电源抑制比很差因为偏置电流直接随电源电压变。运放方案的电源抑制比取决于基准的电源抑制比和运放的电源抑制比。如果基准是电阻分压那电源抑制比基本为零。所以精密场合基准必须用带隙基准或者TL431它们内部有反馈电源抑制比可以做到60dB以上。8.4 启动时间与软启动有些负载对启动电流敏感比如激光二极管瞬间过流会损坏。这时候需要软启动。最简单的软启动是在基准端加RC让Vref缓慢上升。运放方案里可以在运放输出和基极之间加RC时间常数取1ms到10ms。但要注意软启动电容会影响环路稳定性需要重新补偿。我一般先用10kΩ和1uF试然后看启动波形调整到没有过冲为止。9. 从分立到集成什么时候该换方案分立三极管恒流源适合中小电流、成本敏感、设计自由度高的场景。但如果电流超过1A或者精度要求0.1%以上分立方案就开始吃力了。这时候可以考虑专用恒流源芯片比如LM334或者恒流二极管或者用运放加MOS管。MOS管的优势是没有基极电流误差而且导通电阻可以做得很低适合大电流。但MOS管的栅极驱动需要额外考虑而且跨导比三极管低环路补偿更麻烦。我个人的分界线是电流小于100mA、精度要求1%左右用三极管方案电流100mA到1A用三极管加运放或者MOS加运放电流大于1A直接用专用芯片或者开关恒流源。开关恒流源效率高但噪声大不适合精密模拟负载。线性恒流源简单干净但效率低散热压力大。选哪个看你的负载和预算。10. 写在最后的一些实操心得恒流源电路设计这件事理论归理论最后还是要落到板子上。我这些年最大的体会是不要追求一步到位先搭一个最简电路测通了再逐步加精度。二极管偏置方案虽然粗糙但它是理解恒流原理的最好起点。运放方案虽然复杂但它是通往高精度的必经之路。电流镜虽然多在芯片里用但理解了它对做分立电路也有帮助。另外多备几种三极管。9013、9014、2N3904、BC547这些便宜管子各买一包调试时换着试。不同管子的β和Vbe差异很大有时候换一颗管子电路就稳了。还有采样电阻多买几个阻值39Ω、47Ω、51Ω、100Ω调试时用可调电阻先找感觉确定了再换固定电阻。最后说一个我踩过的坑有一次用运放方案驱动LED电流设定20mA结果批量时发现10%的板子电流只有15mA。查了半天发现是运放输入失调电压超差批次里有部分管子失调电压到了5mV而我的Vref只有200mV误差2.5%加上其他误差就超了。后来把Vref提高到1V采样电阻相应减小问题解决。所以Vref不要设得太低至少500mV以上给失调电压留足裕量。这个经验希望对你有用。