☰
LM317+运放+MOSFET可调恒流源设计:从原理到实战
2026/10/6 10:48:47 网站建设 项目流程

恒流源这个东西,很多刚入行的朋友第一反应就是"三极管加两个电阻",搭出来一测,电流随温度飘得厉害,负载一变电流就跟着变。我早年做LED驱动和传感器激励源的时候,在这上面栽过不少跟头。后来慢慢摸清楚一个道理:想要一个真正稳得住的可调恒流源,靠单个三极管是撑不住的,得把基准、比较、调整这三件事拆开,分别交给合适的器件去做。LM317负责提供稳定的基准电压,运放负责高增益的比较和反馈,MOSFET负责扛电流和散热,这套组合下来,几十毫安到几安培的恒流输出都能做得相当扎实。

这篇内容我打算把"LM317加运放搭可调恒流源"这件事从头到尾讲透。不管你是刚学模电的学生,还是工作中需要给LED、激光管、电化学传感器做恒流供电的工程师,都能从里面找到能直接抄作业的东西。我会把电路图、参数计算、选型逻辑、实测踩坑全部摊开讲,尤其是那些教科书上不会写、但一上手就会遇到的问题,比如运放自激、MOSFET发热、采样电阻怎么选、地线怎么走。看完你至少能做到两件事:一是明白每个元件为什么在那儿,二是自己动手搭一个能用的可调恒流源。

1. 为什么单靠三极管做恒流源总是不靠谱

1.1 三极管恒流源的先天缺陷

先说说为什么很多人一开始会用三极管。最经典的三极管恒流源就是两个三极管加一个采样电阻,利用Vbe的稳定性来做电流镜或者电流源。这个电路在实验室里做演示没问题,但真要用到产品上,问题就来了。

三极管的Vbe有大约**-2mV/℃**的温度系数,这意味着温度每升高10℃,Vbe就下降20mV。如果你的采样电阻上只建立了几百毫伏的压降,那这20mV的漂移直接就让电流变化好几个百分点。我实测过一个最基础的两管恒流源,室温25℃调到100mA,用热风枪吹到60℃,电流直接掉到85mA左右,飘了15%。这种精度拿去做LED驱动,亮度肉眼可见地变化;拿去做传感器激励,测量结果根本没法信。

除了温漂,三极管还有基极电流的问题。三极管的集电极电流和发射极电流之间差着一个基极电流,而基极电流又随温度和β值变化。β值本身离散性就大,同一型号不同批次能差一倍。你按β=100算的电阻,换一批管子β=200,电流就偏了。这就是为什么三极管恒流源"换个管子就得重新调"。

1.2 把"基准"和"调整"分开的思路

真正靠谱的做法,是把恒流源拆成三个独立的功能块:电压基准、误差比较、电流调整。基准负责提供一个不随温度和时间变化的参考电压,比较环节负责把采样电阻上的电压和基准做差并放大,调整环节负责根据误差信号改变输出电流。这三块各司其职,每一块都可以用最合适的器件来做。

LM317在这里的角色就是电压基准。它内部有一个1.25V的带隙基准,温漂很小,而且它本身是个线性稳压器,输出能力强、噪声低。运放的角色是误差放大器,它的开环增益能做到10万倍以上,意味着采样电阻上哪怕只有几十微伏的偏差,运放也能把它放大到足以驱动MOSFET的程度。MOSFET的角色是功率调整管,它由电压驱动,不像三极管需要基极电流,而且导通电阻可以做得很小,大电流下发热可控。

提示:这套架构的核心思想是"负反馈"。采样电阻把电流转换成电压,运放把这个电压和基准比较,差值经过放大后去控制MOSFET的栅极,MOSFET再调整流过负载的电流。整个环路是负反馈,所以能自动稳定。

1.3 这套方案能覆盖哪些应用场景

搭好之后,这个可调恒流源的适用范围其实很广。LED恒流驱动是最常见的,尤其是大功率LED,必须恒流否则会热失控烧掉。激光二极管驱动对电流精度要求更高,通常要求优于1%。电化学传感器比如pH电极、溶解氧电极,需要微安级的稳定激励电流。电池充放电测试里也常用恒流源做恒流放电。热电制冷片的驱动同样需要恒流,因为它的制冷量和电流直接相关。

