
玩充电器设计的朋友多少都绕不开LM358这颗运放。几毛钱一片双运放宽电源范围单电源供电当年我改12V铅酸充电器的时候手里没有专用充电IC货架上翻来翻去就只有LM358和TL431结果硬是用这两个芯片拼出了一个三段式充电器到现在还在工作室服役。这篇文章就把我在LM358充电器电路设计上踩过的坑、算过的电阻、调过的环路一次性捋清楚从电压跟随器、恒流电路到升压电路图从电压阈值设定到实际调试给刚入门的硬件爱好者一个能直接上手的参考。1. 为什么LM358能当充电器的“大脑”1.1 LM358这颗老运放的底气在哪LM358是1972年就诞生的双运算放大器四十年过去依然是电源工程师手里的常青树。它在充电器电路里的核心价值可以归纳成四点一是单电源供电范围宽3V到32V随便用充电器输入电压动不动十几伏它扛得住二是输入共模范围包含地电位也就是同相和反相输入端可以接受接近0V的信号这对采样电阻上的压降检测特别友好三是静态功耗低单个运放大约0.5mA对电池供电系统压力很小四是输出低电平时能灌电流高电平时能输出一定驱动能力配合外部三极管或者MOS管可以直接驱动调整管。不过它的短板也很明显比如输出不是轨到轨高电平输出一般到VCC减1.5V左右低电平可以接近地。增益带宽积只有1.1MHz做高频开关电源的误差放大器勉强够用做音频放大或者高速比较器就力不从心了。但在充电器这种控制带宽只有几十到几百赫兹、控制对象是电池电压和电流的场景下这颗芯片的性能冗余足够价格和通用性又碾压各种专用IC所以才有“一颗LM358走天下”的说法。1.2 充电器控制环路的本质恒流加恒压两个环无论铅酸、镍氢还是锂电池充电器控制逻辑的核心都跑不出这两个变量最大充电电流和最高充电电压。刚开始电池电压低的时候充电器要输出恒定的大电流这叫恒流阶段或者叫CC阶段等电池电压上升到设定值充电器必须转为恒定电压输出让电流自然下降这叫恒压阶段也就是CV阶段。铅酸电池再加一个浮充阶段锂电池则在电流降到一定阈值后截止。这个逻辑用模拟电路实现本质上就是两个负反馈环路抢一个执行机构。恒流环采样充电电流和参考电流比较恒压环采样电池电压和参考电压比较。谁“紧张”谁接管功率级另一个自动靠边站。你可以把它想象成两个人同时控制一个水龙头一个人盯着水壶水位不能超过刻度线一个人盯着水流不能太大水位低的时候水流控制器说了算水位接近满的时候水位控制器出手把水调小。LM358恰好有双运放一片芯片正好搞定这两个环路这就是它在充电器设计里的最佳定位。1.3 LM358和专用充电IC怎么选才合适这些年市面上专用充电IC多得是比如CN3763、BQ2057、TP4056之类外围电路简单批量生产成本低。那为什么还要折腾LM358方案我的经验是专用IC适合成熟产品大批量复制但如果你在做原型验证、维修代换、教学实验或者充电参数比较特殊比如需要自己设定13.8V而不是3.7V那专用IC往往要找半天型号、查半天手册LM358加TL431一把电阻就能拼出任意电压电流。LM358方案的另一个好处是灵活想加转灯、加防反接、加温度补偿直接在通用运放上改外围就行。缺点是模拟环路的调试门槛比专用IC高电阻匹配、环路补偿、PCB布局都得自己负责。如果项目时间紧、追求极致低功耗、或者需要I2C通信、ADC采集这种智能功能那还是老老实实上专用IC或者单片机方案别为难一片老运放。2. LM358在充电路里的四种关键用法拆解2.1 当电压比较器用阈值设定和滞回计算不能省充电器里最简单的需求是“电压到了就切换状态”比如转灯、继电器吸合、停止充电把运放开环用就是一个比较器。LM358开环增益有100dB以上同相端比反相端高一点输出就冲到高电平低一点输出就掉到低电平。关键设计在于阈值电阻网络例如用TL431提供2.5V基准然后把电池电压通过R1和R2分压后送到比较器输入端当分压点电压等于2.5V时对应的电池电压就是翻转点。设电池电压Vbat分压点Vfb Vbat × R2 / (R1 R2)要Vfb等于Vref时的Vbat就是Vth Vref × (R1 R2) / R2。算电阻时反推一下即可R1取47k级别R2根据阈值求。但直接用运放做比较器有一个常见问题输入信号爬升缓慢时输出会在阈值附近反复翻转指示灯闪烁、继电器抖动严重点会让功率管在开关临界点震荡。解决办法是加一点正反馈也就是在输出和同相输入端之间接一个几百k的电阻构成滞回比较器。滞回宽度大约是反馈电阻与输入电阻之比乘以输出高电平和低电平的差值。以LM358供电12V举例输出高约10V、低约0V反馈电阻470k、输入源电阻10k滞回宽度接近0.21V这个宽度对电池电压翻转场景足够消除抖动了。2.2 当恒流电路用采样电阻加负反馈闭环LM358做恒流电路是充电器设计里最核心的一个应用原理不复杂运放的同相端接参考电压Vref反相端接采样电阻Rs的上端运放输出控制功率管。采样电阻上的压降VRs等于充电电流乘以电阻值运放会不断调整输出让VRs无限接近Vref于是充电电流就被钳在I Vref / Rs。这里要重点理解为什么LM358适合干这个活。因为充电电流采样电阻通常接在低边也就是电池负极到地之间采样电阻上端电压只有零点几伏而LM358的输入共模范围包含地可以直接处理这种低电压信号。换一个输入共模范围不含地的普通运放你还要先把信号抬升徒增一堆外围。以12V铅酸充电器为例设定1.2A充电电流采样电阻选0.1Ω那么满电流时压降只有0.12V参考电压也就要0.12V这个参考电压可以从TL431的2.5V基准用电阻分压得到。采样电阻功耗是I²R等于0.144W留两倍以上余量选0.5W或1W封装别抠门。2.3 当电压跟随器用基准缓冲和测量隔离LM358电压跟随器在充电器电路里的价值容易被新手忽略。电压跟随器的接法就是把输出直接接到反相输入端同相端接输入信号输出电压严格跟随输入电压但因为运放输入阻抗极高、输出阻抗极低所以它的本质是“复刻电压、隔离电流”。在充电器里最常见的应用场景是缓冲基准源。TL431虽然能做2.5V或可调基准但它能提供的电流有限如果你把多个比较器、分压网络都挂在同一点上挂载多了TL431的输出电压就会发生偏移。这时候让LM358其中一个运放做电压跟随器TL431只负责给运放同相端提供参考运放输出再去带下游负载问题立刻解决。另一个场景是电池电压检测网络当你需要把电池电压送给多个比较器判断不同阈值时每个比较器输入都会从分压网络抽走一点电流电压就变了先用跟随器把分压点电压缓冲出来再分配给各路比较器测量误差会明显下降。有一点要记住LM358输出不是轨到轨跟随器输出最高到VCC-1.5V左右。比如LM358供电5V想让跟随器输出接近5V的基准实际最高只有3.5V左右这种情况下就要提高运放供电电压或者改用输出轨到轨的运放。2.4 在升压电路图里当误差放大器控制PWM占空比把LM358放进升压电路图它的角色通常是误差放大器。Boost升压拓扑中输出电压经过分压电阻采样后送入LM358的反相或同相端和基准比较后产生一个误差电压这个误差电压送入PWM控制芯片的COMP引脚实时调节开关占空比。以经典的5V输入升到8.4V给两串锂电池充电为例Boost电路里的电感、MOS管、二极管、输出电容负责能量变换LM358则负责“盯住输出电压”。用LM358做误差放大器还有个额外好处它剩下的一个运放可以做输入限流或者输出恒流。通过采样电阻检测输入电流一旦输入电流超过设定值恒流运放就输出一个信号和恒压环路的输出信号通过二极管做逻辑OR共同控制PWM芯片的COMP脚。恒压环失效时恒流环接管就形成了CC-CV双环控制。很多DIY的升降压充电模块就是这种结构UC3843或TL494配一颗LM358成本极低能做的事情却不少。升压电路图里的LM358要注意环路补偿通常会在输出引脚和反相输入端之间并一个10nF到100nF的电容不然很容易在负载跳变时震荡。3. 实操参考13.8V/1.2A铅酸充电器完整设计3.1 设计目标与器件选型我以给12V/10Ah铅酸电池做一个三段式充电器为例目标参数浮充电压13.8V最大充电电流1.2A输入用18V/2A笔记本适配器或者开关电源模块。铅酸电池浮充电压范围是13.8V到14.4V选13.8V作为浮充值既不会过充又能维持电池饱和状态。器件选型方面LM358不用多说基准用TL431温漂低比稳压管稳定太多调整管建议用NMOS型号IRLZ44N或者IRL2203N重要的是选低阈值电压的类型因为LM358高电平输出大约10V普通NMOS可能驱动不足IRL系列栅极阈值在1V到2V之间满驱没问题采样电阻选0.1Ω、1%精度、功耗2W的金属膜电阻绕线电阻虽然功率大但有感抗高频环路上可能引发震荡反馈分压电阻用精密电阻比例电阻的温度系数要匹配否则输出电压随温度漂移。整体拓扑用低边NMOS线性调整电源正极直接接电池正极电池负极接NMOS漏极NMOS源极接采样电阻到地。这个结构的优势是LM358输出可以直接驱动NMOS栅极不需要电平偏移电路最简单。缺点是电池负极端子不是系统地但充电器作为独立设备不存在接地问题。恒压环的采样点若直接从电池正极到地之间取会包含采样电阻上的压降这个误差在恒流阶段有0.12V恒压阶段电流小到零点几安时误差降到零点零几伏对铅酸浮充来说可以接受。真要追求精度用远端四线采样把反馈分压电阻的下端引到NMOS源极或者把采样电阻挪到高边用差分放大器但电路复杂度会上升一截。3.2 恒压环参数与电阻计算恒压环的目标是让电池电压稳定在13.8V。LM358运放A负责这个环路同相输入端接TL431的2.5V基准反相输入端接电池电压分压点。当电池电压低于13.8V时分压点电压低于2.5V运放输出高电平NMOS导通加强充电电流增大当电压接近13.8V时运放进入线性区输出电平逐渐降低NMOS导通程度下降最终稳定。反馈分压电阻的计算公式是R_top R_bottom × (Vbat / Vref - 1)。如果取R_bottom为10kΩVref为2.5VVbat为13.8V那么R_top等于10k × (13.8 / 2.5 - 1)结果是45.2kΩ。标准E96系列中有45.3kΩ非常接近装上去实测偏差大约千分之二可以接受。如果希望精确到0.01V可以在R_top上串联一个100Ω级微调电阻或者在R_bottom上并联电阻微调。TL431供电通过一个1kΩ电阻从18V电源取电TL431阴极接基准节点基准节点再串联一个1kΩ电阻给运放同相端防止TL431的噪声直接进入运放。运放A的反相输入端是电池电压分压点该分压网络从上到下为45.3kΩ接电池正极、10kΩ接地。这里有一个细节分压网络电流约13.8V除以55.3kΩ等于0.25mA虽然不大但采样电流会随分压电阻值波动所以电阻一定要用低温漂的金属膜电阻普通碳膜电阻的温漂能到几百ppm会让浮充电压在温度变化时偏离设定值。3.3 恒流环参数与参考设定恒流环由运放B负责目标是限制充电电流在1.2A。采样电阻Rs为0.1Ω满电流时压降VRs等于1.2 × 0.1即0.12V。运放B的同相输入端接采样电阻上端也就是NMOS源极反相输入端接恒流参考电压当VRs大于0.12V时运放输出拉低把NMOS栅极拉下来减小充电电流。恒流参考电压从TL431的2.5V基准分压得到。分压比是0.12V除以2.5V即0.048。取下分压电阻R_bottom等于4.7kΩ上分压电阻R_top等于(2.5 - 0.12) × 4.7k / 0.12约93.2kΩ选E96系列的93.1kΩ。装好后用电子负载实测充电电流再微调R_top。注意这个分压网络流过的电流约2.5V除以97.8kΩ等于26μA电流很小对基准的负载几乎可以忽略但这也意味着它容易受到PCB漏电流干扰所以分压电阻要靠近运放输入脚焊盘之间保持干净。采样电阻的功耗前面算过是0.144W选2W封装确实奢侈但余地大发热小电阻值不容易因温漂而偏移。还有一个没写进计算书但很重要的点采样电阻的接线用四线开尔文接法更稳功率电流走电阻两端电压采样从电阻本体内部的采样点引出否则焊盘上的压降会被算进采样信号里。3.4 双运放环路怎么自动切换而不打架这是整个LM358充电器电路最微妙的地方。两个运放都要控制同一个NMOS栅极如果直接短路连接一运放想拉高、一运放想拉低最终状态不可控。我用的是二极管隔离加栅极上拉方案NMOS栅极通过一个4.7kΩ电阻上拉到12V供电运放A输出通过一个1N4148二极管连接到栅极节点运放B输出也通过一个1N4148连接到同一节点。二极管的阳极接运放输出阴极接栅极节点。谁输出低电平谁就把栅极拉低因为低电平会把二极管正向导通谁输出高电平它的二极管就反偏不影响另一路。这个方案的本质是一个自动的低电平优先级仲裁。电池电压低于13.8V时运放A输出高电平二极管反偏它不参与控制此时充电电流如果超过1.2A运放B输出低电平通过二极管拉低栅极限制电流。随着充电进行电池电压升高运放A开始接管输出进入线性区把栅极电压稳定在某个中间值上此时电流已经低于限流值运放B输出高电平撤离控制。这里需要留意的是运放输出的高电平不是理想的12VLM358在供电12V时输出高电平约10.5V这个电压足以让二极管截止吗如果栅极节点电压比运放高电平低0.7V以上二极管还是会微导通产生漏电流。所以4.7kΩ上拉电阻不能太小太小栅极电压被拉更高二极管反向漏电流变大环路互相干扰。实测下来1kΩ到10kΩ之间都稳定我习惯用4.7kΩ。另外NMOS栅极存在米勒电容线性调整时栅极电压变化缓慢是正常的但如果出现振荡在栅极串联一个33Ω到100Ω的电阻可以明显改善。3.5 状态指示和防反接保护LM358只有两个运放都用在了恒压和恒流环上转灯逻辑只能另想办法。最简单的方案是加一个LM393比较器它和LM358引脚兼容输出是开集电极可以直接驱动LED。转灯阈值设定在浮充电流降到0.2A左右这对应采样电阻压降0.02V。用LM393检测采样电阻电压低于0.02V就输出低电平点亮绿色LED高于则红色LED亮。注意这个比较同样要加一点点正反馈否则充电电流缓慢下降时LED会闪烁加一个100kΩ到200kΩ的反馈电阻就能解决。防反接保护常常被忽略。铅酸电池一旦接反轻则烧采样电阻重则炸MOS管。简单做法是在电源正极端串联一个防反二极管但正极串二极管会有0.3V到0.7V压降浮充电压要相应调高。另一个办法是用PMOS做高边防反接开关电池接反时PMOS不导通保护后面电路。如果只是DIY自己用养成“先接电池再接电源”的习惯也行但把产品给别人用防反接是必须的。散热问题也要算一笔账。线性充电器最恶劣的工作点不是满电时而是电池电压很低时。比如电池电压只有6V输入18V充电电流1.2A调整管上的压降是12V功耗达到14.4W。IRLZ44N的结到环境热阻太高必须加足够大的散热器或者限制低压段的充电电流。一个稳妥做法是把输入电压降到比最高浮充电压高3V左右比如用16V电源而不是18V这样在正常充电电压区间调整管压降小发热少但输入电压过低电池深度亏电时驱动余量又不够。实际设计中要根据电池最低电压核算调整管最大功耗不能只看满电状态。3.6 调试顺序和实测要点焊完板子别直接接电池按下面顺序来。第一空载上电测量LM358供电是否正常12V稳压管或者7812输出对不对。第二用电子负载或者大功率电阻假负载接在输出端设定10mA小电流调节恒压反馈电阻让输出电压稳定在13.8V。第三把负载电流调到1.2A测量采样电阻压降是不是0.12V如果偏差微调恒流参考分压电阻。第四接真实电池全程盯着充电电流温度和示波器栅极波形。栅极波形如果有高频振荡马上断电在栅极串电阻或者增加运放反馈电容。调试中最容易出现的现象是空载电压正常一接上电池电流就乱跳。大概率是采样回路被功率电流干扰了尤其采样电阻靠近电池负极、反馈线又绕着功率线走的时候。采样线要单独双绞后回到运放输入中间加一个1nF电容对地滤波基本上能解决。另一个坑是得上电状态下测采样电阻两端电压用万用表毫伏挡遇到数值跳动不要慌可能不是电路故障而是万用表在开关电源纹波下的普通反应。4. 升压场景扩展5V转8.4V两串锂电池充电器4.1 升压拓扑和LM358的接入方式前面讲的线性方案简单直接但效率天花板太低如果要做一个5V USB输入、给两串锂电池充到8.4V的充电器线性方案肯定不行8.4V减去5V是负压差必须升压。Boost升压电路的基本结构大家都不陌生输入电源、电感、开关MOS、整流二极管、输出电容通过控制MOS开关占空比让输出电压高于输入。这个拓扑的核心控制在于PWM芯片比如UC3843或者TL494而LM358在这里扮演的是“大脑”角色负责检测输出电压和电流把误差信号送给PWM芯片的反馈端动态调整占空比。具体接入方式是输出电压经过Rtop和Rbottom分压后送入LM358的运放A反相输入端同相端接TL431基准2.5V。运放A的输出通过一个电阻连接到UC3843的COMP脚。输出电流的采样可以放在低边用一个0.05Ω采样电阻运放B检测其压降输出信号经二极管接到同一个COMP节点。这样升压电路不但能稳定电压还能限制最大输出电流。4.2 关键参数计算占空比、电感、反馈分压Boost的理想占空比由输入输出电压决定。5V输入、8.4V输出加上二极管压降实际输出电压目标建议按8.9V计算占空比D 1 - Vin / Vout大约是0.44。开关频率选100kHz电感纹波电流取输出电流的30%假设最大输出电流1A纹波0.3A电感量L Vin × D (f × ΔI)代入得5 × 0.44除以100kHz × 0.3A大约73μH取标准值68μH或者100μH都行。电感值太小时纹波大输出电容压力大太大则瞬态响应慢充电电流建立速度慢。反馈分压电阻计算顺着前面的公式来若Vref用2.5VVout为8.4V取Rbottom等于20kΩRtop等于20k × (8.4 / 2.5 - 1)约47.2kΩ选47kΩ加一个10kΩ微调。恒流环的参考电压同样由TL431分压得到如果输出限流1A采样电阻0.05Ω压降0.05V参考电压就设0.05V分压比例0.05 / 2.5等于0.02。这个电压只有50mV比LM358的失调电压大不了太多误差会比较难看所以实际设计建议把采样电阻加大到0.1Ω参考电压0.1V电流精度能改善不少。限流设定在1A时采样电阻功耗0.1W选0.5W封装没有问题。4.3 升压充电器的CC-CV切换和环路补偿升压充电器的CC-CV切换思路和线性充电器一脉相承两个运放的输出通过二极管汇集到PWM芯片的COMP脚谁要减小占空比谁说了算。恒压环工作时输出电压超过8.4V运放A输出低电平通过二极管拉低COMP占空比减小恒流环工作时输出电流超过1A运放B输出低电平同样拉低COMP。和前面线性方案的区别是这里的频域特性复杂得多Boost本身是右半平面零点系统负载突变时容易发生环路不稳定所以补偿网络一定要加。常用的做法是在运放输出到COMP脚之间串联一个10kΩ电阻同时在COMP脚对地接一个100nF电容再在运放输出和反相输入端之间并一个10nF电容形成二类补偿。没有示波器观察负载阶跃响应的朋友至少要做一次“从空载到满载拔插”测试看输出电压有没有明显震荡。锂电池充电还有一个锂电池特有的问题过充保护和截止电流检测。8.4V是两串锂电池组的上限电压充电器要确保不会超过这个值。升压拓扑空载或者电池断开时输出电压可能会冲到远超8.4V如果不加空载保护容易烧后级。最简单的处理是把输出反馈接到电池端并且在输出端并联一个5W的稳压管或者TVS做钳位。截止电流可以设定在0.1C左右比如电池组容量2Ah截止电流0.2A用到这个电流时用LM393比较器翻转LED提示充满。和线性充电器相比升压充电器的效率可以达到85%以上热量集中在电感和MOS管上电感选饱和电流大于2A的功率电感MOS管选低导通电阻的类型。5. 常见问题与排查技巧实录5.1 自激震荡症状、原因和补偿方法我在调试LM358充电器时遇到最多的问题就是自激震荡症状是充电电流忽大忽小、万用表电流档读数乱跳、LED转灯频率不规律。自激的根因是运放环路增益高、反馈回路存在额外的相位延迟电池加导线形成的电感、MOS管栅极电容和板子走线寄生电容都会拖慢反馈信号。最典型的场景是电压环的反馈线从功率回路旁边穿过高频开关噪声串入运放输入运放对噪声进行放大后形成正反馈闭环。解决方法按优先级来第一栅极串联一个几十欧姆的电阻限制MOS管栅极电容的充放电速率第二在运放输出与反相输入端之间并联一个10nF到100nF的电容把环路带宽降下来第三采样线加RC低通滤波比如1kΩ电阻串联后接1nF电容对地再进运放输入第四PCB布局上让功率回路和信号回路分开采样电阻附近不要铺大铜皮。虽然LM358增益带宽积不高但配合快速功率管依然可能振荡不要因为芯片老就掉以轻心。5.2 转灯不干脆和阈值漂移的处理充电转灯闪烁的根子几乎都在比较器没有滞回前面也专门提过。除了加正反馈电阻还要注意阈值参考电压的稳定性。如果你用的是稳压二极管做基准稳压值是会随温度变化的而且稳压管内阻不小几十μA的负载变化就能让电压偏移几个毫伏。转灯临界时电流变化缓慢阈值电压稍微漂一下LED就会在那儿磨叽半天。所以基准尽量用TL431TL431最小阴极电流1mA动态内阻典型0.2Ω温漂30ppm跟稳压管不是一个量级。还有一个容易被忽略的坑是转灯阈值检测用的采样电压太低。前面提到采样电阻0.1Ω、转灯电流0.2A时压降只有0.02V而这个量级已经接近LM358和LM393的输入失调电压了。不良批次里失调电压可能到7mV这就占了20mV的35%转灯点自然天南地北。解决办法有两条一是把转灯检测用的采样电阻独立出来做大一点比如0.5Ω专门给检测环路用不影响主功率采样二是在软件校准式的方案里实测每块板子再微调但对纯模拟电路来说最简单还是把转灯阈值设得高一点比如0.3A对应0.03V信噪比好些。5.3 国产LM358和进口原装的差异实测这个话题比较敏感但必须说。市面上几毛钱的国产LM358和TI、ST原装LM358在功能上完全兼容但关键参数有差异。我实测过几批国产货的输入失调电压一般在3mV到7mV原装一般在2mV到5mV国产货输出高电平能力有点飘同样供电电压有的只能到VCC-2V这对NMOS栅极驱动余量有影响。在充电器这种精度敏感的应用里恒流环的参考电压只有0.12V7mV的失调就意味着6%的电流误差某些批次可能更夸张。对策很明确关键测量点别用最便宜的散新件去正规渠道买或者采购时注明要“低失调”版本比如LM358A输入失调电压典型值1mV级别。如果已经用了国产器件调试时留出微调电阻的位置让最终参数可以校准。我个人经验DIY少量做用国产件完全没问题配一个可调电位器校准一下效果一样稳定但批量生产就老老实实选型别在这上面赌良率。5.4 充电器电路问题速查表故障现象可能原因排查与处理通电即烧采样电阻电池接反、功率管击穿、运放失控先断开功率管单独测运放输出确认输出状态再装功率管充电电流上不去栅极驱动不足、采样电阻虚焊、参考电压有误测运放供电是否正常检查栅极电阻和二极管方向核对分压点电压空载电压漂移反馈分压电阻温漂、TL431基准不稳用低温漂金属膜电阻TL431阴极电容加0.1μF去耦负载时电压跌落大采样点包含了线损、功率回路接触电阻大采用远端采样把电压反馈线单独拉到电池端转灯后电池电压继续涨恒压环没接管、比较器阈值不匹配用示波器看恒压运放输出是否进入线性区检查二极管OR逻辑有没有被恒流环卡住充电器空载发热严重LM358异常振荡、功率管静态导通示波器看栅极波形若在振荡按第5.1节补偿恒流阶段电流随温度变化采样电阻温漂、参考分压温漂采样电阻选低温度系数合金电阻反馈电阻网络用同一系列5.5 一句关于布线和测量的老实话调试充电器时万用表两表笔一夹就要相信读数但在开关电源环境里读数可能是假象。充电电流的测量点在采样电阻两端你用普通万用表去测0.12V的压降表笔一夹就引入了环路读数跳动很正常。建议用差分探头或者示波器测电压如果没有就在万用表表笔上并联一个1μF电容滤掉高频分量读数会稳太多。另外低边采样电阻的地是“热地”电流大时地平面上的电压梯度会让附近的模拟电路参考地漂移所以所有小信号地的布线要独立走回采样电阻下端不要沿途乱接。我个人在实际折腾充电器电路的过程中最感慨的一点是专用芯片确实省事但把LM358用好了你对恒流恒压这两个环路的理解会深得多。这片老运放价格便宜、随处可得、上限很高它当年能占领那么多充电器主板靠的绝不仅仅是情怀。如果你正打算做自己的第一个充电器别急着买昂贵的开发板和专用IC拿起一片LM358先算电阻再焊板子最后用示波器看环路响应这个过程本身就能让你少走两年弯路。最后再留一个小技巧所有反馈分压电阻尽量从基准网络独立取电采样线进芯片引脚之前加一个RC滤波器很多莫名其妙的电压漂移和指示灯乱跳都会在焊上这两个元件之后自动消失。