ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

锂电池供电设备USB插入自动切换电路方案:P-MOS与比较器实现电源路径管理

锂电池供电设备USB插入自动切换电路方案:P-MOS与比较器实现电源路径管理 把USB插进一台电池供电的设备设备瞬间重启、屏幕闪断、正在写的数据丢了一笔——这种场景做硬件的人多少都见过。根本原因就是没做电源路径切换USB一插上来系统不知道是该用5V还是继续用锂电池两个电源直接怼在一起轻则电压跌落重则倒灌烧板。这篇文章要讲的就是一套我用在量产项目上的锂电池供电设备USB插入自动切换电路方案包含完整的选型思路、参数计算逻辑和实测数据。无论你是做手持仪表的嵌入式工程师还是自己折腾桌面小设备的DIY玩家这套方案的骨架子都可以直接拿过去用。我不是要把一堆原理图甩给你就完事而是把为什么用P-MOS、为什么检测VBUS、为什么切换瞬态会掉电这些背后的逻辑全部拆开讲。这样你照着做能跑通遇到变体需求时也知道往哪个方向改。1. USB插入自动切换比想象中更值得较真的小功能1.1 没有切换电路时会发生什么先说最直观的故障现象。早期我做过一个便携式传感器记录仪主控是STM32供电来自一节18650锂电池板上带USB口做充电和固件升级。最初版设计偷懒直接把USB的5V和锂电池正极通过两个肖特基二极管并联到系统电源轨。结果测试时出现三个问题第一插入USB瞬间系统电压被拉低STM32直接掉电重启。原因很简单USB插头接触的瞬间存在机械抖动VBUS不是一次稳定建立而是反复通断。这两个电源打架系统电源轨出现毛刺MCU的BORBrown-Out Reset电路检测到电压跌破阈值就复位。第二电池侧二极管一直处于微导通状态电池在USB供电时依然在缓慢放电。虽然肖特基反向漏电流只有几十微安但对于需要待机半年的设备这个泄漏直接毁掉续航。第三更隐蔽的是当USB和电池电压接近时比如电池满电4.2VUSB被拉低到4.3V两个电源同时向负载供电电流路径完全不受控甚至可能出现从电池正极流入USB口的倒灌路径。后来我意识到自动切换的本质不是把两个电源接在一起而是要做一个仲裁机制任何时候只有一个电源向负载供电且切换过程不能造成系统电源轨的长时跌落或过冲。1.2 自动切换的本质三条电流通路的管理一套完整的USB插入自动切换方案实际上要管理三条电流通路通路AUSB插入时VBUS向系统负载供电。通路BUSB插入且电池电量不足时VBUS通过充电管理电路给锂电池充电。通路CUSB拔出时锂电池向系统负载供电。三条通路的关系是A和C互斥B和A可以共存边充边放但B不能影响A的稳定性。这就要求自动切换电路至少做两件事一是检测USB是否插入二是根据检测结果切换A/C通路。看似简单但其中涉及的阈值检测、迟滞比较、MOSFET驱动、瞬态响应每一环都有坑。下面我把方案对比、原理拆解、实测验证、踩坑记录逐一展开。2. 三套主流切换方案实测横评从二极管到负载开关芯片2.1 最省事的肖特基二极管OR-ing方案为什么我放弃了二极管OR-ing是所有方案里最直观的两颗肖特基二极管阳极分别接USB 5V和锂电池正极阴极并在一起接负载。谁电压高谁就导通供电。这个方案在很多低成本充电宝电路里都能看到。但实测下来有几个硬伤。压降问题是第一个。普通肖特基二极管的正向压降在0.3V到0.4V之间负载电流越大压降越大。对于电池供电端这意味着4.2V满电经过二极管后只剩3.8V左右如果你的系统里有3.3V LDO输入压差勉强够但如果负载里有电机、加热丝、射频PA这类吃电流的器件电池端的有效电压会掉得非常难看。第二个问题是电源切换的割裂感。USB插入的瞬间如果USB 5V比电池电压高电流会自然转移到USB端。但两颗二极管的导通切换是模拟过程不是数字跳变在临界点附近会有一段电压平台期负载电流在两个电源之间来回转移表现在示波器上是系统电源轨上多出一串毛刺。第三个问题就是我前面提到的反向漏电。这个方案下电池侧二极管永远处于反偏状态但肖特基二极管的反向漏电流比普通PN结大得多几十微安到上百微安都很常见对电池寿命是持续的消耗。2.2 P-MOS负载开关方案性能和成本的平衡点如果换成P沟道MOSFET来做电源选通压降问题基本消失。P-MOS导通后就是一个纯电阻压降等于导通电阻乘以电流。以常用的AO3401为例VGS-4.5V时RDS(on)只有42mΩ左右1A负载时压降才42mV比二极管的300多毫伏降了一个数量级。P-MOS做负载开关的接法也很简单源极接电源输入USB 5V或电池正极漏极接负载栅极通过控制信号决定导通还是关断。关键是要保证栅极控制有明确的电平逻辑不能让MOS管处于半开半关的线性区。对于USB插入检测用一颗比较器比如超低功耗的TS881监测VBUS电压输出高电平或者低电平再加上一颗下拉电阻驱动P-MOS栅极就能实现自动切换。这套方案的优点是BOM成本低整套切换电路元器件不超过10颗静态功耗可以做到微安级。我自己在手持设备里用的就是这套方案。如果对体积和成本敏感但不追求极致的集成度P-MOS方案是性价比最高的选择。2.3 集成负载开关芯片面向量产和严苛环境再往上一档就是集成负载开关芯片典型的有TPS22918、SGM2019、RT9742这类。它们把MOSFET、驱动电路、软启动、限流、热关断全部封装在一起。集成方案的好处是省掉了自己搭驱动电路的麻烦而且芯片内部有完善的保护逻辑。比如TPS22918支持可调软启动时间可以控制USB热插拔时的浪涌电流避免瞬间大电流把USB口的TVS管或者前级电源打挂。另外内部集成了输出放电电阻关断时可以把负载端残余电荷快速泄放防止设备出现关不死的假死状态。代价是成本更高且外围配置引脚更多对小型化设计不太友好。另外某些集成芯片的静态电流比分立方案大对超低功耗要求严格的场景反而不如P-MOS方案。我的选型结论如果你的设备是电池供电、对成本和功耗敏感用P-MOS加比较器的分立方案最稳如果是AC供电为主、偶尔切电池的工业设备或者需要过认证的量产产品直接用集成的负载开关芯片更省心。下表是我对三套方案的实测对比基于同一负载1A恒流下的数据方案电池通路压降USB通路压降静态功耗切换毛刺成本肖特基二极管OR-ing300~400mV300~400mV数十μA级漏电流明显低P-MOS负载开关约50mV约40mV2~5μA微弱可控中集成负载开关芯片约30mV约30mV8~20μA极弱有软启动高3. 实测有效的电路方案原理拆解与参数计算3.1 整体架构和电源路径我用在量产设备上的最终方案是一颗低功耗比较器做USB插入检测一颗P-MOSFET做电池通路开关另一颗P-MOSFET做USB通路开关。注意这里不是只切换一边而是两边都做了开关控制。为什么两边都要开关因为如果只有电池通路有MOS管、USB通路直连拔掉USB后电池会通过负载回灌到USB端导致VBUS上一直挂着系统电压。这个电压如果倒灌进后级的充电管理芯片或者USB口的ESD保护器件轻则芯片耗电重则损坏器件。整体电源路径是这样的USB接入时VBUS经过USB通路P-MOSQ1给负载供电同时VBUS接到充电管理芯片给电池充电。USB拔出时比较器检测到VBUS跌落关闭Q1打开电池通路P-MOSQ2锂电池通过Q2给负载供电。Q1和Q2的栅极驱动是互补的USB在时Q1导通、Q2关断USB不在时Q1关断、Q2导通。关键点在于两组驱动信号之间必须存在先断后通的时序间隔break-before-make否则两个电源瞬间同时接通会形成从电池到USB的反灌电流。3.2 USB插入检测与迟滞防止临界抖动USB是否插入最直接的检测点是VBUS电压。但这里有个容易被忽视的问题使用USB时VBUS电压并不是稳定的5.0V。USB 2.0规范里VBUS的范围是4.75V到5.25V。实际使用中劣质充电器、长USB线、大电流负载都会把VBUS拉低。我实测过一根1.5米的普通USB线带1A负载后到设备端的电压只剩4.62V。如果阈值设得不准系统会把USB已接入但电压被拉低误判成USB未接入于是切回电池供电然后USB又尝试接管两个电源反复横跳。解决方法是给比较器加迟滞hysteresis。简单说就是让检测到USB插入的阈值和检测到USB拔出的阈值不同中间留一个电压带避免在临界点反复翻转。比较器接法是这样的VBUS经过两颗电阻分压后输入比较器的同相端反相端接一个基准电压可以用TL431或者直接从MCU的参考电压取。分压比的选择要保证VBUS在4.75V以上时比较器输出高电平VBUS跌到4.2V以下时比较器输出低电平。中间0.55V左右的窗口就是迟滞带。迟滞不是靠分压电阻实现的而是在比较器输出端到同相端之间加一个正反馈电阻。输出为高电平时这个电阻把同相端电压往上抬一点输出为低电平时把同相端电压往下拉一点。实际设计中我把正反馈电阻设为1MΩ同相端分压电阻上臂200kΩ、下臂100kΩ得到约0.3V的迟滞窗口实测USB线在临界电压附近抖动时切换动作干净利落没有来回翻转。3.3 MOSFET选型和功耗计算MOSFET选型是这套电路能不能稳住的关键。我以电池通路Q2为例把选型逻辑完整过一遍。P-MOS用在电源选通上最核心的参数是阈值电压VGS(th)和导通电阻RDS(on)。电池满电4.2V放电截止保护点一般在2.8V到3.0V。也就是说Q2的栅极驱动电压最低只有2.8V如果栅极直接接电池正极或者更低经过驱动电路后。选型时要求VGS(th)的绝对值低于最低驱动电压同时留出足够的过驱电压。以AO3401为例VGS(th)范围是-0.65V到-1.2V在VGS-2.5V时RDS(on)已经能到80mΩ左右VGS-4.5V时可以到42mΩVGS-2.8V到-4.2V这个区间表现良好。这就是为什么AO3401这类低压P-MOS在锂电池设备里用得特别多。功耗计算按最恶劣工况来假设负载持续1A电池电压3.6V锂电池平台电压VGS-3.6V查数据手册此时RDS(on)约50mΩ那么MOS管上的功耗PI²R1²×0.0550mW。这个功耗在SOT-23封装下温升不明显但如果负载到2A功耗就变成200mWSOT-23封装就会明显发热必须换SOP-8封装或者并联两颗MOS。还有一个参数容易被忽略门极电荷Qg。在拔插切换过程中MOS管的开关速度直接影响电压跌落幅度。Qg越小开关越快切换瞬态越短。AO3401的Qg只有12nC实测从关断到完全导通只需要几十微秒这对系统电源轨的稳定很关键。USB通路Q1的选型逻辑类似但注意它的源极接VBUS栅极驱动来自比较器输出。当VBUS为5V时比较器输出高电平通常也是5VVGS-5VRDS(on)可以达到数据手册里的最优值。3.4 为什么没让MCU直接参与切换控制很多工程师第一反应是用MCU的GPIO检测VBUS然后通过GPIO控制MOS管。这个方案不是不行但它有一个致命弱点MCU依赖系统电源运行。如果MCU死机、固件卡死、或者系统电源建立得比USB接入慢切换动作就失效了。更严重的是MCU在上电初始化阶段GPIO状态不明如果它默认输出高电平导致电池通路的MOS管误导通USB插入时就会出现几分钟的系统电源混乱。所以我在方案里坚持用独立比较器做硬逻辑切换不经过MCU。比较器的响应速度是微秒级MCU最少也要几十微秒起步响应速度不在一个量级。而且在设备深度休眠时MCU可以完全断电由比较器独立维持USB插入检测功能整机待机功耗反而更低。这一点在量产项目中非常重要。用一颗约350nA静态电流的TS881比较器整个切换检测电路额外消耗的电流不到1μA对电池续航的影响可以忽略不计安全性却提升了一个台阶。4. 实测验证压降、切换瞬态、待机功耗逐项过检4.1 带载压降实测数据说话方案定型后我在实验室做了完整的带载测试。测试条件是电池通路用满电18650锂电池实测4.18VUSB通路用可调直流电源模拟USB适配器输出5.0V负载用电子负载拉恒流。先测电池通路分别记录电池电压VBAT、Q2漏极输出电压VSYS、负载电流I负载电流VBATVSYS系统压降折算导通电阻0A4.18V4.17V10mV—500mA4.15V4.10V50mV100mΩ1A4.10V4.04V60mV60mΩ1.5A4.02V3.94V80mV53mΩ注意一个细节表格里的系统压降是VBAT减去VSYS它包含了MOS压降和导线/PCB走线上的压降。随着电流增大MOS管发热RDS(on)会略有上升但整体压降控制在100mV以内相比二极管方案的300mV系统供电余量明显更充足。USB通路的压降更小因为VBUS5V时VGS-5VMOS处于完全导通状态。1A负载下从USB口到VSYS的压降只有35mV完全在USB规范允许的电压降范围内。4.2 拔插瞬间的动态过程示波器抓关键波形压降只是静态指标真正的考验在于动态切换。我用示波器同时抓取VBUS、VSYS、电池通路MOS栅极、USB通路MOS栅极四路信号。USB拔出的实测波形是这样的拔掉USB的瞬间VBUS在几十微秒内跌落到0V。比较器检测到VBUS降到4.2V阈值以下输出翻转先关闭USB通路Q1关断时间约20μs再打开电池通路Q2开启时间约50μs。在这个约70μs的切换窗口里VSYS出现了一个约200mV的跌落持续不到100μs就恢复。200mV跌落听起来不小但要看系统的承受能力。我的负载板上有470μF的储能电容这个容量在切换窗口内能维持大部分供电跌落曲线呈平滑的指数恢复形状。如果你的系统对电压跌落更敏感可以把储能电容加到1000μF或者用超级电容做后备切换跌落可以压到100mV以内。USB插入的切换过程正好相反比较器先关闭电池通路Q2再打开USB通路Q1同样有短暂的空窗期。由于USB插入时VBUS上有充电电容跌落幅度更小实测只有80mV左右。4.3 待机功耗和临界电压表现待机功耗测试是这套方案最大的亮点之一。整机待机时负载电流约100μA比较器检测电路消耗约0.5μA两颗MOS管栅极漏电流加起来不到1μA。实测整套切换电路在待机状态下额外消耗约1.5μA对一块2000mAh的电池来说这个开销可以忽略。临界电压测试我用可调电源模拟劣质USB适配器把VBUS从5.0V慢慢往下调观察切换点。由于迟滞设计插入检测点在4.62V左右拔出检测点在4.28V左右中间有0.34V的缓冲区。实测在4.3V到4.6V区间系统一直保持USB供电状态跌到4.28V以下才切回电池。这个表现很好地解决了我前面提到的USB线劣质导致电压被拉低的问题。5. 从样板到量产焊接调试与避坑记录5.1 USB插入浪涌与ESD防护这个坑差点毁了一批板第一次样板测试时USB插入功能正常但量产前做静电放电测试发现USB口打不过±8kV接触放电。排查后发现问题是:USB座子的VBUS引脚直接接到了比较器分压网络没有加任何防护。USB是外部接口人体静电、线缆摩擦都会在上面感应高压。VBUS引脚上必须加TVS管做钳位我用的是PESD5V0S1UB这颗单向TVS动作电压5V钳位电压约9V响应时间皮秒级。另外比较器输入端的分压电阻网络也要注意抗浪涌。我在分压电阻上臂串联了一个100Ω的限流电阻即使TVS来不及动作这个电阻也能限制进入比较器输入端的电流保护比较器不被打坏。过完ESD测试后整批板子无一失效。5.2 充电电路与负载切换的联动一个极易被忽视的坑如果你的设备同时有锂电池充电管理芯片比如TP4056、CN3065这类那充电电路和自动切换电路的协同就非常关键。我用TP4056做充电管理时踩过一个特别典型的坑TP4056的输出端BAT引脚如果同时连接电池和系统负载在USB插入且电池未充满时TP4056的输出电流会优先供给负载剩下的才给电池充电。如果负载电流恰好大于TP4056的设定充电电流比如充电电流设500mA负载电流却有800mATP4056根本分不出电流给电池充电电池电压永远停在4.0V左右上不去。你在网上搜4.2V锂电池只能充到4.0V就满大部分案例就是这么来的——不是电池坏了是充电IC和负载抢电了。解决方案有两种一种是把充电输出和负载供电分开充电IC只管电池负载供电从切换电路获取这样充电和放电互不干扰另一种是提高充电IC的设定电流保证充电电流大于最大负载电流。第一种方案更合理我最终就是把TP4056的BAT引脚单独走线到电池正极负载供电从Q2漏极取两者只在电池端汇合。这带来的好处是充电截止判断也准了。TP4056判断电池充满的依据是充电电流降到设定值的1/10如果负载一直挂在上边截止电流阈值会被干扰导致充不满或过充。分开之后充电电流曲线干净了充满判定非常精确实测电池可以充到4.20V±1%以内。5.3 不同USB电压等级的适配参考有些设备的USB口可能不只是5V比如兼容PD协议的快充口需要握手后才能升压。如果你的设备要适配9V、12V的输入切换电路要做相应调整比较器的输入分压比要重新计算让检测阈值按比例提高避免把9V输入误判为未插入。P-MOS的VDS耐压要留够余量9V档位下推荐用VDS耐压20V以上的管子比如SI2301的VDS是20V勉强能用换成AO3401的VDS是30V更稳妥。USB通路的栅极驱动也要重新评估9V电压直接驱动栅极时VGS最大会到-9V超出了部分MOS的±12V最大值但还有余量最好串联一个稳压二极管做栅压钳位。5.4 打样前的仿真验证建议如果你不想像我一样第一版就打样回来才发现问题建议先用电路仿真软件把关键波形跑一遍。我在设计这套电路时用LTspice做了仿真重点是观察两个切换瞬间的VSYS电压跌落深度。仿真时需要为比较器建立迟滞模型为MOS管加入寄生电容参数。LTspice里有AO3401的SPICE模型直接从元件厂商官网下载导入即可。把负载设成恒流源模拟电子负载把VBUS设成脉冲源模拟拔插动作跑一个瞬态分析就能在打样前大概掌握切换跌落量和响应时间。实测和仿真对比下来跌落幅度误差在20%以内作为预判工具完全够用。最后分享一个实际调试心得这套电路我在三个项目里反复用过总结出一条最想强调的经验切换电路的性能上限往往由PCB布局决定而不是原理图。电池通路的MOS管和负载之间走线尽量短而粗至少保证1A/mm²的载流能力。比较器的分压电阻网络要尽量靠近比较器引脚避免走线过长引入噪声。USB口的VBUS走线在进入分压网络之前先经过TVS管再分压保证浪涌电流先被TVS泄放掉而不是冲击比较器。另外储能电容的位置也很讲究一定要放在负载端、紧挨着负载而不是放在切换电路输出端。这样才能让电容在切换空窗期直接给负载供电最大程度压低电压跌落。如果你正在做锂电池供电设备这套电路可以放心抄作业。但如果你想把它改到自己的系统里记得先核算一下自己负载的最大电流和储能电容容量别的都好说。
返回列表