不同场景对电流范围、精度、带宽的要求不一样,但底层架构是通用的。你只要把采样电阻、MOSFET、运放这几个关键器件按需求换掉,就能覆盖从几毫安到几安培的宽范围。这也是我愿意花时间把这套东西讲透的原因——它是个"一次学会、到处能用"的基础模块。

2. 电路架构拆解:LM317、运放、MOSFET各自干什么活

2.1 整体框图与信号流向

先把整个电路的骨架说清楚。电路分三部分:左边是LM317构成的基准电压源,中间是运放构成的误差放大器,右边是MOSFET和采样电阻构成的电流调整级。负载接在电源正极和MOSFET漏极之间,采样电阻接在MOSFET源极和地之间。

信号流向是这样的:负载电流从电源正极出发,经过负载、经过MOSFET的漏源、经过采样电阻,最后回到地。采样电阻上的压降等于电流乘以阻值,这个电压被送到运放的一个输入端。运放的另一个输入端接LM317产生的基准电压。运放比较这两个电压,差值放大后驱动MOSFET的栅极。如果电流偏大,采样电压升高,运放输出降低,MOSFET栅压降低,电流回落;反之亦然。这就是负反馈的调节过程。

这里有个关键点:采样电阻必须放在MOSFET源极和地之间,也就是所谓的"低边采样"。这样采样电压是以地为参考的,运放可以直接处理,不需要额外的差分电路。如果放在高边,采样电压浮在电源电压附近,运放就得用高共模电压的差分放大器,成本和复杂度都上去了。

2.2 LM317做基准的两种接法

LM317做基准有两种常见接法。第一种是标准稳压接法:LM317的输出端和调整端之间接一个电阻R1,调整端对地接一个电阻R2,输出电压等于1.25V乘以(1+R2/R1)。这样可以得到任意高于1.25V的基准电压。第二种是恒流接法:LM317的输出端和调整端之间接一个电阻R,调整端接负载,这样流过负载的电流恒定为1.25V/R。

在这个恒流源电路里,我推荐用第一种接法,把LM317当成一个可调的电压基准来用。因为我们需要的是一个稳定的参考电压送给运放,而不是让LM317直接去驱动负载。LM317的输出电压可以设成比如2.5V或者5V,具体取决于你想要的采样电压范围。

为什么不用LM317的恒流接法直接做恒流源呢?因为LM317的恒流精度受它自身调整端电流的影响,而且它的带宽有限,动态响应慢。对于要求不高的场合,LM317恒流接法确实简单够用,但要做精密可调、快速响应的恒流源,还是得靠运放加MOSFET。

2.3 运放选型:不是随便一个运放都能用

运放的选择直接决定恒流源的精度和稳定性。这里有几个参数必须关注。

**输入失调电压(Vos)**是最关键的。运放的失调电压会直接叠加到采样电压上,造成电流误差。比如采样电阻是1Ω,你想要1A电流,采样电压是1V。如果运放失调电压是5mV,那电流误差就是5mA,相对误差0.5%。如果失调是50μV的精密运放,误差就只有0.005%。所以做精密恒流源,必须选低失调运放,比如OPA333、OPA2188这类。

**增益带宽积(GBW)**决定了环路的响应速度。GBW太低,环路带宽就窄,负载突变时恢复慢,甚至可能不稳定。一般建议GBW至少在1MHz以上,做快速响应的场合要10MHz以上。

共模输入范围要包含地电位。因为采样电压可能很低,接近0V,运放的输入级必须能处理到负电源轨附近。轨到轨输入输出的运放比较保险。

**压摆率(SR)**影响大信号响应。如果负载电流需要快速变化,SR不够会导致输出跟不上,产生过冲或者延迟。

下面这个表格对比几种常用运放在恒流源里的适用性:

运放型号失调电压GBW压摆率适用场景
LM3582mV1MHz0.3V/μs低成本、精度要求不高的场合
NE55320.5mV10MHz9V/μs音频、中等精度恒流
OPA218825μV2MHz0.8V/μs精密恒流、传感器激励
OPA33310μV350kHz0.16V/μs微功耗、低速精密场合
TL0723mV3MHz13V/μs通用、JFET输入

