Type-C与锂电池双路供电切换电路设计:PMOS+肖特基方案
1. 供电切换电路的整体设计思路1.1 为什么需要供电切换做便携式电子产品尤其是带锂电池的设备Type-C接口和锂电池双路供电几乎是标配。Type-C负责充电和外部供电锂电池负责移动场景下的续航。问题在于当Type-C插入时系统应该由Type-C供电同时给锂电池充电当Type-C拔出时系统要无缝切换到锂电池供电中间不能出现电压跌落导致MCU复位或系统重启。这个需求听起来简单但实际做过的都知道切换瞬间的电压跌落是最头疼的问题。我见过不少项目插拔Type-C的时候系统随机重启查了半天以为是软件问题最后发现是供电切换电路没设计好。1.2 常见方案对比市面上常见的供电切换方案大概有这么几种两个二极管直接并联Type-C经过一个二极管锂电池经过一个二极管输出端并在一起。优点是简单到不能再简单缺点是二极管压降大锂电池3.7V经过二极管只剩3.0V左右后级LDO或者DC-DC可能根本带不动。专用电源切换芯片比如TPS2113之类的集成度高切换平滑但成本高、供货周期不稳定小批量打样的时候经常买不到。PMOS肖特基二极管方案这是我个人最推荐的成本低、可靠性高、压降小而且元件通用性好随便哪个渠道都能买到。我这次要聊的就是第三种方案用PMOS做锂电池路径的主开关肖特基二极管做Type-C路径的隔离两者配合实现自动切换。1.3 核心设计逻辑整个电路的核心逻辑其实就一句话Type-C有电的时候让PMOS关断锂电池不输出Type-C没电的时候让PMOS导通锂电池顶上。关键在于怎么检测Type-C是否插入以及怎么控制PMOS的栅极。最简单的办法是用Type-C的VBUS直接去拉PMOS的栅极。PMOS的栅极拉高到VBUS电平源极接锂电池正极栅源电压Vgs接近0VPMOS就关断了。当VBUS消失栅极通过下拉电阻拉到地Vgs变成负值PMOS导通。这个逻辑不需要任何比较器或者MCU参与纯硬件自动完成响应速度在微秒级别比软件轮询快得多。注意PMOS的栅极下拉电阻不能太小否则Type-C插入时会有持续的漏电流。一般选100kΩ到1MΩ之间我通常用470kΩ兼顾响应速度和静态功耗。2. PMOS与肖特基二极管的关键参数解析2.1 PMOS选型导通电阻和阈值电压PMOS在这个电路里承担的是锂电池供电的主通路所以导通电阻Rds(on)是最关键的参数。假设系统峰值电流2ARds(on)如果做到50mΩ压降就是100mV功耗0.2WSOT-23封装勉强能扛住。但如果Rds(on)是200mΩ压降400mV功耗0.8W小封装直接冒烟。我一般会选Rds(on)在20mΩ到50mΩ之间的PMOSVgs(th)在-1V到-2V之间。阈值电压太高的PMOS在锂电池电压降到3.3V的时候可能导通不充分Rds(on)急剧上升反而形成新的压降瓶颈。举个例子我常用的AO3401Vgs(th)典型值-0.9VRds(on)在Vgs-4.5V时约50mΩ在Vgs-2.5V时约80mΩ。锂电池满电4.2V时表现很好但放到3.4V的时候就要留意了这时候Vgs只有-3.4V左右Rds(on)会上升到60mΩ以上。2.2 肖特基二极管压降与反向恢复肖特基二极管在Type-C路径上主要作用是防止锂电池的电流倒灌回Type-C接口。当Type-C没插的时候如果没有这个二极管锂电池的电压会出现在Type-C的VBUS引脚上虽然一般不会烧东西但有些Type-C设备检测到VBUS有电压会误判导致通信异常。肖特基的选型主要看两个参数正向压降Vf和反向漏电流Ir。Vf越低越好一般0.3V到0.5V之间。Ir在常温下一般很小但高温下会显著增大如果用在高温环境要特别留意。我用得比较多的是SS343A/40V和BAT54200mA/30V前者用于大电流路径后者用于小电流辅助电路。SS34的Vf在1A时约0.5V3A时约0.7V这个压降在Type-C 5V输入的情况下完全可以接受。2.3 参数计算实例假设系统工作电压范围3.0V到4.2V峰值电流1.5AType-C输入5V。锂电池路径PMOS的Rds(on)取50mΩ压降1.5A×0.05Ω75mV。锂电池最低3.3V时输出还有3.225V后级LDO如果压差要求200mV3.0V输出没问题。Type-C路径肖特基Vf取0.5V输出5V-0.5V4.5V。这个电压给后级DC-DC或者LDO都很充裕。切换时间PMOS栅极电容约500pF下拉电阻470kΩ时间常数τ500pF×470kΩ235μs。实际切换时间大约3τ到5τ也就是0.7ms到1.2ms。这个速度对于大多数MCU系统足够了但如果你的系统对电源切换特别敏感可以把下拉电阻减小到100kΩ切换时间缩短到150μs左右代价是Type-C插入时的漏电流增加到50μA。3. 完整电路实现与实操步骤3.1 电路原理图说明整个电路分为三个部分Type-C输入路径、锂电池输入路径、输出汇合点。Type-C的VBUS经过肖特基二极管D1到输出端VOUT。锂电池正极经过PMOS的源极漏极到VOUT。PMOS的栅极通过电阻R1连接到VBUS同时通过电阻R2下拉到地。当Type-C插入时VBUS5VR1把栅极拉到5VVgsVg-Vs5V-4.2V0.8V正值PMOS关断。同时VBUS经过D1给VOUT供电。当Type-C拔出时VBUS0V栅极通过R2拉到地Vgs0V-4.2V-4.2VPMOS完全导通锂电池给VOUT供电。这里有个细节R1和R2的分压。如果R1和R2都是470kΩType-C插入时栅极电压是2.5VVgs2.5V-4.2V-1.7VPMOS可能没有完全关断。所以R1要远小于R2我一般取R110kΩR2470kΩ这样栅极电压接近5VPMOS可靠关断。3.2 元件清单与选型元件型号参数备注PMOSAO3401-4A/-30VRds(on)50mΩVgs-4.5VSOT-23封装肖特基SS343A/40VVf0.5V1ASMA封装电阻R110kΩ0402或0603栅极上拉电阻R2470kΩ0402或0603栅极下拉电容C110μF0805或1206输出滤波电容C2100nF0402高频去耦3.3 焊接与布局要点PMOS和肖特基的布局很关键。锂电池路径的走线要尽量短而粗因为这条路径上的电流最大走线电阻会直接叠加到压降上。我一般用2mm以上的线宽或者直接铺铜。Type-C路径的走线可以稍微细一点但也不能太细1A电流至少0.5mm线宽。栅极电阻R1和R2要靠近PMOS放置尤其是R2如果走线太长栅极容易引入噪声导致PMOS误导通。输出电容C1要靠近负载端不要放在输入端否则滤波效果大打折扣。实操心得焊接PMOS的时候烙铁温度不要超过350°C焊接时间不要超过3秒。PMOS的栅极氧化层很薄静电和过热都容易击穿。我一般会戴防静电手环焊接前先确认烙铁接地良好。3.4 上电测试步骤第一步不接Type-C只接锂电池。用万用表测VOUT应该等于锂电池电压减去PMOS压降。如果VOUT接近0V说明PMOS没导通检查栅极电压是否被意外拉高。第二步插入Type-C不接锂电池。测VOUT应该等于5V减去肖特基压降。如果VOUT接近0V检查肖特基方向是否焊反。第三步同时接Type-C和锂电池。测VOUT应该接近5V减去肖特基压降。如果VOUT接近锂电池电压说明PMOS没有关断检查R1是否焊接良好。第四步快速插拔Type-C用示波器观察VOUT的跌落情况。正常情况下跌落应该在100mV以内恢复时间在1ms以内。4. 常见问题与排查技巧实录4.1 切换时电压跌落过大这是最常见的问题。现象是插拔Type-C的瞬间VOUT有一个明显的凹陷幅度可能达到500mV甚至1V以上导致MCU复位。原因通常有三个一是输出电容太小储能不足二是PMOS的栅极下拉电阻太大关断太慢三是肖特基的反向恢复时间太长导致短暂的反向电流。解决办法把输出电容从10μF增加到100μF跌落幅度可以减小到200mV以内。把R2从470kΩ减小到100kΩ关断时间缩短到原来的五分之一。如果还不行换用反向恢复时间更短的肖特基比如SS34换成SS34L。4.2 PMOS发热严重PMOS发热说明它没有完全导通工作在线性区Rds(on)远大于标称值。先测栅极电压。如果Type-C没插的时候栅极电压不是0V而是1V以上说明R2没有起到下拉作用检查R2是否虚焊或者阻值变大。再测锂电池电压。如果锂电池电压低于3.3VPMOS的Vgs可能不够负导致导通不充分。这时候要么换用低阈值电压的PMOS要么在栅极加一个电荷泵把电压拉得更低。还有一种可能是PMOS的源极和漏极焊反了。PMOS的源极要接锂电池正极漏极接输出。如果焊反了体二极管会导通但Rds(on)会大很多发热严重。4.3 Type-C插入时锂电池倒灌现象是Type-C插入后锂电池还有电流输出导致锂电池一边充电一边放电充电效率低锂电池发热。原因是PMOS没有完全关断。测栅极电压如果栅极电压只有3V左右而锂电池是4.2VVgs-1.2VPMOS可能处于微导通状态。检查R1和R2的分压比。如果R1470kΩR2470kΩ栅极电压就是2.5V肯定关不断。把R1改成10kΩ栅极电压接近5V问题解决。4.4 常见问题速查表现象可能原因排查方法解决方案切换时电压跌落大输出电容不足示波器测VOUT增加输出电容切换时电压跌落大栅极下拉电阻太大测栅极波形减小下拉电阻PMOS发热导通不充分测Vgs和Rds(on)换低阈值PMOSPMOS发热源漏焊反检查PCB丝印重新焊接锂电池倒灌栅极电压不够高测栅极电压调整分压比Type-C无输出肖特基焊反测二极管方向重新焊接静态功耗大下拉电阻太小测锂电池电流增大下拉电阻避坑技巧调试的时候先不要接负载空载测各路电压。空载正常了再接负载否则负载一接上去问题现象会变得很复杂分不清是电源问题还是负载问题。5. 进阶优化与扩展思路5.1 降低静态功耗如果设备长期靠锂电池待机静态功耗就很关键了。这个电路里静态功耗主要来自R2上的漏电流。Type-C没插的时候锂电池电压4.2VR2470kΩ漏电流4.2V/470kΩ≈9μA。这个数值对于大多数应用可以接受但如果你的设备要求待机电流小于1μA就需要把R2增大到4.7MΩ或者用MOS管做栅极下拉。用MOS管做下拉的思路是用一个NMOS栅极接Type-C的VBUS漏极接PMOS的栅极源极接地。Type-C没插的时候NMOS栅极是0VNMOS关断PMOS栅极通过一个4.7MΩ的电阻下拉到地漏电流只有0.9μA。Type-C插入的时候NMOS栅极是5VNMOS导通把PMOS栅极拉到地PMOS关断。这个方案稍微复杂一点但静态功耗可以做到1μA以下。5.2 增加软启动功能有些负载在刚上电的时候电流很大比如电机或者大电容负载。如果PMOS直接导通瞬间电流可能超过PMOS的额定值导致损坏。软启动的思路是在PMOS的栅极加一个RC网络让栅极电压缓慢下降PMOS缓慢导通。具体做法是在R2两端并联一个电容C3比如100nF。Type-C拔出的时候栅极通过R2和C3放电放电时间常数τR2×C3470kΩ×100nF47ms。PMOS在47ms内逐渐导通输出电流缓慢上升避免了浪涌。但软启动也有副作用切换时间变长了如果系统对切换速度有要求就要在软启动和切换速度之间折中。我一般用10nF到100nF之间的电容切换时间控制在10ms到50ms之间。5.3 防反接保护如果锂电池接反了PMOS的体二极管会导通大电流直接烧毁PMOS。虽然锂电池接反的概率不高但设计的时候最好留一手。最简单的防反接是在锂电池路径上串联一个肖特基二极管但这样会增加压降得不偿失。更好的办法是用一个NMOS做防反接NMOS的源极接锂电池负极漏极接系统地栅极接锂电池正极。锂电池正接的时候NMOS导通压降只有几十毫伏。锂电池反接的时候NMOS关断电路断开。这个NMOS的选型和PMOS类似Rds(on)要小Vgs(th)要低。我一般用AO3400和AO3401配对使用。5.4 扩展应用多路供电切换这个电路可以扩展到多路供电切换。比如同时有Type-C、锂电池、太阳能板三路输入可以用两个PMOS分别控制锂电池和太阳能板Type-C路径用肖特基隔离。控制逻辑是一样的哪一路有电就关断其他路的PMOS。需要注意的是多路切换的时候各路之间的优先级要明确。一般Type-C优先级最高其次是太阳能板最后是锂电池。优先级高的路径有电的时候优先级低的路径PMOS要关断。这个逻辑可以用二极管和电阻网络实现也可以用比较器实现。6. 实测数据与经验总结6.1 实测波形分析我用示波器抓过切换瞬间的波形。Type-C从5V拔出的瞬间VOUT从4.5V开始跌落最低跌到4.2V然后PMOS导通VOUT恢复到4.15V锂电池4.2V减去PMOS压降50mV。整个跌落过程持续约800μs跌落幅度300mV。这个波形说明两个问题一是输出电容的储能确实起到了缓冲作用如果没有电容跌落幅度会更大二是PMOS的导通速度还可以800μs的恢复时间对于大多数MCU来说足够安全。如果把输出电容从10μF增加到100μF跌落幅度可以减小到150mV左右。如果把R2从470kΩ减小到100kΩ恢复时间可以缩短到200μs左右。两者同时优化跌落幅度100mV以内恢复时间200μs以内基本可以做到“无感切换”。6.2 不同负载条件下的表现空载的时候切换波形很干净跌落很小。带载1A的时候跌落幅度明显增大因为负载电流会加速电容放电。带载2A的时候跌落幅度可能达到500mV以上这时候就需要更大的输出电容或者更快的切换速度。我实测过输出电容100μF负载1A跌落幅度约200mV。输出电容220μF负载2A跌落幅度约250mV。如果负载是脉冲式的比如无线模块发射的时候瞬间电流2A平均电流只有100mA那输出电容可以适当减小因为脉冲持续时间短电容放电量不大。6.3 温度对切换的影响常温下表现很好的电路到了高温环境可能出问题。PMOS的Rds(on)随温度升高而增大常温50mΩ到了85°C可能变成80mΩ。肖特基的Vf随温度升高而减小但反向漏电流会显著增大。我在85°C环境下测过PMOS压降从75mV增加到120mV肖特基压降从0.5V减小到0.4V。整体效率变化不大但PMOS的发热会增加如果散热不好可能进入热失控。所以高温环境下PMOS的余量要留足。常温2A的负载高温下最好按2.5A选型。肖特基的反向漏电流在高温下可能达到1mA以上如果Type-C没插的时候这个漏电流会从锂电池经过肖特基倒灌到Type-C接口虽然不会损坏电路但会浪费电量。如果对静态功耗要求高高温环境下要选反向漏电流小的肖特基。6.4 个人经验总结这个电路我做过不下十个项目踩过的坑主要集中在三个地方一是PMOS栅极分压比没算对导致关不断二是输出电容太小切换时跌落大三是PCB布局没做好栅极引入噪声导致PMOS误导通。我的建议是第一版PCB一定要留足够的调试空间PMOS的栅极电阻和输出电容都留上料位置调试的时候根据实测波形调整。不要一上来就追求最小BOM先把功能调通再优化成本和尺寸。另外PMOS的栅极走线要尽量短如果实在走不开可以在栅极和源极之间加一个100pF的电容滤掉高频噪声。这个电容在Type-C插入的时候会影响关断速度但100pF很小影响可以忽略。最后如果你用的是软包锂电池注意锂电池的保护板本身也有内阻一般在50mΩ到100mΩ之间。这个内阻和PMOS的Rds(on)叠加在一起总压降可能达到150mΩ以上。选PMOS的时候要把这个因素考虑进去否则锂电池快没电的时候输出电压可能低于后级的最低工作电压。