做电子DIY这几年我见过太多人把LM2596模块当“一次性降压砖头”用输入怼上、电位器拧到需要的电压、锁死完事。等哪天要给锂电池充电、给LED灯珠供电、测一个不明电源的带载能力时才发现手里的模块只能“压电压”根本“管不住电流”轻则烧管子重则把负载直接带走。这篇文章我就想跟你掰扯清楚怎么用一颗LM2596-ADJ配合一个双运放搭出一台真正意义上的可调恒压恒流电源——既能设定最高输出电压又能设定最大输出电流过流时自动从恒压模式切到恒流模式。整套方案我实际焊过、调过、也踩过坑下面这些原理和步骤你照着做大概率一次能跑起来。1. 为什么固定降压模块撑不起充电、LED与电池测试的场景1.1 单一稳压在真实负载下的两大致命痛点普通LM2596模块的反馈回路只采样输出电压内部逻辑很简单输出电压低于设定值占空比加大高于设定值占空比减小。这个闭环只解决“电压稳不稳”的问题完全不管“电流是不是超了”。这在给纯阻性负载供电时问题不大比如给一个电热丝、继电器线圈供电负载阻抗固定电压稳住电流自然就在安全范围内。但一碰到电池、LED这类“边界型负载”立刻翻车。电池充电就是典型。锂电池充电分两个阶段先恒流再恒压。恒流阶段要求电源把电流钳在1A或2A电压跟着电池电压往上爬到了截止电压后转恒压电流自然下降。如果你只做一个固定5V输出直接把电池怼上去——电池电压低时充电电流可能飙到好几安培轻则触发模块过流保护直接打嗝重则电池发热、鼓包甚至伤到保护板。LED灯珠也类似LED是电流型器件电压稍微高一点电流就可能成倍增长一颗电阻没配好几分钟就冒烟。也就是说很多实际场景要的不是“多稳定的电压”而是“多可靠的电流上限”。这个上限一旦被突破设备就废了。固定降压模块缺的正是这层“兜底能力”。1.2 谁需要一台恒压恒流电源我把这类需求总结成三类你可以对号入座电池充电与化成测试磷酸铁锂、三元锂、铅酸虽然充电曲线有差异但核心都是“先限流、后限压”。一台可调CC/CV电源能直接替代各种傻充充电器。LED驱动与老化测试串并联灯珠需要恒流驱动尤其是大功率COB灯珠电流设定在额定值附近电压会自动适配灯珠结电压。电子制作中的通用维修电源给一块未知好坏、未知功耗的电路板供电时先把电流限制在100mA再慢慢上调比直接怼满电安全十倍。这三类场景的共同点是负载会动态变化电源必须能自动在“恒压输出”和“恒流输出”两个状态之间切换而且切换过程不能振荡、不能过冲。1.3 为什么选LM2596而不选LM317有些人一看恒压恒流第一反应是LM317。LM317确实能做但它是线性稳压输入输出压差直接转成热量。比如输入24V、调成5V输出1A中间19V压差乘以1A就是19W热功率你得背一块巨型散热片才能稳住。温度一高热保护就触发电流掉得厉害。LM2596是开关降压效率通常在80%~90%之间同样24V转5V输出1A内部损耗只有一两瓦散热压力小得多。LM2596-ADJ版本输出范围1.23V到37V最大输出电流3A实际取决于输入电压和散热条件对绝大多数桌面电源需求已经够用。当然开关电源的纹波比线性电源大这点我会在后面的调试部分专门聊。先明确结论用LM2596做平台投入小、效率高、可玩性强唯一需要多花心思的是反馈环路的搭建这正是这篇文章的重点。2. 设计前的思路转变把LM2596从“降压器”改造成“电压/电流双环路电源”2.1 先搞懂LM2596-ADJ的反馈脚到底在听谁的LM2596-ADJ的反馈引脚FB不是简单的高电平开关它内部接的是一个误差放大器。芯片正常工作时会一直把FB引脚的电压往1.23V参考电压上“拉”——FB电压高于1.23V占空比减小输出往下降FB电压低于1.23V占空比增大输出往上升。这里有一个反直觉的点想让最终输出电压降低不是去“把FB拉低”而是要“想办法把FB抬得比1.23V更高”。因为FB一旦高于参考芯片就会主动减少占空比输出自然降下来。正是这个逻辑构成了恒流叠加的基础。你可以把FB脚理解成一个“只听电压高低指令”的指挥官它自己不关心电流只关心外部给它的电压信号。谁能让FB电压超过1.23V谁就能让芯片降低输出。这给了我们一个很优雅的外挂方式额外加一路电流反馈当电流过大时向FB节点“灌入”一个额外的电压信号强制芯片降低占空比。2.2 恒压环与恒流环的协作方式恒压环其实不用自己做。LM2596-ADJ内部的误差放大器就是恒压环我们只需要通过外部分压电阻R1/R2设定“最高输出电压”。输出电压如果低于设定值芯片自动加大占空比高于设定值自动减小。这相当于一个内置的电压误差放大器。恒流环则需要外接。思路是在输出回路中串入一个小阻值采样电阻把电流转成电压信号接到一个运放上与“电流设定参考电压”做比较。运放输出通过二极管接到FB节点。当电流没超限时运放输出低电平二极管反偏截止恒流环不干预芯片工作一旦电流超过设定值运放输出高电平二极管导通向FB注入电流把FB抬升到1.23V以上芯片被迫降低输出电压从而把电流压回设定值附近。这就是两个环路“自动切换”的核心机制谁更“急”谁就控制FB。恒压环平时管着电压恒流环只在实际电流超过设定值时介入。整个过程中不需要单片机不需要继电器完全是模拟电路自己完成的。2.3 采样电阻怎么把电流变成“看得见”的电压电流环路的关键是采样。采样电阻就一个原则阻值尽量小功率余量尽量大。我常用0.1Ω/5W的康铜丝电阻或大功率贴片电阻最大输出2A时采样电压也只有0.2V对输出功率的损耗可以忽略。0.1Ω电阻在2A电流下产生0.2V电压这个电压太小了直接和参考电压比较精度很吃亏——电位器拧一点电流变化就很大。所以我在采样电阻后面加了一级LM358同相放大器放大11倍2A电流对应2.2V调节旋钮就舒服多了。后面章节我会给出具体的电阻取值和计算过程。3. 完整电路图拆解信号从输入到反馈到底怎么走3.1 功率级电感、续流二极管、输入输出电容先搭最基本的部分LM2596-ADJ的开关功率级。连接关系如下输入电源正极接LM2596第1脚VIN同时并联一只100µF/50V电解电容CIN和一只0.1µF陶瓷电容电解电容尽量靠近输入端子陶瓷电容尽量靠近芯片引脚滤掉高频开关噪声。LM2596第2脚OUTPUT接储能电感L147µH/3A电感另一端接输出正极。续流二极管D1采用SS54肖特基二极管阴极接第2脚OUTPUT阳极接GND。注意方向接反了立马冒烟。LM2596第3脚GND直接连系统地同时与输入地、输出地、CIN负端、COUT负端汇集到一点建议用单点接地。输出正极到输出地之间接470µF/35V低ESR电解电容COUT再并联0.1µF陶瓷电容。第5脚ON/OFF不用时直接接GND让芯片始终使能。如果你想加软开关可以把这个引脚经过一个开关接到高电平来关机。到这里一个基本可调降压电源就已经能工作了反馈网络先接上后面讲。3.2 反馈网络分压电阻怎么决定最大输出电压LM2596-ADJ需要一个从输出正极到FB第4脚再到GND的分压网络。FB节点正常工作电压锁定在1.23V附近。我用R13.3kΩ做上臂从输出正极接到FB节点下臂用R2_fix330Ω固定电阻串联一只10kΩ多圈电位器从FB节点接到GND。这样FB节点的对地等效电阻R2可以在330Ω到10.33kΩ之间变化。输出电压公式Vout 1.23 × (1 R1 / R2)代入数值R2最小330Ω时Vout 1.23 × (1 3300 / 330) ≈ 13.5VR2最大10.33kΩ时Vout 1.23 × (1 3300 / 10330) ≈ 1.62V也就是说这个配置能在1.6V到13.5V之间连续调节最大输出电压。如果你需要更高电压把R1加大或者把R2_fix减小公式摆在这里自己按需求算。有一个特别重要的保护细节下臂R2_fix不能省。如果电位器拧到0ΩFB直接接地芯片会认为输出电压严重不足占空比拉到最大输出瞬间冲到接近输入电压负载和设备全完蛋。串联一只330Ω的固定电阻即便电位器归零输出电压也只会冲到13.5V而不是“失控”。3.3 恒流控制电路LM358采样放大与二极管自动切换恒流部分是整个电路最有意思的地方也是大家最容易接错的地方。我用一颗LM358双运放完成两件事采样信号放大、与设定值比较。电路接线如下采样电阻R_sens0.1Ω/5W串接在输出负端与系统地之间。负载电流流过采样电阻两端产生电压V_sense 0.1 × I_load。U2A接成同相放大器采样电阻靠近负载一端接到U2A同相输入第3脚采样电阻靠近系统地一端接GND同时通过一只10kΩ电阻R4接到U2A反相输入第2脚U2A第1脚输出通过一只100kΩ电阻R5反馈回反相输入第2脚。放大倍数 1 R5 / R4 1 100k / 10k 11倍。所以当负载电流为2A时U2A输出电压 0.1 × 2 × 11 2.2V。U2B接成比较器也可以看成一个大增益误差放大器U2B同相输入第5脚接U2A输出U2B反相输入第6脚接基准电压VrefVref由一只10kΩ多圈电位器从5V基准电源上分压得到U2B第7脚输出接一只1N4148二极管D2的阳极D2阴极再串联一只1kΩ电阻R3R3另一端接到LM2596的FB节点。工作原理当放大后的采样电压低于Vref时U2B输出接近0VD2反偏截止恒流环不动作。当负载电流增大放大电压超过Vref时U2B输出高电平D2导通电流通过R3注入FB节点FB电压被抬高芯片降低占空比输出电压下降输出电流被抑制在设定值附近。注意D2和R3的方向这是整个电路最容易接反的地方。二极管阳极接运放输出阴极朝FB方向电流只能从运放流向FB。如果你接反了恒流环永远不工作。3.4 运放供电与基准源LM358需要一组供电和一组稳定的参考电压。我直接用一颗78M05线性稳压器从输入电源取电输出5V给LM358供电同时用这个5V给电流设定电位器供电。注意5V地一定要和电源系统地、LM2596地连通共用同一个参考点。可以这样接输入正极接78M05第1脚第2脚GND接地第3脚输出5V并配两只电容一只10µF电解、一只0.1µF陶瓷。输出5V之后接10kΩ多圈电位器的两个固定端中间抽头作为Vref送到U2B反相输入。这里有个实用建议电位器最好用多圈精密电位器或者3296W那种可调电阻不要用普通单圈电位器。电流设定需要比较精细的调节单圈电位器拧一丁点电流就跳几十毫安做电池充电时非常难受。4. 核心参数计算与元器件选型对照表4.1 电流采样电阻的功率计算采样电阻阻值越低插入损耗越小但采样电压也越小反之阻值高信号大了损耗也跟着涨。0.1Ω是一个常用折中值。功率按最大设定电流平方乘以阻值计算。假设最大电流按2.5A设定P I² × R 2.5 × 2.5 × 0.1 0.625W理论上0.625W够用但我强烈建议选5W规格。原因有二一是余量大长时间满载不会烫到焊盘脱焊二是大功率电阻通常带引脚可以悬空安装方便散热。如果手头没有5W至少也要2W起步。4.2 电感的选型与饱和问题LM2596开关频率标称150kHz电感取值有个经验公式Lmin Vout × (Vin_max - Vout) / (Vin_max × fsw × ΔI)其中ΔI取最大负载电流的30%左右。以一个常用场景为例最高输入30V输出调到13.5V最大负载2AΔI 0.3 × 2 0.6ALmin 13.5 × (30 - 13.5) / (30 × 150000 × 0.6) 13.5 × 16.5 / 2,700,000 ≈ 82.5µH按照这个计算直接用47µH在满载时纹波会偏大但通常也能工作。如果你希望输出更干净直接上100µH/3A功率电感宁可电感量大一点也不要在高纹波下带载。更重要的是电感的饱和电流。电感的额定电流要大于最大输出电流的1.2倍以上。我见过很多人用色环电感做开关电源负载一大电流就上不去万用表测输出只有不到一半电压拆下来一摸电感烫手——这就是电感饱和了。开关电源电感必须用工字型功率电感、磁屏蔽功率电感或环形电感绝不能用工频小体积色环电感代替。4.3 反馈电阻与电位器搭配完整参数表下面是我实际验证过的一组参数直接照着买就行。位号型号/参数数量用途说明U1LM2596-ADJ1降压开关稳压核心U2LM3581电流采样放大与比较U378M051给运放及基准供电D1SS54(5A/40V)肖特基1续流二极管D21N41481恒流环反馈隔离L1100µH/3A功率电感1储能电感CIN100µF/50V电解1输入滤波CIN20.1µF陶瓷1输入高频旁路COUT470µF/35V低ESR电解1输出滤波COUT20.1µF陶瓷1输出高频旁路R13.3kΩ/0.25W1电压采样上臂R2_fix330Ω/0.25W1FB下端保护电阻RV110kΩ多圈电位器1恒压调节RV210kΩ多圈电位器1恒流调节R_sens0.1Ω/5W1电流采样电阻R31kΩ/0.25W1恒流反馈注入限流R410kΩ/0.25W1采样放大反相接地R5100kΩ/0.25W1采样放大反馈电阻C_fb10nF陶瓷1恒流环路补偿可选4.4 输入与输出电压的范围约束LM2596-ADJ官方标称输入范围4.5V到40V输出最大37V。但实际使用中我不建议输入超过30V因为高压下芯片内部的开关损耗和功耗会明显增加满载时芯片会很烫可能触发过热保护。输出电压受两个因素限制一个是输入输出电压差LM2596是降压型拓扑输出必须低于输入且保证至少2V以上压差另一个是FB分压网络的最大值。按照上面R13.3k、R2_fix330Ω的配置最大输出约13.5V如果你需要更高电压把R1换成5.6k或把R2_fix换成180Ω最大输出可以到25V左右但记住输出电容耐压也要跟着提高。5. 焊接布局与调试设备准备开关电源翻车前的最后一道防线5.1 开关节点和高频电流回路的布局纪律LM2596的开关频率150kHz不算特别高但它的开关节点第2脚到电感之间仍然有很快的电压变化。这个节点的走线、飞线越长辐射噪声越大输出纹波也会越难压下去。我的建议是功率部分尽量搭在覆铜板上而不是用面包板。面包板巨大的分布电容和接触电阻会让这台电源的各种参数面目全非。接地要采用“星型接地”思路——输入地、输出地、芯片GND、采样电阻地、运放地各自用尽量短的导线回到一个公共接地点不要在PCB或洞洞板上串成一条长地线。如果你用洞洞板焊接优先让大电流路径沿一条直线走反馈信号线远离电感和开关节点。5.2 采样电阻的位置决定你测到的是不是“真实电流”采样电阻的位置很讲究。我见过不少人把采样电阻放在负载高端也就是输出正极与负载之间然后用万用表去量它两端的电压。这种“高端采样”需要在运放端做差分输入如果直接用单端同相放大器接法地回路会有干扰测出来的电流值带偏移。比较稳妥的做法是低端采样采样电阻串在输出负端与系统地之间。这样采样电压的一端是地另一个端的电压直接以地为参考用LM358单端放大器就能放大简单可靠。低端采样的缺点是“地抬升”——输出负端到系统GND之间有0.2V左右压差。对于给电路板供电来说这个压差一般可以接受。如果你要做精密测量那就必须改用高端差分采样但调试难度会增加不少新手不建议一上来就挑战。5.3 散热条件别忽略“看起来不热”的芯片LM2596即使效率高在满载时依然会发热。以24V输入、5V输出2A为例效率可能只有85%左右损耗大约7W。芯片自身封装的热阻不低长期满载工作必须加散热片。LM2596-ADJ的规格书里部分封装底部有焊盘它是散热的主要途径。建议在芯片下面多铺一点铜箔并给芯片贴一块小的铝散热片。电感也一样100µH功率电感在满载时会有线圈损耗磁芯也会发热选电感时不要只看电流还要看它的额定温升。国外廉价模块翻车案例里大量都是电感过热导致输出电流上不去。5.4 调试前的设备准备调试这台电源我建议准备以下工具缺一不可可调限流的直流电源给待测电源供电顺便保护自己。带低内阻的大功率电阻或电子负载用于CC模式测试。万用表至少两块一块测电压一块串电流。示波器是加分项但不是必须。如果没有示波器用万用表的交流电压档粗略看纹波也可以判断是否振荡。上电第一件事不是直接接负载而是先空载确认输出电压能调、屏幕上数值稳定。然后再接小负载逐步加大。这个过程一定要有耐心开关电源出问题往往是在负载切换瞬间。6. 实测调试过程与常见故障处理6.1 上电前检查清单每次通电前我会按下面这个清单过一遍看似啰嗦但真的能省下很多烧件成本输入电压是否超过目标电压至少2V且未超过40V。LM2596的FB脚对地电阻是否在我计算范围内用万用表量FB到GND应该大约在330Ω到10kΩ之间且未开路。续流二极管极性是否正确用二极管档量阴极对OUTPUT、阳极对GND。恒流环的D2方向是否按图纸接好。采样电阻是否串在输出负端与GND之间而不是直连。运放供电是否正常78M05输出是否为5V左右。输出端是否直接短路上电前先短路检查一次没坏处确认没有硬连接。6.2 恒压模式验证把恒流设定电位器拧到最大Vref调高让恒流环暂时不起作用。空载上电用万用表测输出端电压缓慢调节恒压电位器电压应该在1.6V到13.5V之间连续变化。之后接一个固定电阻负载比如100Ω/5W观察电压是否仍然保持在设定值附近。如果接上负载电压下降很多先量输入电压是否足够再检查电感是否用错、续流二极管是否用成了普通整流管。普通1N4007在150kHz下恢复太慢根本扛不住必须换肖特基。6.3 恒流模式验证把恒压电位器拧到一个稍高的值比如10V。恒流电位器先调小接一个合适的大功率电阻比如10Ω/20W。上电后电压应该自动下降电流被钳制在设定值附近。缓慢顺时针调节恒流电位器电流应该线性上升。如果电流不变或者一上来就满电流多半是采样放大环节出了问题。优先检查LM358供电有没有对、采样电阻两端电压是否真实存在。用万用表毫伏档直接量采样电阻两端如果电流已经有1A但你量不到0.1V那一定是采样电阻没串在电流回路上而是并联在输出上了。6.4 输出纹波大、空载啸叫的原因与对策很多人在这一步翻车电压电流都能调但用示波器一看纹波几百毫伏或者空载时电感吱吱叫。纹波大的原因通常有三个。第一输入输出电容离芯片太远高频开关电流没有就近回流在导线上产生压降。解决办法是把0.1µF陶瓷电容尽量贴着芯片引脚。第二COUT选用了高ESR的普通电解电容换成低ESR的固态电容或钽电容会明显改善。第三FB反馈线没有远离电感开关磁场耦合进反馈网络。解决办法是把反馈走线绕过电感尽量短。空载啸叫则和环路补偿有关。LM2596轻载时占空比很小电流不连续150kHz的脉冲在电感上叠加了低频包络正好在人耳可听范围就会发出吱吱声。常见解决办法是在输出端加一个小负载电阻比如220Ω/2W让芯片始终工作在连续导通模式附近或者在FB到地并联一个10nF电容适当减慢反馈响应也能减轻部分振荡。6.5 恒流环振荡的补偿经验恒流环毕竟是在开关电源的反馈节点外挂的一个附加环路处理不好很容易出现振荡。典型表现是带着恒定负载时输出电压和电流在一秒内来回摆动LED会闪烁万用表读数飘忽不定。我的处理经验是在U2B输出到地之间并联一只10nF电容或在D2串联电阻R3旁边再并一只100nF电容形成一个缓慢的积分补偿。不要贪心加太大否则恒流响应变慢过流瞬间可能要好几毫秒才能压住这期间电流已经超了不少。10nF到100nF是一个比较安全的起点。如果加了电容还是振荡再检查一下D2隔离是否正常。恒流环怎么振荡都治不好时我建议干脆把采样放大倍数调低一些比如把R5从100k降到47k放大倍数从11倍降到5.7倍环路增益低了稳定余量会大很多代价是电流设定电位器的调节范围变窄但一般够用。6.6 从“电源能用”到“电源好用”我的几个锦上添花建议最后分享几个让我这台电源越用越顺手的小改动。第一输出端并联一只反向TVS管比如SMBJ18A。万一反馈电位器接触不良、输出电压异常升高TVS会先把能量泄放掉保护后方负载。十块钱不到的保命片强烈建议加上。第二在输出正极串联一只保险丝座。保险丝额定电流按你常用电流的1.2倍选比如常用1.5A就选2A保险丝。恒流环万一某天失控还有最后一道物理防线。第三前面板加两个电压表和电流表头。数字表头不贵接线也简单电压表用两个小端子并联在输出端电流表串在输出正极回路里。有了实时显示才算真正把恒压恒流电源用起来。说实话这两年我帮朋友修过不少“莫名其妙坏掉的模块电源”九成都是因为没有电流限制输出瞬间短路就把后级芯片烧了。如果你自己动手搭一套CC/CV电源很多看似奇怪的烧板问题从一开始就不会发生。调试这台电源的过程也是理解开关电源反馈控制的绝佳训练——LM2596这颗芯片不复杂但把它的FB脚用明白以后你再看任何可调电源的电路图心里都会清楚很多。