我个人的经验是,做LED驱动用LM358或者NE5532就够了,做传感器激励一定要上OPA2188这个级别。别在运放上省钱,失调电压带来的误差是后面怎么调都补不回来的。

2.4 MOSFET还是三极管做调整管

调整管的选择上,MOSFET比三极管有明显优势。三极管是电流驱动,基极需要持续的驱动电流,这个电流本身就会带来误差,而且驱动电路的功耗也不小。MOSFET是电压驱动,栅极电流几乎为零,不会引入额外误差。

MOSFET的另一个优势是**导通电阻Rds(on)**可以做得很低。比如IRF540的Rds(on)只有44mΩ,通过5A电流时压降只有0.22V,功耗1.1W。如果用三极管,饱和压降至少0.3V起步,大电流下功耗更大。

选MOSFET要注意几点:Vds耐压要高于电源电压并留余量,一般取1.5倍以上。**Rds(on)**要小,减少发热。**栅极阈值电压Vgs(th)**要低,确保运放输出的电压范围能把它完全打开。栅极电荷Qg要小,否则运放驱动能力不够时开关速度慢。热阻要关注,决定散热片怎么选。

常用的MOSFET里,IRF540、IRFZ44N适合几安培的场合,AO3400适合小电流,IRFP250适合大电流。如果电源电压低,比如5V,要选逻辑电平MOSFET,比如IRLZ44N,它的Vgs(th)只有2V左右,3.3V或5V就能驱动。

3. 手把手搭电路:从原理图到实际焊接

3.1 完整原理图与元件清单

先把完整电路画出来。电源正极接负载的一端,负载另一端接MOSFET的漏极。MOSFET的源极接采样电阻Rs的一端,Rs的另一端接地。运放的同相输入端接LM317输出的基准电压,反相输入端接MOSFET源极(也就是采样电阻上端)。运放输出接MOSFET栅极。LM317的输入接电源正极,输出经过分压电阻R1、R2得到基准电压,调整端接R1和R2的连接点。

元件清单大致如下:LM317一个,运放一个(比如OPA2188),MOSFET一个(比如IRF540),采样电阻一个(根据电流范围选),基准分压电阻两个,运放供电去耦电容两个,栅极串联电阻一个,电源滤波电容若干。

采样电阻的选择很关键。假设你想要的最大电流是1A,采样电压设为1V,那Rs就是1Ω。但1Ω电阻通过1A电流会消耗1W功率,得选至少2W的功率电阻。如果最大电流是100mA,Rs可以选10Ω,功耗只有0.1W,用普通1/4W电阻就行。采样电阻的精度直接影响电流精度,建议用1%或更高精度的金属膜电阻,有条件用康铜丝或者四端子电阻更好。

3.2 基准电压和采样电阻的计算

基准电压和采样电阻是配套设计的。设你想要的满量程电流为Imax,采样电阻为Rs,那满量程时采样电压就是Imax乘以Rs。这个电压就是运放同相端需要的基准电压Vref。

举个例子,Imax=500mA,选Rs=2Ω,那Vref=1V。LM317的输出电压要设成1V,但LM317的最低输出是1.25V,所以不能直接输出1V。这时候有两个办法:一是用电阻分压把1.25V分到1V,二是把Rs改成2.5Ω让Vref=1.25V。我一般推荐第二种,直接用LM317的1.25V基准,省掉分压电阻带来的误差。

如果Imax=2A,选Rs=0.5Ω,Vref=1V,同样可以用1.25V基准配0.625Ω采样电阻。但0.625Ω不是标准值,可以用两个1.25Ω并联得到0.625Ω。或者干脆用1.25V基准配0.625Ω,实际电流就是2A。

这里有个权衡:采样电阻越大,采样电压越高,抗噪声能力越强,但功耗也越大。采样电阻越小,功耗小,但采样电压低,对运放失调电压更敏感。一般建议采样电压在0.5V到2V之间,兼顾功耗和精度。

3.3 焊接布局与地线处理

电路搭起来之后,布局和地线处理往往比原理图更影响性能。我见过太多人原理图画得没问题,一上电就自激振荡,问题全出在布局上。

