恒流源这个东西,说简单也简单,说讲究也是真讲究。一个运放加一个MOS管能搭,一个基准源加一个三极管也能搭,但真要把成本压到几毛钱、温漂控制在可接受范围内、还要在宽负载范围内稳定工作,双NPN三极管方案就值得拿出来单独聊一聊了。我最近在做一个传感器激励电路,需要给桥式电阻网络提供稳定的偏置电流,负载阻抗会随环境变化,供电电压也有波动,用电阻分压加运放的方案成本偏高,最后选定了双NPN三极管构成的恒流源结构。这篇文章就把整个设计过程、参数计算、实测数据和踩过的坑完整梳理一遍,适合有一定模电基础、正在做低成本恒流源设计的硬件工程师参考,也适合正在学模电、想搞明白负反馈在实际电路中怎么落地的同学。
1. 为什么选双NPN三极管而不是运放方案
1.1 恒流源的本质需求与常见实现路径
恒流源的核心目标只有一句话:让流过负载的电流不随负载阻抗和供电电压的变化而变化。听起来简单,但实现方式差别很大。常见的方案有几种:运放加MOS管、运放加三极管、基准源加分立器件、专用恒流IC。运放方案精度高、设计简单,但一颗运放加上基准源,成本轻松上到一两块钱,对于大批量消费类产品来说压力不小。专用恒流IC虽然集成度高,但输出电流范围固定,灵活性差,而且交期和价格波动大。
双NPN三极管方案的核心优势在于成本极低、器件通用、设计灵活。两颗常见的NPN三极管,比如9013或者2N3904,加上几个电阻,总成本可以控制在几毛钱以内。而且通过调整电阻比值,输出电流可以自由设定,从几百微安到几十毫安都能覆盖。代价是什么?精度和温漂不如运放方案,需要仔细设计负反馈网络和温度补偿。但对于很多对精度要求不那么苛刻的场景,比如LED恒流驱动、传感器偏置、充电电路预充阶段,这个方案完全够用。
1.2 双NPN结构的负反馈机制拆解
双NPN恒流源的经典结构是这样的:第一颗三极管(我们叫它Q1)作为主调整管,第二颗三极管(Q2)作为反馈检测管。Q1的集电极接负载,发射极通过一个采样电阻接地。Q2的基极接在Q1发射极和采样电阻之间,检测采样电阻上的压降。Q2的集电极接到Q1的基极,形成负反馈回路。
工作原理可以这样理解:假设负载电流突然增大,采样电阻上的压降升高,Q2的基极电压升高,Q2导通程度加深,Q2的集电极电流增大,把Q1的基极电流分流走一部分,Q1的导通程度减弱,负载电流被拉回来。反过来,如果负载电流减小,采样电阻压降降低,Q2导通减弱,Q1基极获得更多电流,导通加深,负载电流回升。这就是一个典型的电流负反馈闭环,通过两颗三极管的相互制约,把输出电流稳定在设定值附近。
这个结构的美妙之处在于,它不需要额外的基准电压源。设定电流的参考电压来自Q2的基极-发射极导通压降Vbe,大约0.6到0.7V。采样电阻上的压降被钳位在Vbe附近,所以输出电流约等于Vbe除以采样电阻值。这个关系虽然简单,但Vbe本身有温度系数,大约-2mV每摄氏度,这就是温漂的来源,后面会详细讲怎么处理。
1.3 和运放方案、专用IC方案的横向对比
为了更直观地说明选型逻辑,我把三种方案的关键指标列出来对比一下。
| 对比维度 | 双NPN三极管方案 | 运放+MOS方案 | 专用恒流IC |
|---|---|---|---|
| 物料成本 | 极低,几毛钱 | 较高,1-3元 | 中等,0.5-2元 |
| 输出电流精度 | 中等,±5%-10% | 高,±1%以内 | 高,±2%以内 |
| 温漂表现 | 较差,需补偿 | 好 | 好 |
| 设计复杂度 | 中等,需计算偏置 | 低,查手册即可 | 低 |
| 输出电流范围 | 灵活可调 | 灵活可调 | 受限于型号 |
| 最低工作电压 | 约1.5V | 约2.5V | 约1.2V |
| 适用场景 | 成本敏感、精度要求一般 | 精密仪器、高端产品 | 标准化批量产品 |
从表里可以看出来,双NPN方案的核心竞争力就是成本和灵活性。如果你的产品对精度要求是5%级别,供电电压不高,负载电流在几毫安到几十毫安之间,这个方案就是最优解。但如果你需要1%以内的精度,或者工作温度范围很宽(比如工业级-40到85度),那就老老实实上运放方案,别在这里省成本。
2. 电路参数计算的完整推导过程
2.1 设定电流与采样电阻的定量关系
先把这个关系推清楚。假设我们想要的恒流值是Iout,采样电阻是Rsense。Q2的基极接在Q1发射极,所以Q2的Vbe等于Q1发射极电压减去Q2基极电压。在正常工作状态下,Q2的基极电流很小,可以忽略,所以Q1发射极电压约等于Rsense上的压降,也就是Iout乘以Rsense。
Q2要导通,它的Vbe需要达到导通阈值,大约0.65V。所以有:
Iout × Rsense ≈ Vbe(Q2) ≈ 0.65V
这就是核心公式。比如我们要设定10mA的恒流值,Rsense就是0.65V除以10mA,等于65欧姆。要设定20mA,Rsense就是32.5欧姆,取标准值33欧姆。
但这里有个细节要注意:Q2的Vbe不是固定值,它随温度和集电极电流变化。在小电流下,Vbe可能只有0.55V,大电流下可能到0.75V。所以实际电流会有偏差。我一般会先用0.65V估算,然后实测调整。
2.2 Q1基极偏置电阻的计算逻辑
Q1要工作在放大区,它的基极需要足够的驱动电流。Q1的集电极电流就是输出电流Iout,假设Q1的电流放大倍数β是100(9013在中等电流下大概这个水平),那么基极电流Ib就是Iout除以β。10mA输出对应100微安基极电流。
Q1的基极通过一个电阻Rb接到供电正极。这个电阻的取值要保证在最低供电电压下,能提供足够的基极电流,同时不能太大导致Q1无法充分导通。计算方法是:
Rb = (Vcc_min - Vbe(Q1) - Vout) / Ib
其中Vout是负载上的压降,Vbe(Q1)约0.7V。假设最低供电电压是5V,负载压降是2V,Ib是100微安,那么Rb就是(5 - 0.7 - 2) / 0.0001 = 23k欧姆。实际取值要留余量,我一般取10k到20k之间。
但Rb也不能太小,否则Q2的反馈控制会失效。因为Q2是通过分流Q1的基极电流来实现反馈的,如果Rb太小,基极电流太大,Q2需要分流很多才能控制住,可能导致Q2饱和,反馈环路崩溃。经验值是让Q2的工作电流在Q1基极电流的2到5倍之间。
2.3 供电电压范围与负载阻抗的约束条件
这个电路有一个最低工作电压的限制。Q1的集电极到发射极需要一定的压降才能工作在放大区,一般至少0.3V。采样电阻上要有0.65V压降。Q2的集电极到发射极也需要压降,至少0.2V。所以最低供电电压大约是:
Vcc_min = Vload + Vce(Q1) + Vbe(Q2) + Vce(Q2) ≈ Vload + 1.2V
如果负载是一个LED,正向压降2V,那么供电至少3.2V。如果负载是传感器桥路,压降可能只有0.5V,那供电1.7V就够了。这个特性让双NPN方案在低压场景下很有优势。
最高供电电压主要受Q1的功耗限制。Q1的功耗等于(Vcc - Vload - Vbe)乘以Iout。比如供电12V,负载压降2V,电流20mA,Q1功耗就是(12-2-0.65)×0.02 = 187mW。9013的额定功耗是625mW(加散热片可以更高),所以没问题。但如果供电到24V,功耗就接近400mW了,需要选功率更大的三极管,比如2N2222或者加散热措施。
负载阻抗的范围也要考虑。负载阻抗太大,Q1可能进入饱和区,失去恒流能力。负载阻抗太小,Q1功耗增大。一般来说,负载阻抗在几十欧姆到几千欧姆之间比较合适。
3. 从原理图到面包板的实操记录
3.1 器件选型:9013、2N3904还是BC547
三极管的选择主要看三个参数:电流放大倍数β、集电极最大电流Ic、功耗Ptot。对于输出电流在50mA以内的场景,9013、2N3904、BC547都可以用。9013的β在100到300之间,Ic最大500mA,Ptot 625mW,性价比很高。2N3904的β在100到300之间,Ic最大200mA,Ptot 625mW,噪声更低。BC547的β在110到800之间,Ic最大100mA,Ptot 500mW,适合小电流高增益场景。
我实测下来,9013的一致性最好,同一批次β值差异在20%以内。2N3904的β值偏高,有时候会导致反馈过深,需要调整电阻。BC547的β值分散度大,不太适合对一致性要求高的批量生产。
Q1和Q2最好选同一型号、同一批次的管子,这样Vbe和β的温度特性比较接近,能部分抵消温漂。如果Q1用9013,Q2用2N3904,温漂会明显增大。
3.2 采样电阻的功率与精度选择
采样电阻的功率计算很简单:P = Iout² × Rsense。10mA电流、65欧姆电阻,功耗是6.5毫瓦,用0603封装的电阻(额定100mW)绰绰有余。但如果是100mA电流、6.5欧姆电阻,功耗就是65毫瓦,0603就有点勉强了,建议用0805或者1206封装。
精度方面,采样电阻的误差直接转化为电流误差。1%精度的电阻,电流精度就是1%。5%精度的电阻,电流精度就是5%。我一般用1%精度的金属膜电阻,温度系数50ppm/°C,在-20到80度范围内,阻值变化不超过0.5%,对电流精度的影响可以接受。
注意:不要用碳膜电阻做采样电阻,碳膜电阻的温度系数高达200-500ppm/°C,温漂会非常明显。金属膜电阻是必须的。
3.3 面包板搭建的步骤与初次上电检查
面包板搭建的顺序很重要,我一般按这个流程走:
先插好Q1和Q2,注意引脚顺序。9013的引脚排列是:面对印字面,从左到右依次是发射极、基极、集电极。2N3904是发射极、基极、集电极。BC547是集电极、基极、发射极。不同型号引脚顺序不同,插之前一定要查手册。
连接采样电阻。一端接Q1发射极,一端接地。Q2的基极接到Q1发射极和采样电阻的连接点。
连接Q2的集电极到Q1的基极。这是反馈路径的关键连接,不要接错。
连接Q1的基极偏置电阻到供电正极。
负载先不要接,用一个固定电阻代替,比如100欧姆。
上电前用万用表检查一遍:供电正极和地之间不能短路,Q1和Q2的引脚不能插反。
上电后先测供电电压,正常后再测采样电阻上的压降。如果压降在0.6到0.7V之间,说明电路基本工作。如果压降接近0V,说明Q1没有导通,检查基极偏置。如果压降接近供电电压,说明Q1饱和了,检查负载是否太小或者Q2是否接反。
我第一次搭这个电路的时候,Q2的集电极和发射极接反了,结果采样电阻上的压降只有0.1V,Q1完全导通,电流失控。后来查了手册才发现9013的引脚顺序和我以为的不一样。这个坑大家一定要避开。
4. 实测数据暴露出来的温漂与精度问题
4.1 常温下的电流精度实测
我用10mA设定值做了一组测试,采样电阻用65欧姆1%精度金属膜电阻,供电5V,负载用100欧姆、200欧姆、470欧姆、1k欧姆四种阻值分别测试。数据如下:
| 负载阻值 | 理论电流 | 实测电流 | 误差 |
|---|---|---|---|
| 100Ω | 10mA | 10.2mA | +2.0% |
| 200Ω | 10mA | 10.1mA | +1.0% |
| 470Ω | 10mA | 9.9mA | -1.0% |
| 1kΩ | 10mA | 9.7mA | -3.0% |
可以看到,负载阻值越大,电流略微下降。这是因为负载阻值增大后,Q1的集电极-发射极压降减小,Q1的β值下降,基极电流需求增大,Q2需要分流更多电流来维持反馈,导致Q2的工作点偏移,Vbe略微变化。这个误差在3%以内,对于大多数应用是可以接受的。
如果要改善负载调整率,可以在Q1的发射极和采样电阻之间串联一个小电阻,或者选用β值更高的三极管。但这样会增加成本和复杂度,需要权衡。
4.2 温度变化对输出电流的影响
温漂是这个电路最大的短板。我把电路放进恒温箱,从-10度升到60度,每隔10度记录一次电流值。设定值是10mA,采样电阻65欧姆。
| 温度 | 实测电流 | 相对25度偏差 |
|---|---|---|
| -10°C | 11.3mA | +13.0% |
| 0°C | 10.9mA | +9.0% |
| 25°C | 10.0mA | 基准 |
| 40°C | 9.4mA | -6.0% |
| 60°C | 8.6mA | -14.0% |
从-10度到60度,电流变化了27%,这个温漂相当大。原因就是Q2的Vbe有-2mV/°C的温度系数,温度升高,Vbe降低,采样电阻上的压降目标值降低,电流就减小了。
这个温漂在很多场景下是不能接受的。比如户外设备、汽车电子、工业控制,温度范围可能从-40到85度,电流变化可能超过40%。所以必须做温度补偿。
4.3 用二极管补偿Vbe温漂的尝试
补偿的思路很简单:既然Q2的Vbe随温度降低,那我用一个同样随温度降低的电压源来抵消它。最常用的方法是在Q2的基极回路里串联一个二极管,让二极管的正向压降和Q2的Vbe一起变化。
具体做法是:在Q2的基极和采样电阻之间串联一个硅二极管,方向是阳极接采样电阻,阴极接Q2基极。这样Q2的基极电压等于采样电阻压降减去二极管压降。而二极管压降和Q2的Vbe有相似的温度系数,两者相减,温度影响就抵消了大部分。
我试了这个方案,温漂从27%降到了8%左右。具体数据:
| 温度 | 补偿前电流 | 补偿后电流 |
|---|---|---|
| -10°C | 11.3mA | 10.5mA |
| 25°C | 10.0mA | 10.0mA |
| 60°C | 8.6mA | 9.4mA |
补偿效果明显,但还没有完全消除。原因是二极管的温度系数和Q2的Vbe温度系数不完全一致,而且二极管的压降本身也有离散性。如果要进一步改善,可以用匹配的三极管接成二极管形式(基极和集电极短接),这样温度系数更接近。
提示:补偿二极管要和Q2放在同一个热环境中,最好用导热胶粘在一起,或者封装在同一个热缩管里,确保温度一致。如果两者温度不同,补偿效果会大打折扣。
5. 性能优化的几个关键方向
5.1 提高电流精度的电阻匹配技巧
除了采样电阻的精度,Q1基极偏置电阻的精度也会影响电流。Rb的误差会导致Q1基极电流变化,进而影响Q2的工作点。我建议Rb也用1%精度的电阻,和采样电阻保持一致。
另外,Q1和Q2的β值匹配也很重要。如果Q1的β是100,Q2的β是200,反馈环路的增益会不对称,导致电流偏差。最好的做法是从同一批次里挑选β值接近的管子,偏差控制在10%以内。
如果批量生产,可以考虑用双三极管封装,比如BC847BDW1,两颗管子在同一晶圆上,β值和Vbe匹配度非常高,温漂也能同步。价格比两颗独立管子贵一点,但省去了筛选成本,总体算下来可能更划算。
5.2 降低功耗与提升效率的取舍
这个电路的效率问题主要出在Q1和采样电阻上的压降。Q1的集电极-发射极压降至少0.3V,采样电阻压降0.65V,加起来接近1V的额外损耗。如果供电是3.3V,负载是2V的LED,效率只有2/3.3=60%左右。
要提升效率,可以降低采样电阻上的压降。方法是用一个较小的采样电阻,然后在Q2的基极串联一个分压电阻网络,把采样电压放大后再送到Q2。但这样会增加器件数量,而且分压电阻的温漂会引入新的误差。
另一个思路是用PNP三极管替代Q1,构成电流镜结构,但那样就偏离了双NPN的主题。实际项目中,如果效率是首要指标,建议直接上开关恒流源,线性恒流源的效率天然受限。
5.3 负载调整率与线性调整率的实测对比
负载调整率是指负载阻抗变化时电流的变化率,线性调整率是指供电电压变化时电流的变化率。这两个指标是衡量恒流源性能的核心。
我实测的数据:负载从100欧姆变到1k欧姆,电流变化3%;供电从4.5V变到6V,电流变化1.5%。这个表现对于低成本方案来说算是不错了。
如果要改善线性调整率,可以在Q1的基极偏置电阻上并联一个稳压二极管,让基极电流不受供电电压波动影响。但稳压二极管本身也有温漂,需要选温度系数低的型号,比如LM4040之类的基准源,但那样成本就上去了。
实际项目中,我一般会根据供电的稳定性来决定是否需要额外措施。如果供电是经过LDO稳压的,波动在1%以内,那线性调整率就不是问题。如果供电是电池直接供电,电压从4.2V降到3.0V,那就需要认真对待了。
6. 那些年我踩过的坑和验证过的经验
6.1 三极管引脚接反导致的电流失控
前面提过,我第一次搭电路时把Q2的集电极和发射极接反了。9013的引脚顺序是E-B-C,我以为是B-C-E,结果Q2的发射极接到了Q1的基极,集电极接到了采样电阻。这样Q2的发射结反偏,完全无法导通,反馈环路断开,Q1基极电流不受控制,输出电流直接飙到几百毫安,差点烧了负载。
排查过程是这样的:先测采样电阻压降,发现只有0.1V,远低于预期的0.65V。然后测Q1基极电压,发现接近供电电压,说明Q1深度导通。再测Q2各引脚电压,发现基极电压0.65V,但集电极电压也是0.65V,发射极电压0V,说明Q2的集电结和发射结都正偏,管子处于饱和状态,没有放大能力。最后查手册确认引脚顺序,才发现接反了。
这个教训告诉我,每次用不熟悉的三极管之前,必须查手册确认引脚排列。不要凭经验猜,不同型号的引脚顺序可能完全不同。
6.2 采样电阻取值过小引发的振荡
有一次我想降低采样电阻上的压降以提高效率,把Rsense从65欧姆改成了10欧姆,目标电流还是10mA。结果电路出现了振荡,用示波器看采样电阻上的波形,有大约100kHz的正弦振荡,幅度200mV。
原因是采样电阻太小,反馈环路的增益过高,相位裕度不足,导致自激振荡。解决方法是增大采样电阻,或者在Q2的基极串联一个RC低通滤波器,把高频增益降下来。我最后在Q2基极串联了1k欧姆电阻和100nF电容到地,振荡就消失了。
这个经验说明,采样电阻不能随意减小,它不仅是电流设定元件,也是反馈环路的补偿元件。一般来说,采样电阻上的压降不要低于0.3V,否则环路稳定性会变差。
6.3 负载为感性时续流二极管的必要性
如果负载是继电器线圈、电机或者变压器,关断时会产生反向电动势,可能击穿Q1。我一开始没注意这个问题,驱动一个继电器时,Q1的集电极-发射极之间出现了上百伏的尖峰,虽然9013的Vceo是20V,但瞬间击穿后管子就损坏了。
解决方法是在负载两端反向并联一个续流二极管,比如1N4148或者1N4007。当负载电流关断时,反向电动势通过二极管泄放,Q1的集电极电压被钳位在供电电压加0.7V,安全多了。
注意:续流二极管的方向不能接反,阳极接Q1集电极,阴极接供电正极。接反了会导致供电直接短路。
6.4 批量生产时的器件一致性筛选方法
小批量做样机的时候,每颗管子都测一下β值和Vbe,挑匹配的用,没问题。但批量生产时,几百上千套,不可能每颗都测。我的做法是:先抽测一批管子,统计β值的分布范围,然后设定一个筛选窗口,比如β在120到180之间,Vbe在0.62到0.68V之间。让供应商按这个窗口供货,或者自己用分选机筛。
如果量很大,直接定制双三极管封装是最省事的。虽然单价贵一点,但省去了筛选和匹配的人工成本,总体成本可能更低。而且双三极管的温漂匹配度更好,性能也更稳定。
7. 这个电路还能怎么玩
7.1 改成可调恒流源的实现思路
固定恒流源改成可调,最简单的办法是把采样电阻换成电位器。但电位器的精度和温漂都很差,只适合对精度要求不高的场景。更好的做法是用一个固定电阻串联一个小的电位器,固定电阻决定电流的基本值,电位器做微调。比如65欧姆固定电阻串联一个10欧姆电位器,电流可以在8.7mA到10mA之间调节。
如果要数字控制,可以用数字电位器,比如MCP41系列,通过SPI接口调节阻值。但数字电位器的耐压和电流能力有限,需要确认采样电阻上的电压和电流不超过它的额定值。
7.2 扩流到安培级的并联方案
单颗9013最大输出500mA,如果要输出1A以上,需要并联多颗三极管。并联时要注意均流问题,每颗三极管的发射极都要串联一个小电阻,比如0.1欧姆,用来平衡电流。基极可以共用,集电极也共用。
但并联会带来新的问题:β值的离散性导致均流效果不理想,而且采样电阻上的功耗会增大。1A电流、0.65V压降,采样电阻功耗就是0.65W,需要选功率电阻。这个方案适合对成本极度敏感、对精度要求不高的场景,比如LED灯带驱动。
7.3 和恒压源组合成恒压恒流充电电路
锂电池充电需要先恒流后恒压,这个双NPN恒流源可以和恒压源组合,构成完整的充电电路。恒流阶段由这个电路控制,当电池电压升到设定值后,恒压源接管,恒流源退出。切换逻辑可以用一个比较器加MOS开关实现。
这个组合方案在低成本充电器里很常见,比如一些电动工具的充电器、小容量锂电池的充电模块。核心思路就是利用恒流源的输出特性,当负载电压升高到接近设定值时,恒流源自然进入饱和状态,电流下降,恒压源开始工作。但切换点的精度和稳定性需要仔细调试,否则可能出现充电电流反复跳变的问题。
我在实际使用中发现,这个电路最值得投入精力优化的地方是采样电阻和Q2的匹配。采样电阻用1%精度的金属膜电阻,Q2和Q1从同一批次里挑选Vbe接近的管子,这两步做好,电流精度基本能控制在3%以内,温漂也能控制在10%以内。如果对温漂要求更高,就加上补偿二极管,并且把Q2和补偿二极管用导热胶粘在一起。剩下的就是根据具体应用场景,在成本、精度、功耗之间做取舍了。