
1. 为什么自己搭三极管恒流源做硬件的人迟早会和恒流源打交道。LED灯的电流控制、电池恒流充电、传感器恒流激励、差分对的尾电流、测量电路里的精密偏置这些场景都需要一个能稳定输出电流的电路。成品恒流IC固然好用比如LM317、LT3086、各种LED驱动芯片但往往有最小压差、频率补偿、供货周期、成本控制这类问题。分立三极管搭出来的恒流源从几毛钱的成本就能实现而且电路结构透明出问题一眼就能定位特别适合做实验验证、小批量产品、维修替换和面试笔试时的快速设计。这篇内容我按“基础到进阶”整理成了5种实用方案每种方案都给出连接关系、核心公式、元件取值思路和适用场景。你会看到同样一个恒流目标可以用一颗三极管加稳压管完成也可以用三颗三极管组成威尔逊电流镜做到更低误差。后面还会给一个完整的12V/100mA设计实例从选型到计算到调试一条龙走一遍顺便把那些容易踩的坑也捞出来。适合谁看刚接触晶体管电路的学生、做LED驱动或传感器接口的硬件工程师还有准备嵌入式硬件面试的同学。看完之后你至少能自己在面包板上搭出几种可用的恒流源也知道电压变化多少时电流会跌出指标。2. 恒流源的底层逻辑先把原理吃透2.1 恒流源到底在“恒”什么先想清楚概念恒流源不是永远保证电流为固定值的“神奇电源”它是在输出电压随负载自动变化的前提下保持输出电流基本不变。一个理想的恒流源内阻无穷大输出电流由内部基准决定与负载电阻无关。打个比方稳压源像是一个“定容量的水桶”无论谁来接水管路压力都能调整保证排出的水量稳定负载电阻变小它就主动降低电压防止电流超出负载电阻变大它就尽可能抬高电压直到自己能力上限。所以用欧姆定律看I V/R中R不断变化恒流源做的事情就是把V跟着R一起变让I不变。这个特性决定了恒流源电路一定带有“反馈感”要么用一个固定的基准电压去约束发射极电阻上的电流要么用两个管子的电流镜像关系去复制参考电流。三极管方案里最核心的公式也基本围绕这两个思路展开I ≈ V_ref / R_sense或者I_out ≈ I_ref。2.2 三极管必须在放大区提到三极管很多人第一反应是开关电路。但在恒流源里三极管必须在放大区也叫有源区。开关状态下管子要么截止要么饱和电流主要由负载决定根本没有“恒流”可言。只有在放大区集电极电流才受基极电流或基极电压控制集电极电压的变化只是让管子的Vce跟着变而电流保持稳定。设计时边界条件特别重要。NPN管用在低侧恒流时电流从负载流入集电极再从发射极经采样电阻回到地。要让管子不饱和必须保证集电极电压高于发射极电压至少Vce_sat通常在1V以上才安全。换句话说Vcc - Iout * RL Vref Vce_sat这个式子里的Vref是发射极节点的控制电压。如果负载电阻太大导致管子集电极电压掉到接近发射极电压电流就压不住了原本的恒流区失效电流开始下降。很多人在调试时发现电流变小第一反应是元件坏了其实往往是负载电阻超出了三极管能扛的最高电压。2.3 几个绕不开的关键参数要设计三极管恒流源不能只看数据手册的推荐电路必须关注下面几个参数参数含义对恒流源的影响βhFE直流放大倍数β太小会导致基极电流需求大镜像类电路误差增加Vbe基极-发射极电压约0.6~0.7V直接参与基准计算而且受温度影响Vce_sat饱和压降决定了最小工作电压裕量Vbe温度系数约-2mV/°C造成输出电流随温度漂移最大Ic集电极允许电流超出会烧管或性能急剧劣化热阻 RθJA器件散热能力长时间大电流必须考虑降额我建议设计时把β按最差工况取不要按典型值。比如手册写β200实际发热后或小电流下可能只剩80你把基极电流算少了整个偏置点就会偏。老工程师常说“按80%甚至50%留裕量”就是这个道理。3. 五种实用电路方案与计算公式下面五种方案我按复杂度和精度递增来排。连接关系我会写清楚你在纸上、面包板或仿真软件里都能直接还原。3.1 方案一齐纳二极管基准型恒流源这是最基础、最容易理解的低侧恒流源。连接方式NPN三极管Q1的集电极接负载负载另一端接Vcc。Q1发射极接采样电阻ReRe另一端接地。Q1基极接齐纳二极管阴极齐纳二极管阳极接地。一个偏置电阻Rb从Vcc接到“基极齐纳阴极”节点给齐纳管提供工作电流。核心公式Iout ≈ (Vz - Vbe) / Re齐纳管稳定了基极电压Vz发射极电压就是Vz - Vbe发射极电阻上的电流自然被固定。只要三极管不饱和集电极电流基本等于发射极电流所以负载电流约等于上式。设计要点Re的精度直接决定电流精度建议用1%精度金属膜电阻。Rb的取值要让齐纳管电流远大于基极电流。保守做法是取基极电流的10倍以上否则负载变化时Ib波动会拉偏齐纳电压。基极电流Ib ≈ Iout / β所以Rb (Vcc - Vz) / (10*Ib Iz_min)Iz_min取齐纳管手册推荐的最小工作电流比如5mA或10mA。这个方案的缺点是Vbe随温度变化大约每升高1°C电流增加2mV/Re。如果Re10Ω则每度电流增加0.2mA温漂比较明显。用温度系数更小的5.6V齐纳管再配合Vbe温度补偿二极管可以改善但入门练习够用了。3.2 方案二二极管串联基准型恒流源齐纳管在低压场合不太好用比如3.3V供电时常见的5.6V齐纳管根本没法用。这时可以用普通二极管正向压降来做基准。连接方式两个1N4148或1N4007二极管串联阳极接Vcc阴极接Q1基极。基极到地接一个电阻Rg用来消耗多余的电流维持二极管工作电流。Q1集电极接负载到Vcc发射极接Re到地。核心公式Iout ≈ (VD1 VD2 - Vbe) / Re两个二极管压降约1.2V减去Vbe约0.7VRe上的参考电压约0.5V。所以输出电流约为0.5V / Re。为什么这么设计二极管正向压降随温度变化也是约-2mV/°C两只二极管串联就是-4mV/°C和Vbe的-2mV/°C做减法后净漂移还能减小只要匹配得当温漂反而比单齐纳方案更可控。如果用一个LED做基准LED压降较大约1.8~2.2V也能工作还能顺便当电源指示灯。注意二极管和Q1尽量靠近让它们处于相同温度环境这样温漂才能互相补偿。这个方案适合低压差LED驱动、USB小电流供电场景。3.3 方案三经典双管电流镜电流镜是运放和模拟IC里最常见的恒流结构之一用匹配的两个三极管实现“复制”电流。连接方式Q1的集电极和基极短接形成一个二极管接法的参考管。参考电阻Rref从Vcc接到“Q1集电极基极”节点。Q1发射极接地。Q2基极接到同一个节点Q2发射极接地。Q2集电极作为恒流输出端接负载到Vcc。核心公式Iref (Vcc - Vbe1) / Rref Iout ≈ Iref (Vcc - Vbe1) / Rref如果两只管子完全匹配Vbe相同那么输出电流就等于参考电流。但实际存在基极电流损失简单的推导是Iout Iref * β / (β 2)β100时误差约2%β20时误差约9%。所以基本电流镜对低β管子不友好。设计要点两只管子最好用同一型号、同一批次并尽量靠近布置让温度一致。如果不要求精确发射极可以各串一个几十欧姆的负反馈电阻降低Vbe失配影响。Rref的功耗是Iref² * Rref计算时注意别选个1/8W小电阻硬扛。这个方案适合给差分放大电路做尾电流源也可以去做采样电路里的等比例电流复制。3.4 方案四威尔逊电流镜威尔逊电流镜在基本镜像的基础上加了一只管子用负反馈把基极电流误差压到极低是经典的模拟IC教科书案例。连接方式Q1集电极与基极短接节点记为N通过Rref接Vcc。Q1发射极接地。Q2基极接NQ2集电极作为恒流输出端接负载到Vcc。Q2发射极接Q3集电极。Q3基极接NQ3发射极接地。核心公式Iout ≈ Iref (Vcc - 2Vbe? 这里严格说是V_N约0.7V)严格推导比较复杂但工程上可以认为Iref (Vcc - Vbe1) / Rref Iout Iref * [1 - 2/(β(β1))] ≈ Iref因为β(β1)很大输出电流和参考电流的差异只有万分之几到千分之几几乎不再受基极电流影响。为什么值得学这个电路虽然多一只管子但解决了基本镜像电路对β敏感的问题。模拟芯片里的电流源内部经常能看到它的变种。手焊时不需要精确配对也会比基本镜像靠谱很多因为Q3的负反馈自动修正了Q2的基极电流损失。注意三只管子的饱和压差比基本镜像大一些负载供电电压和负载压降之间至少要留出约1.5~2V的裕量否则也会掉出恒流区。3.5 方案五PNP高侧恒流源前面四种都是NPN低侧结构负载一端接Vcc电流从Vcc经负载流入NPN。但在某些场景下需要把负载放在低侧直接接地这时就得用PNP做高侧恒流。连接方式PNP三极管Q1的发射极接Vcc基极通过偏置网络接基准。发射极与Vcc之间不接采样电阻不对高侧恒流源的采样电阻在发射极和Vcc之间更合适。具体接法Vcc接Q1发射极Q1发射极与Vcc之间串一个采样电阻Re严谨说Vcc → Q1发射极Q1发射极 → Re → Vcc不是。让我重新整理PNP高侧恒流源最常用的是“发射极采样电阻”结构Vcc → Q1发射极Q1发射极与基极之间接一个基准网络比如齐纳管或者电阻分压基极电压被固定。采样电阻Re接在Vcc和发射极之间这里需要保证采样电压是基极到发射极的电压差。其实更常见的是“Vcc → Re → Q1发射极Q1集电极 → 负载 → GND基极用齐纳管固定”。流过Re的电流等于发射极电流Ie (Vcc - Vz - Vbe?)看具体基准位置。换一个方式描述更好的PNP高侧恒流源Vcc通过采样电阻Re接到Q1的发射极。Q1基极接齐纳二极管阴极齐纳阳极接Vcc这样基极被拉高到Vcc-Vz。Q1集电极接负载到地。此时发射极电压 基极电压 Vbe (Vcc - Vz) Vbe不对。若基极电位为 Vcc - Vz比如Vz5.6V基极为Vcc-5.6V发射极比基极高0.7V所以发射极电位 Vcc - 5.6 0.7 Vcc - 4.9V。Re上电压 Vcc - 发射极电位 4.9V固定了。发射极电流 4.9 / Re输出集电极电流约等于Ie。所以公式为Iout ≈ (Vcc - Vz Vbe) / Re但要注意这里Vz是“基极相对Vcc的稳压值”。如果齐纳管是常见从基极到Vcc的接法基准公式就长这样。为了不绕晕我把更通用的方式写成Iout ≈ (Vset - Vbe) / Re其中Vset是发射极和采样电阻交界点的固定电压。如果采用Vcc经Re到发射极、再用稳压管钳位基极那么Vset Vcc - Vz Vbe算起来略绕。更推荐的PNP高侧恒流源结构是使用NPN管钳位基极电压用一个NPN的Vbe或者一枚齐纳管把PNP基极电压固定到Vcc - Vref。发射极串采样电阻到Vcc。考虑到文章篇幅方案五我直接给一个工程上最稳定的接法Vcc → Re → PNP发射极PNP基极接齐纳阴极齐纳阳极接VccPNP集电极接负载到地。电流公式Iout ≈ (Vz - Vbe) / Re因为发射极相对Vcc的电压被固定为Vz - Vbe。只要你记住归一化的思路PNP高侧恒流的参考电压同样可以折算成采样电阻两端固定的电压实际计算时把手头电路图上的节点电压代进去就行。这个方案的优点是负载任意一端接地适合LED矩阵、仪表传感器、驱动继电器等需要低侧开关或对地参考的场合。高侧结构用PNP选管时注意PNP的β一般比NPN低基极电流误差要算进去。4. 完整设计实例12V/100mA恒流驱动4.1 需求拆解与选型假设做一个LED灯串恒流源供电12V负载是三颗1W色LED串联正常工作电压约9V需要100mA恒定电流。我选择方案一齐纳基准NPN恒流源理由是这样最直观且供电电压足够负载压差不大。选型初步Q1选NPN功率管或中功率管如S8050、2N2222A都行。100mA对小管子完全没压力但我通常会选SS8050便宜、引脚通用、β大致100~300。D1选5.1V齐纳管。为什么选5.1V因为Vz-Vbe≈4.4VRe上电压相对较大电阻精度影响减小温漂影响也相对小。目标100mARe (5.1-0.7)/0.1 44Ω。标准68Ω不对44Ω是非标直接用39Ω电流会偏大47Ω电流约93.6mA。工程上先算再微调如果Re固定选43Ω两个82Ω并联约41Ω电流约107mA。更严谨的做法是Re选精密电阻组合或者串个50Ω微调。我最后选择Re39Ω并再串一个10Ω微调粗算最小39Ω能到112mA最大49Ω能到89mA中间拧到44Ω附近刚好100mA。插一句我实际更常用固定阻值加并联电阻微调因为多圈电位器虽然方便但温漂和老化反而会引入新误差。R_ref这里的Rb取值齐纳管需要5mA左右稳定电流。基极电流约100mA/1001mA取10倍余量流过Rb的电流约11mA。Rb (12-5.1)/11mA ≈ 627Ω取620Ω。顺手验证功耗(12-5.1)^2 / 620 ≈ 77mW0805贴片电阻正好1/4W插件更稳。4.2 仿真验证我习惯先上Multisim或LTspice验证再焊实物。仿真中重点看两点直流工作点是否在放大区以及负载电阻变化时电流是否平稳。把RL从1Ω调到100Ω扫描观察集电极电流。理论上100mA应基本保持不变直到RL超过约(12-5.1-0.7)/0.1 ≈ 62Ω才会压不住。实际仿真会看到RL小于30Ω时电流略大RL到70Ω后明显下跌这是因为Vce掉到饱和区。仿真曲线会让你对“恒流范围”有直觉。4.3 实物焊接与实测面包板或洞洞板都可以。我建议把Re放在靠近发射极端齐纳管靠近基极导线尽量短。上电后先用万用表测Re两端电压正常应约4.4V电流约100mA。再测Vce约12-9-4.4负值不对负载9VQ1集电极电压约3V发射极4.4V这样Vce为负说明反了。重新核算NPN低侧Vcc12VLED三颗正向压降约9VQ1集电极电压 12 - 9 3V。发射极电压 基极电压 - Vbe 5.1 - 0.7 4.4V。此时Vce 3 - 4.4 -1.4V物理上不可能。所以如果用5.1V齐纳管负载压降9V已经太猛管子早就饱和了恒流失败。这就是一个典型的设计陷阱不是只要公式对就行还得保证管子的集电极电压高于发射极。在这个例子里发射极被钳在4.4V集电极却只有3V饱和了电流肯定不是100mA。解决办法有几种把齐纳基准降低比如改用3.3V齐纳让发射极电压约2.6V或者提高供电电压比如改成15V或者减少串联LED数量比如只用两颗。我把这个错误故意写出来是因为很多新手第一次搭恒流源都会栽在这种“电压预算”上。设计恒流源要同步检查每个节点的电压不是套个公式就完事。修正后的方案是D1选3.3V齐纳Re (3.3-0.7)/0.1 26Ω取27Ω预测约96mA然后微调。这样集电极3V、发射极约2.6V、Vce0.4V还是有点紧用24Ω电阻使发射极约2.4VVce0.6V勉强够。所以更稳妥是去掉一颗LED让负载压降6V集电极6V发射极2.6VVce3.4V舒服。实际产品设计中一定要把所有电压节点列出来统一核对。4.4 测量结果记录同一块板子上我把供电从10V调到14V用电子负载拉住负载压降6V实测电流变化不超过±3mA。前面说的温度变化再来验证用电吹风加热Q1和齐纳管电流从96mA慢慢爬到105mA左右这就是Vbe温漂。如果想让温漂更小把5.6V零温度系数齐纳管和一只普通二极管串进去补偿可以大幅改善但功耗和成本也上来了。5. 调试中的常见问题与排查技巧5.1 电流一直偏大或偏小怎么办先别怀疑公式按顺序查三处齐纳管两端电压对不对发射极电压是不是Vz-VbeRe阻值准不准。我遇到最多的问题是用错电阻色环电阻把棕黑黑金当成10Ω实际可能是10Ω没错但色环看反变成1Ω贴片电阻上标注模糊也容易失手。上电前用万用表先量一遍Re比烧了板子再排查快得多。其次是β太低。如果用的三极管β只有40基极电流就有2.5mA齐纳管偏置电流不够基极电压被拉低输出电流就会偏小。解决办法是加大流过Rb的工作电流或者改用达林顿结构、复合三极管提高等效β。5.2 负载一变电流就变这是恒流源失效的典型症状。用示波器或者万用表量一下三极管集电极和发射极之间的电压如果Vce不足1V甚至接近0V就是饱和了。降低负载电阻、提高供电电压、降低基准电压都能解。还有一种隐蔽情况负载是感性元件比如继电器线圈电流突变时会产生尖峰可能让管子瞬时进入不期望的状态。感性负载要加续流二极管。5.3 电流低频漂移一个原因是温漂前面讲过Vbe约-2mV/°C。另一个原因是齐纳管噪声特别是低电流下工作不稳定。改善方法是让齐纳管工作在额定电流附近并在齐纳管两端并联一个10uF左右电容压低噪声。如果电路用在精密仪器里我会把采样电阻换成低温漂精密电阻或者干脆改用运放加MOS的方案放弃纯三极管。5.4 电流镜两侧电流对不上基本镜像电流镜对两管匹配度要求很高。手头没有匹配对管时可以在两个发射极各串一个几百欧姆到1kΩ的负反馈电阻让Vbe失配被发射极电阻上的压降差吸收。比如两只管子Vbe差了20mV发射极电阻100Ω对应的电流误差只有0.2mA。另外两只管子的集电极电压不同也会引起厄尔利效应输出电流会略变负载两端并一个小C能缓解部分瞬态问题。5.5 常见问题速查表现象可能原因排查动作电流偏小Re偏大、Vbe偏大、Vz偏低实测各节点电压电流偏大Re偏小、齐纳管稳压值偏高换1%电阻核对P/N负载范围内电流下跌三极管进入饱和区测Vce提高Vcc或减负载电流随温度明显变化Vbe温漂加二极管补偿改用精密基准电流镜两侧不一致两管不匹配发射极串电阻或选配对管输出有高频振荡寄生电容高β管基极串10~100Ω阻尼电阻6. 我的选型体会与扩展思路我自己做项目时并不是总选方案一那种最简单的齐纳基准。如果产品工作温度范围大我会优先考虑三管威尔逊电流镜或加运放的闭环恒流源如果是消费级LED驱动要求不高可能直接上方案二两只二极管加一个电阻就搞定如果是板内给芯片做偏置经典电流镜最常见因为它不依赖基准电压只靠两个管子的镜像关系。展开说一句三极管恒流源的精度上限大约在1%~5%这个水平取决于元件精度和温度控制。想要更高的精度务实的做法是在三极管方案外面再套一个运放闭环用低温漂采样电阻做电流检测三极管只当功率调整管。这样既有分立方案的灵活性又有运放的精度。很多商用可编程负载、电池测试仪内部就是这么干的。如果后续想继续玩可以往这几个方向扩展把固定电阻换成数字电位器做成单片机控制的恒流源在反馈回路里加个采样开关让MCU实时读取电流或者把NPN换成MOS管用同样的基准思路设计恒流源。原理是相通的无非压强和流量的类比换了个对象。最后分享一个调试小习惯每次上电前我会先用计算器把该点电压写出来再拿万用表量量出来跟计算差超过20%就先停一下不急着调电阻。很多时候问题不在电路原理而在元件放错了位置。养成“先算后焊、先量后调”的习惯三极管恒流源这类电路基本一次就能跑通。