采样电阻的地线必须单独走,直接连到电源的滤波电容地端,不要和运放的地、LM317的地混在一起走。这叫"开尔文连接"或者"星形接地"。采样电阻上的电压很小,如果地线上有别的电流流过,产生的压降会叠加到采样电压上,造成误差。

运放的供电去耦电容要靠近运放电源引脚,一般用0.1μF陶瓷电容并联10μF电解电容。去耦电容的作用是给运放提供本地的高频电流回路,避免电源线上的噪声影响运放。

MOSFET的栅极要串一个电阻,一般10Ω到100Ω,作用是抑制栅极振荡。MOSFET的栅极电容和驱动线路的电感容易形成LC振荡,串电阻可以阻尼掉。这个电阻不能太大,否则开关速度变慢。

大电流路径要短而粗。负载电流流过的路径,包括电源到负载、负载到MOSFET、MOSFET到采样电阻、采样电阻到地,这些走线要尽量短、尽量宽,减少寄生电阻和电感。

注意:如果你用面包板搭这个电路,大概率会振荡或者精度很差。面包板的接触电阻和寄生电容都很大,做恒流源一定要用洞洞板或者PCB焊接。我早期用面包板搭,电流怎么调都不对,换成洞洞板立马就好了。

3.4 上电调试的步骤

第一次上电不要直接接负载,按下面的步骤来。

第一步,不接负载,不接MOSFET,先测LM317的输出电压。用万用表量LM317输出端对地电压,应该是你设计的基准电压。如果不对,检查R1、R2的阻值。

第二步,接上运放,给运放供电,测运放输出。此时MOSFET还没接,运放的同相端是基准电压,反相端通过采样电阻接地(0V),所以运放输出应该饱和到正电源轨附近。如果运放输出是负电源轨或者中间值,说明运放接反了或者坏了。

第三步,接上MOSFET和采样电阻,但不接负载,用万用表电流档串在负载位置。慢慢调基准电压(或者调采样电阻),看电流是否跟着变。如果电流不可控,检查MOSFET的引脚有没有接错,运放的同相反相有没有接反。

第四步,接上实际负载,观察电流是否稳定。用手摸MOSFET和采样电阻,看发热是否正常。如果MOSFET很烫,检查Rds(on)和散热。

4. 实测中一定会遇到的几个坑

4.1 运放自激振荡:现象、原因和解决

自激振荡是这套电路最常见的坑。现象是:电流表读数抖动,示波器看MOSFET栅极有高频正弦波,频率从几百kHz到几MHz不等。严重的时候MOSFET会发热甚至烧掉。

振荡的根源是环路相位裕度不够。运放本身有相位延迟,MOSFET的栅极电容又引入一个极点,采样电阻和线路电感引入另一个极点,几个极点叠加,在某个频率上总相移达到180度,负反馈就变成了正反馈。

解决办法有几个。第一,在运放输出和反相输入之间加一个补偿电容,一般几十皮法到几百皮法,给环路引入一个零点,提升相位裕度。第二,在MOSFET栅极串电阻,减小栅极电容的影响。第三,降低运放的带宽,选GBW低一点的运放,或者直接在运放输出加RC低通。

我实测下来,最有效的组合是:栅极串100Ω电阻,运放输出到反相输入加100pF电容,采样电阻两端并联一个0.1μF电容滤高频。这三个措施加上去,基本就不会振荡了。

4.2 MOSFET发热与散热计算

MOSFET发热主要来自导通损耗和开关损耗。恒流源里MOSFET工作在线性区,不是开关状态,所以主要是导通损耗,等于电流平方乘以Rds(on)。但要注意,MOSFET工作在线性区时,Rds(on)不是数据手册里那个值,而是随Vgs变化的。如果Vgs不够大,MOSFET工作在线性区,压降大,发热就严重。

比如IRF540,Vgs=10V时Rds(on)=44mΩ,但Vgs=4V时可能就到几百毫欧了。所以运放输出的栅极电压一定要足够高,确保MOSFET完全导通。如果运放供电是5V,IRF540可能打不开,得换逻辑电平MOSFET。

