☰
锂电池供电设备USB插入自动切换电路方案:P-MOS与比较器实现电源路径管理
2026/9/25 1:14:59 网站建设 项目流程

把USB插进一台电池供电的设备,设备瞬间重启、屏幕闪断、正在写的数据丢了一笔——这种场景做硬件的人多少都见过。根本原因就是没做电源路径切换:USB一插上来,系统不知道是该用5V还是继续用锂电池,两个电源直接怼在一起,轻则电压跌落,重则倒灌烧板。这篇文章要讲的,就是一套我用在量产项目上的锂电池供电设备USB插入自动切换电路方案,包含完整的选型思路、参数计算逻辑和实测数据。无论你是做手持仪表的嵌入式工程师,还是自己折腾桌面小设备的DIY玩家,这套方案的骨架子都可以直接拿过去用。

我不是要把一堆原理图甩给你就完事,而是把为什么用P-MOS、为什么检测VBUS、为什么切换瞬态会掉电这些背后的逻辑全部拆开讲。这样你照着做能跑通,遇到变体需求时也知道往哪个方向改。

1. USB插入自动切换:比想象中更值得较真的小功能

1.1 没有切换电路时会发生什么

先说最直观的故障现象。早期我做过一个便携式传感器记录仪,主控是STM32,供电来自一节18650锂电池,板上带USB口做充电和固件升级。最初版设计偷懒,直接把USB的5V和锂电池正极通过两个肖特基二极管并联到系统电源轨。

结果测试时出现三个问题:

第一,插入USB瞬间系统电压被拉低,STM32直接掉电重启。原因很简单,USB插头接触的瞬间存在机械抖动,VBUS不是一次稳定建立,而是反复通断。这两个电源"打架",系统电源轨出现毛刺,MCU的BOR(Brown-Out Reset)电路检测到电压跌破阈值就复位。

第二,电池侧二极管一直处于微导通状态,电池在USB供电时依然在缓慢放电。虽然肖特基反向漏电流只有几十微安,但对于需要待机半年的设备,这个泄漏直接毁掉续航。

第三,更隐蔽的是,当USB和电池电压接近时(比如电池满电4.2V,USB被拉低到4.3V),两个电源同时向负载供电,电流路径完全不受控,甚至可能出现从电池正极流入USB口的倒灌路径。

后来我意识到,自动切换的本质不是"把两个电源接在一起",而是要做一个仲裁机制:任何时候只有一个电源向负载供电,且切换过程不能造成系统电源轨的长时跌落或过冲。

1.2 自动切换的本质:三条电流通路的管理

一套完整的USB插入自动切换方案,实际上要管理三条电流通路:

  • 通路A:USB插入时,VBUS向系统负载供电。
  • 通路B:USB插入且电池电量不足时,VBUS通过充电管理电路给锂电池充电。
  • 通路C:USB拔出时,锂电池向系统负载供电。

三条通路的关系是: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-MOS(Q1)给负载供电,同时VBUS接到充电管理芯片给电池充电。
  • USB拔出时:比较器检测到VBUS跌落,关闭Q1,打开电池通路P-MOS(Q2),锂电池通过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管上的功耗P=I²R=1²×0.05=50mW。这个功耗在SOT-23封装下温升不明显,但如果负载到2A,功耗就变成200mW,SOT-23封装就会明显发热,必须换SOP-8封装或者并联两颗MOS。

还有一个参数容易被忽略:门极电荷Qg。在拔插切换过程中,MOS管的开关速度直接影响电压跌落幅度。Qg越小,开关越快,切换瞬态越短。AO3401的Qg只有12nC,实测从关断到完全导通只需要几十微秒,这对系统电源轨的稳定很关键。

USB通路Q1的选型逻辑类似,但注意它的源极接VBUS,栅极驱动来自比较器输出。当VBUS为5V时,比较器输出高电平(通常也是5V),VGS=-5V,RDS(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.18V),USB通路用可调直流电源模拟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通路的压降更小,因为VBUS=5V时VGS=-5V,MOS处于完全导通状态。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,负载电流却有800mA),TP4056根本分不出电流给电池充电,电池电压永远停在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泄放掉,而不是冲击比较器。

另外,储能电容的位置也很讲究,一定要放在负载端、紧挨着负载,而不是放在切换电路输出端。这样才能让电容在切换空窗期直接给负载供电,最大程度压低电压跌落。

如果你正在做锂电池供电设备,这套电路可以放心抄作业。但如果你想把它改到自己的系统里,记得先核算一下自己负载的最大电流和储能电容容量,别的都好说。

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

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

立即咨询