首页 / 资讯中心 / 文章详情

LM317变恒流源:一颗电阻实现精密电流输出的完整指南

LM317变恒流源:一颗电阻实现精密电流输出的完整指南 ★ FEATURED ARTICLE
一说到LM317十个玩过电源的人里有九个第一反应是“三端可调稳压器”也就是典型的电压源芯片。但我要先抛一个反直觉的结论这颗被当成电压源用了四十多年的老芯片只需要在OUT和ADJ之间跨一颗电阻就能变成一台性能相当不错的恒流源电流精度能做到百分之几以内最大到1A以上也不稀奇。这不是什么隐藏功能也不是玄学而是LM317骨子里的工作方式决定的。LM317内部始终在维持1.25V基准电压基于这个特性做电流源只需要“借”一个电阻而已。这篇文章我会把LM317从电压源改造成电流源的原理、标准接法、参数计算、仿真验证和实作中会踩的坑一次讲透。内容适合刚入门的电子爱好者也适合实验室里急需一个临时恒流源的工程师参考。1. 明明是颗电压源芯片为什么能输出恒定电流1.1 关键在稳定于OUT和ADJ之间的1.25V基准先把LM317的脾气摸清楚。它是一颗线性可调稳压器内部有一个精密的1.25V基准电压还有一个误差放大器。误差放大器时刻盯着OUT脚和ADJ脚之间的电压差目标就是把这个差值稳定在1.25V。这句话听起来简单但它的含义很特别LM317并不直接“规定”OUT脚对地是多少伏它只规定OUT脚比ADJ脚高1.25V。ADJ脚本身几乎不取电流典型只有50µA左右的调整端电流。所以在标准可调电源电路里把ADJ接到两个电阻的分压点上输出就是Vout 1.25 × (1 R2 / R1) Iadj × R2很多资料直接给公式不解释来源。这里需要记住的只有一件事LM317真正控制住的不是绝对电压而是一个“OUT对ADJ的差值”。为了好记我习惯把它想成电梯司机。LM317就像一位电梯司机他根本不关心乘客在哪一层他只保证自己永远比乘客高1.25层。如果乘客在5楼他就在6.25楼如果乘客在10楼他就在11.25楼。乘客楼层怎么变这个高度差雷打不动。1.2 把负载放进“1.25V闭环回路”里电流就稳住了前面说的“乘客”就是ADJ端所连的电位。那么能不能让“司机和乘客之间的高度差”变成一个固定电流当然可以——在OUT和ADJ之间焊一个电阻Rset。因为这两个脚之间的电压被死死稳定在1.25V所以流过Rset的电流必然是I 1.25V / Rset这个电流从OUT脚出来经过Rset到达ADJ节点。ADJ脚本身只抽走几十微安剩下绝大部分电流只能往ADJ节点外面走。这时候如果我们在ADJ节点和地之间接上负载电流就会全部流过负载。于是负载上的电流就等于1.25V除以Rset。关键点来了当负载阻抗变大时ADJ端电压会跟着升高OUT端电压也同步升高但Rset两端的电压始终是1.25V所以流过负载的电流纹丝不动。这就是恒流源的本质——电流固定电压随负载变。还有一个容易踩的误区必须说负载不能接在OUT脚和地之间。如果把负载挂在OUT对地那流过Rset的电流和流过负载的电流是两条路根本形不成恒流关系。正确接法是把负载串在ADJ脚到地这条回路里让“Rset电流”和“负载电流”走同一路径恒流才成立。2. 最小恒流电路一颗电阻的接法与三个计算实例2.1 引脚定义和标准接法先确认引脚LM317常见的TO-220封装丝印面对自己、引脚朝下时从左到右一般是ADJ、OUT、IN。但不同品牌和封装略有差异实作前最好拿万用表查一下数据手册别凭着印象直接焊。标准恒流源接法如下电源正极接LM317的IN脚电源负极接GNDOUT脚接设定电阻Rset的一端Rset的另一端接ADJ脚ADJ节点同时接负载正端负载负端接GND。电气回路是这样的输入电流从IN进去从OUT出来流过Rset到ADJ节点再流过负载回到地。这个链路里所有电流是串联关系所以只要Rset电流恒定负载电流就恒定。输入端建议加一个0.1µF到0.33µF的瓷片电容放在靠近IN脚的地方用于抑制长电源线带来的高频噪声。负载端不建议加太大的电容尤其是容性负载上电瞬间会有一个很大的充电电流冲击可能超过LM317的限流范围。2.2 三个典型恒流值计算实际使用中大家问得最多的就是“我想要XX毫安Rset该用多大”。这个计算非常简单Rset 1.25V / I但要注意E24标准阻值不一定有你算出来的值需要就近选择。先说最常用的100mA LED驱动场景。Rset 1.25 / 0.1 12.5Ω。标准电阻没有12.5Ω用12Ω时电流是1.25 / 12 ≈ 104mA偏差约4%用13Ω时电流约96mA。如果要求精确可以用两个24Ω并联得到12Ω或者用12Ω和0.5Ω串联但一般LED应用没必要纠结4%以内偏差。100mA时电阻功耗只有0.125W0.25W电阻足够但我建议直接上0.5W温度更低更稳。再算350mA大功率LED的场景。Rset 1.25 / 0.35 ≈ 3.57Ω取3.6Ω就是347mA基本满足要求。电阻功耗P 1.25 × 0.35 ≈ 0.44W用1W电阻比较稳妥余量超过两倍。最后看1A大电流场景。Rset 1.25 / 1 1.25Ω这个阻值在E24系列里没有。用1.2Ω则电流1.04A用1.3Ω则电流0.96A。想要精确到1A可以用两个2.5Ω精密电阻并联或者用1.2Ω固定电阻串一个0.05Ω的毫欧级电阻微调。这时候电阻功耗约1.25W绝对不能用0.5W电阻至少用3W到5W的铝壳电阻。我整理了一个常用对照表方便直接抄目标电流计算电阻Rset常用取值实际电流电阻功耗建议功率10mA125Ω120Ω10.4mA0.0125W0.25W20mA62.5Ω62Ω20.2mA0.025W0.25W100mA12.5Ω12Ω104mA0.125W0.5W350mA3.57Ω3.6Ω347mA0.44W1W500mA2.5Ω2.4Ω520mA0.625W2W1A1.25Ω1.2Ω1.04A1.25W3W到5W3. 精度、压差与散热决定恒流源能不能长期干活的三个指标3.1 设定电阻的精度、温漂和功率一个都不能少很多初学者把恒流源搭起来后发现电流值跟计算值差不少第一个怀疑对象往往是LM317其实大部分时候背锅的是那颗电阻。因为恒流公式I 1.25 / R里电阻的误差直接变成电流的误差。你用5%精度的碳膜电阻电流误差就是5%起步再加上温度变化误差会更大。所以做恒流源时Rset最好选金属膜电阻精度1%起步要求高就上0.1%。温漂同样关键普通碳膜电阻温漂可能在几百ppm/°C金属膜一般50ppm/°C以下对多数场景够用。大电流场景建议用铝壳线绕电阻或金属氧化膜电阻但要注意线绕电阻有电感做高频脉冲场景时要避开。电阻的功率问题在上一节提过这里再强调一次电阻功耗约等于1.25V乘以电流也就是P ≈ 1.25 × I。1A恒流时光电阻就要吃掉1.25W。如果这个电阻体积很小表面温度会非常高阻值跟着漂移电流自然就漂了。正确做法是留2到3倍余量并且让功率电阻离LM317远一点别把芯片烤热。如果需要的阻值不是标准值可以用串联或并联方式组合。串联直接相加并联用倒数和公式。比如需要1.25Ω可以用两个2.5Ω精密电阻并联这样每个电阻只分到一半功耗散热也更好。3.2 输入输出压差预算和芯片功耗LM317毕竟是线性器件正常工作必须满足一个压差条件Vin ≥ Vload 1.25 dropout我来拆一下这个公式。恒流源正常工作时ADJ端电压就等于负载电压Vload而OUT端比ADJ端高固定1.25V所以OUT端电压是Vload 1.25。LM317要维持调整管工作IN端又要比OUT端高出约3V左右这是它的最小压差要求。所以整个预算就是Vload 1.25 3。举个实际例子。驱动一颗3.3V的LED负载电流100mA那么最低输入电压是3.3 1.25 3 7.55V。很多人想用5V USB电源去驱动结果是电流根本上不去因为压差不够。换成9V适配器就稳了。但压差富裕太多也有代价多出来的电压全部变成热量消耗在LM317上。继续上面的例子9V输入、LED压降3.3V、100mA时LM317上的功耗是(Vin - Vout) × I (9 - (3.3 1.25)) × 0.1 ≈ 0.445W0.445W对于TO-220封装来说不算大加个小散热片就压得住。但如果输入24V、输出给12V负载、电流1A功耗接近11W这种情况必须上大散热器否则LM317热保护马上触发你会观察到电流“莫名其妙”往下跌。还有一点要注意LM317最大输入电压是40V别一激动接到高压上去。持续大电流工作时建议把电流降额到1.2A以下别顶在1.5A极限上。3.3 电流调节范围与Iadj带来的误差LM317恒流源的电流上限主要由芯片的1.5A最大输出电流和散热条件决定。下限则受到两个因素制约。第一个是LM317的最小负载电流要求。为了保证内部误差放大器和调整管正常工作OUT端需要维持一个最小电流典型值在3.5mA左右最差条件可能到10mA。所以设计恒流值低于5mA时LM317就不太合适了可以换LM334这类专做小电流恒流的芯片。第二个是ADJ脚的调整端电流Iadj。这个电流典型值约50µA它在恒流电路里会叠加到负载电流上更精确的公式是Iout 1.25 / Rset Iadj100mA时50µA只占0.05%完全可以忽略。但如果你把恒流值做到5mA50µA就占了1%就需要把Iadj算进去或者通过实测校准。小电流应用我会把Rset稍微取大一点再并一个精密微调电阻来修。如果想让恒流值连续可调常见做法是固定电阻串一个多圈电位器。但要注意电位器的最小阻值必须用一个固定电阻兜底否则调小阻值时电流可能瞬间增大很多。大电流场景不建议用电位器直接当Rset电位器触点承载不了那么大电流容易烧出接触不良。4. 从恒流到恒流恒压可调电源别把两个LM317随手一串4.1 先把概念理清恒压源、恒流源与镜像电流源热词里经常同时出现“恒压源”“恒流源”“镜像电流源”这三个东西很容易混。简单说理想恒压源是电压固定、电流由负载决定理想恒流源是电流固定、电压由负载决定。LM317做稳压器时是前者做电流源时是后者。镜像电流源则是另一回事。它是集成电路内部常用的一种电流源结构用两个同规格晶体管把基极连在一起让输出晶体管复制参考电流。这种结构精度高、面积小但只能工作在毫安甚至微安级别主要用于差分放大器、运放内部的偏置电路不适合直接驱动LED或电池。你可以把镜像电流源理解为芯片内部的一种“微缩电流源”和LM317这种功率级恒流源完全不是一个应用层次。4.2 为什么两颗LM317简单串联不等于恒压恒流可调电源很多资料提到“LM317恒流恒压可调电源制作”有人就直接在前级放一个LM317稳压器后级再串一个LM317恒流源。这个做法能不能工作能但非常容易误解。关键问题在于恒流源是“强制”输出设定电流不是“超过设定值才限流”。如果你把恒流值设成500mA那么无论负载多轻它都会试图往负载里灌500mA。如果负载本来只需要100mA恒流源会把输出电压强行拉高结果不是稳压限流而是过压。这在实验台上是个危险行为可能直接烧掉负载。所以真正意义的“恒流恒压CV/CC电源”需要同时采集输出电压和输出电流用运放分别做电压环和电流环两个环路通过某种“或”的关系去控制调整管。LM317单独做不了这种双闭环常见方案是LM358加外部功率管或者用专用恒压恒流芯片。网上搜“LM358 LM317可调电源”能找到完整原理图这里不贴复杂电路误人先把这个概念讲清楚比给一个似是而非的图更重要。4.3 什么时候可以放心用双LM317串联方案双LM317串联方案并非一无是处用在对的地方就很顺手。比如给LED灯串供电本来就要恒流驱动给镍氢电池小电流充电只需要恒流给加热电阻丝供电也是恒流更稳定。这些场景可以直接用前级稳压器设置一个最大安全电压后级恒流源设定工作电流形成一个“带电压上限的恒流源”。但如果负载是锂电池我不会推荐这种简单方案。锂电池充电需要一个完整的CC-CV曲线到截止电压后必须转入恒压并逐步减流。LM317恒流源没有这个逻辑直接拿来充锂电有安全隐患。安全第一这点必须说清楚。5. 先用Multisim把恒流源跑一遍接线零失误再焊板5.1 Multisim中的仿真电路搭建步骤动手焊板之前我习惯先在Multisim里把电路跑通一遍尤其是电源类电路仿真能帮你快速发现原理性错误比如负载放错位置、压差预算不够这类问题。搭建步骤如下在Multisim组件库里搜索“LM317H”或“LM317”不同版本所在的库名有差异一般在Power或Mixed组里。找不到LM317时可以用LM117替代两者核心参数一致放置直流电源V1设成12V放置设定电阻R1比如12.5Ω放置负载电阻RL先用10Ω模拟一个低压负载按标准接法连线V1正极接INOUT接R1R1另一端接ADJADJ接RLRL回GNDV1负极接GND在负载回路里串一只电流表或者在RL上并联一只电压表点运行按钮读电流和电压数值。如果仿真报不收敛先检查LM317的模型引脚顺序是不是和你理解的物理引脚一致。Multisim里的符号引脚顺序和数据手册的引脚序号可能是两套体系按原理图连线就行别按物理封装顺序硬套。5.2 改变负载看电流验证“恒流”的本质接下来做最有说服力的验证把负载电阻从5Ω逐步改到20Ω、50Ω观察电流表和电压表读数。负载电阻RL负载电压负载电流现象5Ω约0.5V约100mA恒流正常20Ω约2.0V约100mA恒流正常50Ω约5.0V约100mA恒流正常80Ω以上接近输入极限明显回落压差不够进入饱和仿真的意义就在这里你会亲眼看到“负载电压随电阻变化但电流保持不动”这个恒流源核心特质。继续增大负载电阻直到ADJ端电压逼近输入电压上限恒流关系就会被打破电流开始下跌。这个临界点就是恒流源的“顺应电压范围”实际使用时要确保负载最大电压落在这个范围之内。Multisim仿真和实物之间肯定有差异模型里的Iadj、dropout参数和实际芯片不完全一致但验证电路结构和计算压差预算已经非常够用。至少能帮你把最常见的接反负载、电源电压选错这两类低级错误挡在焊板之前。6. 实作中的几个异常现象与排查思路6.1 现象一电流随着负载变化漂移如果发现恒流值在变但LM317温度并不高先怀疑设定电阻。大电流时电阻发热会导致阻值漂移电流跟着漂。用万用表直接测Rset两端电压应该稳定在1.25V附近。如果这个电压稳而电流不稳基本就是电阻温漂如果这个电压本身在漂问题在LM317基准或输入端波动。还有一种容易被忽略的情况是接触电阻。尤其用面包板搭电路时长引脚和弹簧片的接触电阻可能达到零点几欧对于1Ω级别的Rset来说这个误差相当可观。做精确恒流时建议直接焊板或者用接线端子压接。6.2 现象二小电流档误差偏大做10mA以下的小电流恒流时如果实测电流比计算值大几十微安别慌这是Iadj在起作用。前面说过ADJ脚向外流出约50µA电流会叠加到负载电流上。这时候修正公式Iout 1.25 / Rset Iadj把Rset稍微取大一点就能把电流校回来。如果要做1mA级别的精密恒流建议直接换LM334这类专用恒流芯片它的最小工作电流更低而且可以用一个电阻设定电流精度比LM317小电流模式好得多。6.3 现象三芯片烫手、电流掉下来LM317有内部热保护结温过高时输出电流会被主动拉低。如果你发现恒流源一开始正常十几秒后电流慢慢往下掉八成是过热保护。这时候用公式估算一下芯片功耗P (Vin - (Vload 1.25)) × I前面的3.2节讲过具体计算。解决方向无非三条降低输入电压、加大散热器、减小设定电流。选开关电源做输入时别一上来就选24V够用就好多出来的电压全变成热量又费电又难散热。如果实在需要高压差大电流可以用降压模块先把电压降到合适区间再接LM317恒流效率会好很多。6.4 现象四上电瞬间冲击和振荡LM317做稳压器时比较容易因为输出端电容不合适产生振荡做恒流源时振荡概率低但也不是没有尤其负载是长导线或感性负载时。输入端那颗0.1µF到0.33µF电容要放在离IN脚最近的位置不能省。如果发现电流表读数在微小范围内快速抖动或者电路工作状态不稳定在负载端并联一个0.1µF瓷片电容通常能改善。注意负载端电容别太大否则上电瞬间电容充电电流会冲击LM317甚至触发内部限流。对感性负载比如继电器线圈或电机要在负载两端反向并联一个二极管吸收关断时的反电动势否则容易打坏芯片。6.5 现象五负载开路时输出过压恒流源最怕的一件事就是负载开路。因为整个恒流环路依赖负载提供电流回路一旦负载断开ADJ端处于悬空状态LM317为了维持OUT和ADJ之间的1.25V会把输出电压往输入电压方向推输出端可能瞬间出现接近输入电压的高压。LED、精密传感器这类负载最怕这种过压。我给经常调流调负载的朋友一个实用建议在ADJ端到地之间反向并联一只稳压管比如18V或者24V再留一个1kΩ左右的假负载焊盘。上电调流之前先把假负载挂上调完再取下来。这个小动作成本不到一块钱但是能避免很多“啪一下负载就没了”的尴尬。我自己习惯更简单只要LM317恒流源旁边有昂贵负载输出端必挂稳压管钳位不管负载是不是可能开路。最后一个个人习惯也分享给你我做样板时会把Rset焊成“固定电阻可调电阻”的并联组合先调好电流再把可调电阻拆下来量出实际阻值用精密电阻替换。这样既拿到了可调范围又保证了长期稳定焊完不管它也能一直跑。恒流源这个东西原理不复杂但真正决定它好不好用的往往就是电阻、散热、压差这三个容易被低估的细节。
阅读完成 · 觉得有帮助?
咨询建站