散热计算:假设电流2A,Rds(on)=0.1Ω,功耗就是0.4W。TO-220封装的热阻大约62℃/W,不加散热片温升就是25℃,加上环境温度25℃,结温50℃,还能接受。但如果电流5A,功耗2.5W,温升155℃,结温180℃,直接烧了。这时候必须加散热片,散热片热阻要小于(150-25)/2.5=50℃/W,选个小铝片就够了。

4.3 采样电阻的功率与温漂

采样电阻的功率前面提过,这里重点说温漂。普通金属膜电阻的温漂是50ppm/℃到100ppm/℃,意味着温度变化50℃,阻值变化0.25%到0.5%。对于1%精度的恒流源,这个温漂已经不可忽略了。

解决办法是选低温漂电阻,比如25ppm/℃的精密电阻,或者用康铜丝、锰铜丝自己绕。康铜的温漂只有20ppm/℃左右,而且功率大。我做过一个5A的恒流源,采样电阻用0.1Ω的康铜丝,温漂带来的误差在0.1%以内。

另外,采样电阻的寄生电感也要注意。绕线电阻有电感,高频下阻抗会变。如果恒流源需要快速响应,采样电阻要用无感绕法或者贴片电阻。贴片电阻的寄生电感小,但功率有限,大电流场合还是得用康铜丝。

4.4 负载变化时的动态响应

恒流源的动态响应是指负载突变时电流恢复稳定的速度。比如LED驱动里,如果负载断开再接通,电流会有过冲。过冲太大可能烧LED。

动态响应取决于环路带宽。带宽越宽,响应越快,但稳定性越难保证。这是个权衡。一般恒流源的环路带宽在10kHz到100kHz之间,对应的恢复时间在几十微秒到几百微秒。

改善动态响应的办法:提高运放GBW,减小栅极电阻,减小采样电阻的寄生电感。但要注意,带宽提高后相位裕度会下降,容易振荡。所以调动态响应的时候,一定要同时看阶跃响应和稳定性,用示波器观察负载突变时的电流波形,调到既快又稳。

5. 从能用到好用:进阶优化与扩展

5.1 用DAC实现程控恒流

手动调电位器太麻烦,用DAC加单片机就能做程控恒流源。DAC的输出代替LM317的基准电压,送到运放同相端。单片机通过SPI或者I2C控制DAC输出,就能设定任意电流值。

DAC的选型要注意分辨率和精度。12位DAC在5V满量程下分辨率是1.22mV,对应采样电阻1Ω时电流分辨率1.22mA。如果要做微安级,得用16位甚至更高。DAC的积分非线性(INL)和微分非线性(DNL)也要关注,直接影响设定精度。

用DAC的时候,DAC的输出阻抗和运放的输入阻抗要匹配。有些DAC输出需要加缓冲运放,否则带载能力不够。另外DAC的参考电压要稳定,最好用专门的基准芯片,比如REF5025,温漂只有3ppm/℃。

5.2 加入电流检测和显示

做产品的话,通常需要显示当前电流。可以在采样电阻上并联一个高输入阻抗的运放做缓冲,然后送ADC或者万用表芯片。也可以直接用带电流显示的电源模块。

如果要自己做显示,用STM32或者Arduino的ADC读采样电压,换算成电流显示在OLED上。ADC的参考电压同样要稳,可以用内部基准或者外部基准。采样的时候要注意ADC的输入范围,加个分压或者运放缓冲。

5.3 多路恒流源的并联与均流

有时候需要更大的电流,单个MOSFET扛不住,就得多路并联。但MOSFET并联有个问题:Rds(on)有正温度系数,温度高的管子电流会减小,自动均流。但如果是三极管并联,Vbe有负温度系数,温度高的管子电流更大,会热失控。所以并联一定要用MOSFET,不要用三极管。

并联的时候,每个MOSFET的源极都要单独接采样电阻,然后所有采样电阻的上端连在一起接运放反相端。这样每个MOSFET的电流都被独立采样,运放统一调节。如果共用采样电阻,电流分配就不均了。

5.4 保护电路:过流、过温、反接

实际产品里保护电路不能省。过流保护可以在采样电阻上取电压,超过阈值就关断MOSFET。过温保护用NTC热敏电阻贴在MOSFET散热片上,温度过高就降电流或者关断。反接保护在电源输入端串一个二极管或者用PMOS做理想二极管。

保护电路的设计原则是"失效安全",也就是保护电路本身出故障时,主电路要能安全关断。比如过流保护的比较器,如果比较器坏了输出高电平,MOSFET应该关断而不是导通。这需要在电路设计时考虑逻辑极性。

6. 几个常见问题的快问快答

6.1 为什么我的恒流源电流调不到零

电流调不到零通常是运放的失调电压或者输入共模范围的问题。运放反相端接采样电阻,当电流接近零时,采样电压接近0V。如果运放的输入级不能处理到0V,输出就会出错。解决办法是选轨到轨输入的运放,或者给运放加一个小的负电源,让输入范围覆盖到0V以下。

另一个原因是MOSFET的漏电流。MOSFET关断时不是完全绝缘的,有微安级的漏电流。如果负载阻抗高,这点漏电流就会产生电压。要完全关断,可以在负载两端加一个开关或者继电器。

6.2 LM317发热严重怎么办

LM317的功耗等于输入输出压差乘以输出电流。如果输入12V,输出1.25V,电流100mA,功耗就是(12-1.25)×0.1=1.075W。TO-220封装的LM317热阻大约50℃/W,温升54℃,加上环境温度25℃,结温79℃,还能接受。但如果输入24V,功耗就翻倍,必须加散热片。

降低LM317功耗的办法是降低输入电压,或者用开关电源预稳压。如果系统里有5V电源,直接用5V给LM317供电,功耗就小多了。另外LM317的调整端电流很小,基准部分的分压电阻可以取大一点,减少额外功耗。

6.3 能不能用LM317直接做恒流源

能,但精度和动态响应都不如运放方案。LM317恒流接法的电流等于1.25V/R,精度取决于内部基准的精度和调整端电流。LM317的基准精度典型值是1%,调整端电流典型值50μA,这个电流流过采样电阻会带来误差。如果采样电阻是12.5Ω(对应100mA),50μA带来的误差是0.625mV,相对误差0.05%,还能接受。但如果采样电阻是1.25Ω(对应1A),误差就只有0.005%,更小。

所以LM317直接做恒流源,在小电流时精度还行,大电流时精度更好。但它的动态响应慢,负载突变时恢复时间长。如果负载是LED这种对动态响应要求不高的,LM317直接做也够用。但如果负载是激光管或者需要快速调制的,还是得用运放方案。

6.4 采样电阻能不能放在高端

能,但电路复杂。高边采样时,采样电阻在电源正极和负载之间,采样电压浮在电源电压附近。运放需要处理高共模电压,普通运放不行,得用高共模电压的电流检测放大器,比如INA138、INA168。这些芯片内部有精密电阻网络,能把高边采样电压转换成对地的电压输出。

高边采样的好处是负载的地和电源的地是同一个地,没有地线干扰问题。低边采样虽然简单,但采样电阻在地线上,负载的地和电源的地之间有个采样电阻的压降,如果负载对地有要求,可能会有问题。一般电池供电的设备用低边采样,市电供电的设备用高边采样。

6.5 怎么测恒流源的精度和稳定性

测精度用高精度万用表串在负载回路里,和设定值比较。测稳定性要记录长时间(比如1小时)的电流变化,看漂移。测动态响应用电子负载做阶跃变化,示波器看电流波形。

测试的时候要注意温度。恒流源的精度受温度影响很大,测的时候要记录环境温度。如果要做温度系数测试,把整个电路放进温箱,从0℃到50℃扫一遍,记录每个温度点的电流。这个数据比单点精度更有说服力。

我自己做恒流源测试的时候,习惯用六位半万用表加电子负载,先测静态精度,再测1小时漂移,最后测阶跃响应。这三个数据出来,这个恒流源能不能用就心里有数了。很多时候静态精度很好,但漂移大或者响应慢,实际用起来还是不行。所以测试一定要全面,不能只看一个指标。

最后分享一个我踩过的坑:有一次做LED恒流源,静态测试完美,精度0.1%,但装到灯具里之后,LED一亮就闪。查了半天发现是LED的散热片和恒流源的地线共用了,LED的开关噪声通过地线串到采样电阻上,导致振荡。后来把地线分开走,问题就解决了。所以地线处理这件事,怎么强调都不为过。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询