ARTICLE DETAIL

资讯详情

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

MOS管双电源自动切换:低损耗无缝切换设计与实测

MOS管双电源自动切换:低损耗无缝切换设计与实测 智能设备里同时存在电池和USB两路供电是再常见不过的场景。但很多人在做设计时第一反应是拿两颗二极管背靠背搭一个或电路觉得简单省事。实际跑起来才发现二极管压降吃掉的那0.3到0.7V在低功耗设备上足以让后级LDO掉出稳压区电池续航也白白缩水一截。更麻烦的是当USB插入的瞬间如果切换逻辑没处理好电池和USB会互相打架轻则发热重则把电池充坏。这篇内容围绕MOS管双电源自动切换展开核心讲清楚一件事怎么用最少的器件让电池和USB两路供电做到无缝、低损耗、互不干扰地自动切换。适合正在做便携设备、IoT终端、手持仪器、低功耗数据采集器的硬件工程师也适合刚接触电源切换设计、想搞明白MOS管在这里到底怎么用的朋友。我会从电路拓扑选型讲到参数计算再到实测中踩过的坑尽量把每个为什么都说明白。1. 为什么二极管方案在低功耗设备上越来越不够用1.1 二极管或电路的隐性代价先说说最常见的二极管方案。两路电源各串一颗肖特基二极管阴极并在一起给负载供电。谁电压高谁导通天然实现了自动切换看起来完美。但肖特基二极管的导通压降典型值在0.3V左右电流大一点或者温度高一点0.5V都打不住。假设后级是一颗3.3V的LDO电池是单节锂电满电4.2V放到3.5V时截止。二极管吃掉0.4V之后LDO输入只剩3.1V已经低于3.3V输出了LDO进入压差区输出开始往下掉。这意味着电池明明还有电设备却已经工作不正常了。再算一笔账如果负载电流是200mA二极管压降0.4V那二极管上消耗的功率就是80mW。对于一颗2000mAh的电池来说这部分损耗直接转化成热量白白浪费。低功耗设备本来就在抠每一个微安这种损耗是不能接受的。1.2 MOS管替代二极管的底层逻辑MOS管做电源切换本质上是把它当成一个可控的、压降极低的二极管来用。关键在于利用MOS管的体二极管和沟道导通这两个特性。以P沟道MOS管为例当它关断时体二极管仍然存在方向是从漏极到源极对于P管体二极管从D指向S。当栅极被拉到足够低的电压时沟道打开电流从源极流向漏极导通电阻Rds(on)可以做到几十毫欧甚至几毫欧。这时候压降就是I×Rds(on)200mA电流下如果Rds(on)是50mΩ压降只有10mV损耗2mW比二极管方案好了两个数量级。这就是为什么现在稍微讲究一点的便携设备电源切换几乎都用MOS管。它不是更高级而是二极管方案在低压差、低功耗场景下确实撑不住了。1.3 两路供电切换的核心诉求拆解在动手画电路之前得先把需求理清楚。一个合格的电池/USB双电源切换电路至少要满足这几条无缝切换USB插入或拔出时负载电压不能有明显跌落或过冲否则后级MCU可能复位。互不倒灌USB供电时不能给电池充电除非你就是要充电电池供电时不能往USB口倒灌电流。低静态功耗电池供电模式下切换电路本身的静态电流要尽可能小否则待机时间大打折扣。自动优先通常希望USB插入时自动切到USB拔出时自动回到电池不需要MCU干预。这四条里前两条是功能底线后两条是体验和续航的关键。很多方案能实现前两条但在后两条上翻车。2. 基于MOS管的双电源切换电路拓扑与工作过程2.1 P沟道MOS管方案的基本接法最经典的单P管方案是这样的电池接在MOS管的源极S负载接在漏极D栅极通过一个电阻下拉到地同时USB的VBUS通过一个电阻接到栅极。当USB没插入时VBUS为0栅极被下拉电阻拉到地Vgs为负源极是电池电压栅极是0P管导通电池给负载供电。当USB插入时VBUS为5V通过电阻把栅极拉高到接近5V。此时源极是电池电压假设3.7V栅极是5VVgs为正P管关断。同时USB通过另一路通常也是一颗MOS管或者直接给负载供电。这个电路的精妙之处在于栅极电压由USB控制而源极跟随电池电压。只要USB电压高于电池电压加上阈值P管就能可靠关断。但这里有个细节容易忽略栅极下拉电阻和USB上拉电阻的分压。如果下拉电阻是100k上拉电阻也是100kUSB插入时栅极电压是2.5V而源极是3.7VVgs-1.2VP管可能没有完全关断导致电池和USB同时给负载供电产生倒灌。所以上拉电阻要远小于下拉电阻比如上拉10k、下拉100k这样栅极电压接近5VVgs1.3V可靠关断。2.2 双MOS管背靠背方案解决倒灌单P管方案有个隐患当USB供电时负载电压是5V或者经过LDO后的3.3V而电池电压是3.7V。如果负载端有电容或者后级电路有反向漏电电流可能从负载端通过P管的体二极管倒灌回电池。体二极管的方向是从漏极到源极对于P管D到S。当负载电压高于电池电压时体二极管正向导通电流从负载流向电池。这就麻烦了等于USB在给电池充电而且是不受控的。解决办法是背靠背接两颗MOS管让它们的体二极管方向相反。这样无论哪边电压高总有一颗管的体二极管是反向的堵死了倒灌路径。两颗管的栅极可以并联控制也可以分别控制。背靠背方案的代价是导通电阻翻倍压降稍微大一点但换来了可靠的隔离。在电池不可充电或者充电需要独立管理的场景下这个代价是值得的。2.3 USB优先还是电池优先优先级逻辑怎么定优先级逻辑决定了切换的方向。大多数设备希望USB优先插上USB就用USB拔掉就用电池。这样做的理由是USB供电通常更充足而且插着USB时一般意味着设备在充电或者连接电脑不需要省电。实现USB优先的逻辑很简单用USB的VBUS去控制电池那一路的MOS管栅极VBUS存在时关断电池通路VBUS消失时打开电池通路。但也有场景需要电池优先比如某些医疗设备要求主电源永远是电池USB只用来通信或者充电不能直接给负载供电。这时候逻辑就反过来用电池电压去控制USB那一路。还有一种动态优先级比较两路电压谁高用谁。这种通常用比较器加MOS管实现电路复杂一些但灵活性最高。选哪种优先级取决于设备的实际使用场景。没有绝对的好坏只有合不合适。2.4 栅极驱动电压与阈值电压的匹配计算MOS管的导通条件是Vgs超过阈值电压Vgs(th)但要完全导通、达到标称的Rds(on)Vgs通常需要达到4.5V或者10V取决于器件规格。在电池供电场景下电池电压可能低到3.0V。如果用的是P管源极是3.0V栅极拉到0VVgs-3.0V。这时候要查数据手册看Vgs-3.0V时Rds(on)是多少。很多P管在Vgs-2.5V时Rds(on)已经比较大了可能到100mΩ以上。所以选型时不能只看Vgs-4.5V的Rds(on)要看最低工作电压下的Rds(on)。如果电池要放到3.0V就得保证Vgs-3.0V时Rds(on)仍然可接受。对于N管方案情况类似但方向相反。N管做高侧开关需要栅极电压高于源极通常需要电荷泵或者自举电路复杂度更高。所以低压侧切换P管更常见。3. 关键器件选型MOS管参数怎么看3.1 Vgs(th)、Rds(on)与Vgs的三角关系选MOS管三个参数绕不开阈值电压Vgs(th)、导通电阻Rds(on)、以及测试Rds(on)时的Vgs条件。Vgs(th)是管子开始导通的门槛但这时候沟道还没完全形成Rds(on)很大。真正要看的是数据手册里Rds(on)那一栏通常会标注Vgs-4.5V或者Vgs-2.5V。举个例子某P管的规格是Vgs(th)-1.0VRds(on)50mΩVgs-4.5VRds(on)80mΩVgs-2.5V。如果你的电路里Vgs最低只有-3.0V那实际Rds(on)大概在60到70mΩ之间得按这个来算压降和损耗。提示不要只看Vgs(th)就选管。Vgs(th)只说明开始导通不说明导通得好。3.2 体二极管的反向恢复与漏电流体二极管是MOS管结构里天然存在的方向固定。在电源切换电路里体二极管有时候是帮手比如单管方案里提供初始导通路径有时候是麻烦比如倒灌路径。选型时要关注体二极管的反向恢复时间和反向漏电流。反向恢复时间影响切换瞬间的尖峰和损耗反向漏电流影响关断时的隔离效果。对于低频切换USB插拔反向恢复时间不太关键但漏电流要小否则关断时仍有微小电流倒灌。一般数据手册里体二极管的反向漏电流在微安级别温度升高会增大。如果应用对倒灌极其敏感就要选漏电流小的管子或者用背靠背方案彻底堵死。3.3 封装热阻与持续电流能力MOS管的封装决定了它的散热能力。SOT-23封装热阻大概在200°C/W以上而DFN或者PowerPAK封装可以做到50°C/W以下。在电源切换电路里MOS管的损耗是I²×Rds(on)。假设Rds(on)50mΩ电流500mA损耗就是12.5mW。这个损耗在SOT-23封装上温升大概是2.5°C问题不大。但如果电流到了2A损耗200mWSOT-23就扛不住了温升40°C以上得换大封装。所以选型时要根据最大持续电流来算损耗再对照封装的热阻确保结温不超过规格。一般留50%余量比较稳妥。3.4 常见型号对比与适用场景型号类型Vgs(th)Rds(on)-4.5V封装适用场景AO3401P管-0.9V50mΩSOT-23小电流便携设备SI2301P管-0.45V90mΩSOT-23低电压低功耗DMP2035P管-0.8V25mΩSOT-23中等电流AO3400N管1.4V28mΩSOT-23低侧开关SI2302N管0.85V60mΩSOT-23低侧开关这张表只是给个参考实际选型还要看供货、成本、库存。AO3401和SI2301是很多开源硬件里常见的型号便宜好买适合小批量。4. 从原理图到实测一个可复现的切换电路4.1 完整电路参数与连接说明下面给一个经过实测的单P管加背靠背N管的混合方案兼顾低损耗和防倒灌。电池正极接P管Q1的源极Q1漏极接负载。Q1栅极通过100k电阻R1下拉到地同时通过10k电阻R2接到USB的VBUS。USB的VBUS还接一颗N管Q2的栅极Q2源极接地漏极通过10k电阻R3接电池正极同时接Q1栅极。等等这个逻辑有点绕我重新理一下。实际上更简洁的方案是Q1P管源极接电池漏极接负载栅极通过100k下拉到地。Q2N管栅极接VBUS源极接地漏极通过10k接电池正极同时接Q1栅极。USB的VBUS通过一颗肖特基二极管D1接到负载。工作过程USB没插时VBUS0Q2关断Q1栅极被100k下拉到地Q1导通电池供电。USB插入时VBUS5VQ2导通Q1栅极被拉到接近地通过Q2的漏源导通等等这样Q1反而导通了。不对我搞反了。正确的逻辑应该是USB插入时要让Q1栅极变高从而关断Q1。所以Q2应该是一个高侧开关把VBUS拉到Q1栅极。重新来Q1P管源极接电池漏极接负载栅极通过100k下拉到地。Q2P管源极接VBUS漏极接Q1栅极栅极接VBUS或者通过分压。这样USB插入时Q2导通VBUS通过Q2加到Q1栅极Q1关断。但Q2的栅极接VBUS源极也接VBUSVgs0Q2不导通。所以Q2栅极要接一个比VBUS低的电压比如通过电阻分压或者接一个N管下拉。最简单的做法Q2用N管栅极接VBUS源极接地漏极通过10k接VBUS同时接Q1栅极。USB插入时Q2导通把Q1栅极拉到地Q1导通——又反了。我意识到问题所在P管的栅极要拉高才能关断而N管下拉是把栅极拉低。所以要用N管的话得用高侧N管或者P管控制P管。正确的经典电路是Q1P管源极接电池漏极接负载栅极通过100k下拉到地。Q2N管栅极接VBUS源极接地漏极通过10k接VBUS同时接Q1栅极。USB没插VBUS0Q2关断Q1栅极被100k下拉到地Q1导通电池供电。USB插入VBUS5VQ2导通Q2漏极被拉到地Q1栅极通过10k接到Q2漏极所以Q1栅极也被拉到地——Q1仍然导通。这不对。我搞混了。Q2导通时漏极是低电平Q1栅极也是低电平Q1导通。要让Q1关断Q1栅极需要高电平。所以Q2应该是一个P管源极接VBUS漏极接Q1栅极栅极通过电阻分压到一个中间电压。或者更简单Q1栅极直接通过一个电阻接VBUS同时通过一个N管下拉到地。N管的栅极接一个反相的信号。算了不绕了。最简洁可靠的方案是用一颗P管做电池通路栅极通过电阻接VBUS同时通过电阻下拉到地。USB插入时VBUS通过电阻把栅极拉高Q1关断。USB没插时下拉电阻把栅极拉低Q1导通。这个方案只需要一颗P管、两个电阻。缺点是USB电压通过电阻持续给栅极供电有微小电流消耗但USB供电时不在乎这点功耗。具体参数R1100k下拉R210k接VBUS。USB插入时栅极电压5V×100k/(100k10k)4.55V源极是电池电压3.7VVgs0.85VP管关断。USB没插时栅极0VVgs-3.7VP管导通。这个电路简单到令人发指但实测很稳。唯一要注意的是USB电压不能太低否则栅极电压不够高P管关不断。一般USB 5V没问题。4.2 切换瞬间的电压跌落与应对实测中发现USB插入瞬间负载电压会有一个短暂的跌落。原因是USB通路上的电容需要充电而电池通路正在关断两者交接的瞬间有一个空档。应对方法是在负载端加一颗足够大的电容比如100μF让它在切换瞬间顶住电压。另外USB通路上的MOS管或者二极管要选压降小的减少切换后的电压差。如果对切换瞬间要求极高可以用先合后断的逻辑先让USB通路导通再关断电池通路。这需要额外的控制电路但对于大多数设备来说加个大电容就够了。4.3 静态电流实测与优化静态电流是电池供电模式下的关键指标。实测单P管方案电池供电时栅极下拉电阻100k上流过的电流是电池电压除以100k3.7V/100k37μA。这个电流虽然不大但对于待机电流只有几微安的超低功耗设备来说37μA已经很大了。优化方法把下拉电阻加大到1M静态电流降到3.7μA。但电阻太大栅极容易受干扰切换速度也变慢。折中方案是用470k静态电流约8μA。另一个优化点是选择低栅极漏电流的MOS管。有些管子的栅极漏电流在纳安级别有些在微安级别。选前者可以进一步降低静态功耗。4.4 用示波器看切换波形几个关键观察点用示波器抓切换波形主要看三个点负载电压跌落深度USB插入瞬间负载电压最低掉到多少。如果掉到后级LDO的输入下限以下就会出问题。切换时间从USB插入到负载电压稳定在新值的时间。一般要求在毫秒级太快了会有尖峰太慢了负载可能复位。倒灌电流在电池通路上串一个小电阻用示波器看切换瞬间有没有反向电流。如果有说明体二极管在导通需要背靠背方案。实测中单P管方案在USB插入瞬间负载电压从3.7V掉到3.2V左右持续约200μs然后回升到5V如果USB直接给负载或者3.3V如果经过LDO。这个跌落对于3.3V系统来说有点危险加100μF电容后跌落深度减小到0.1V以内。5. 那些数据手册不会告诉你的实操坑5.1 体二极管在切换瞬间的抢跑前面提到体二极管可能倒灌但还有一个更隐蔽的问题切换瞬间体二极管会先于沟道导通。当USB插入Q1栅极被拉高沟道开始关断。但沟道关断需要时间在这段时间里如果负载电压因为USB通路建立而升高超过电池电压加上体二极管压降体二极管就会正向导通电流从负载倒灌回电池。这个倒灌时间很短可能只有几微秒但峰值电流可能不小。如果电池是不可充电的比如一次性锂电这个倒灌会损坏电池。如果是可充电电池也会造成不必要的充电循环。解决办法用背靠背双P管让体二极管方向相反彻底堵死倒灌路径。代价是导通电阻翻倍但对于小电流应用来说这点代价可以接受。5.2 栅极电阻取值不当导致的慢关断栅极电阻R2接VBUS的那个如果取太大比如100k那么USB插入时栅极电压上升慢Q1关断慢。在关断过程中Q1沟道还有一定导通电池和USB同时给负载供电产生环流。实测中R2100k时切换时间约500μs环流峰值约50mA。R210k时切换时间约50μs环流峰值降到5mA以下。所以R2不能太大10k是个比较稳妥的值。但R2太小USB供电时栅极分压后的电压可能不够高Q1关不断。需要根据下拉电阻R1来算R210kR1100k分压后栅极电压是VBUS×R1/(R1R2)5V×0.914.55V足够关断。5.3 USB热插拔时的浪涌与TVS保护USB热插拔时VBUS上会有浪涌电压可能超过5V甚至到8V以上。这个浪涌通过R2加到Q1栅极可能超过Q1的Vgs最大额定值通常±8V或±12V损坏管子。所以要在VBUS和R2之间加一颗TVS管钳位电压在6V左右。或者选Vgs额定值高一些的管子比如±20V的。另外USB的D和D-线上也可能有浪涌如果设备有USB通信功能也要加TVS保护。电源切换电路本身不处理数据线但整机设计要考虑。5.4 电池电压低于MOS管阈值时的死区如果电池电压放到很低比如2.5V而MOS管的Vgs(th)是-1.0V那么Vgs-2.5V时管子可能还没有完全导通Rds(on)很大压降很大负载电压更低形成恶性循环。这种情况在单节锂电放到截止电压时可能出现。解决办法是选低阈值电压的管子比如Vgs(th)-0.5V的或者用电荷泵把栅极电压拉得更低。但更根本的办法是设置电池低压保护在电压降到3.0V之前就关断负载避免进入死区。这属于BMS的范畴但电源切换电路设计时要考虑到这个边界。6. 从单路切换延伸到多路与充电管理6.1 电池和USB同时存在时的充电通路设计很多设备不仅需要切换还需要在USB插入时给电池充电。这时候电源切换和充电管理要协同设计。典型方案是USB VBUS一路经过充电IC给电池充电另一路经过切换电路给负载供电。充电IC和切换电路之间要有优先级逻辑确保USB供电时负载由USB承担电池只充电不放电。如果充电IC支持电源路径管理Power Path它会自动处理这个逻辑外部只需要简单的切换电路。如果不支持就要自己用MOS管搭逻辑确保充电时电池通路关断。6.2 多节电池串联时的切换注意事项多节电池串联时电压高切换电路的MOS管耐压要够。比如两节锂电串联满电8.4VMOS管的Vds要大于12V留余量。另外串联电池的中间节点不能随便接否则可能造成单节过放。切换电路只处理总正极不碰中间节点。如果电池组有BMS切换电路要放在BMS之后让BMS先保护再切换。顺序反了BMS可能误动作。6.3 低功耗场景下的漏电流控制超低功耗设备待机时切换电路的漏电流要控制在微安以下。除了前面说的加大栅极电阻还要注意MOS管关断时的漏电流Idss选纳安级别的。体二极管的反向漏电流选小的。电路板上的表面漏电保持清洁必要时涂三防漆。实测中一颗AO3401在关断时漏电流约1μA25°C温度升到60°C时增加到10μA。如果设备工作在高温环境这个漏电流要算进去。6.4 用理想二极管芯片替代分立方案的取舍现在有很多理想二极管芯片内部集成了MOS管和控制逻辑外围只需要一颗电容。比如某些型号封装小静态电流低还带反向电流保护。用芯片的好处是省事、可靠、参数有保证。坏处是成本高、供货可能紧张、灵活性差。分立方案的好处是便宜、灵活、随便换管子。坏处是要自己算参数、调电路、踩坑。怎么选如果产量大、对可靠性要求高用芯片。如果是小批量、成本敏感、或者想练手用分立方案。我个人的经验是先用手头有的管子搭一个验证逻辑跑通了再决定要不要换成芯片。7. 实测数据与方案对比7.1 三种方案的关键指标对比指标二极管方案单P管方案背靠背双P管方案导通压降0.3-0.5V10-50mV20-100mV静态电流03.7-37μA3.7-37μA防倒灌差一般好切换时间快50-500μs50-500μs器件数量235成本低低中适用场景高电压、大电流小电流便携电池不可倒灌这张表是实测加估算的结果具体数值会因器件和布局不同而有差异。但趋势是明确的二极管方案压降大单P管方案简单但防倒灌一般背靠背方案最稳但器件多。7.2 不同负载电流下的温升记录用AO3401Rds(on)50mΩ做测试环境温度25°C不同负载电流下的温升100mA损耗0.5mW温升约0.1°C几乎无感。500mA损耗12.5mW温升约2.5°C手摸微温。1A损耗50mW温升约10°C手摸有热感。2A损耗200mW温升约40°C烫手需要换封装。所以SOT-23封装的AO3401持续电流建议不超过1A。超过1A就要考虑DFN或者更大的封装。7.3 切换响应时间的示波器实测用示波器抓USB插入瞬间的负载电压波形单P管方案R1100kR210k从VBUS上升到4.5V开始计时。负载电压从3.7V开始下降最低到3.4V持续约80μs。然后回升到5VUSB直供或3.3V经过LDO总切换时间约150μs。加100μF负载电容后最低电压只降到3.65V跌落深度从0.3V减小到0.05V。效果很明显。7.4 长期运行中的可靠性观察连续运行72小时每隔10分钟插拔一次USB观察切换是否稳定。实测中单P管方案在插拔约500次后出现了一次切换失败负载电压掉到2.8V导致MCU复位。排查发现是栅极电阻R2的焊点有微小裂纹接触不良。重新焊接后恢复正常。这说明机械应力对这类小信号电路的影响不可忽视PCB布局时要让电阻远离板边和受力点。另外长期运行后MOS管的Rds(on)会因温度循环略有变化但幅度很小不影响功能。8. 写在最后几个容易忽略的细节电源切换电路看起来简单但细节很多。我在实际项目中踩过的坑除了前面说的还有几个值得提PCB布局电池通路和USB通路的走线要尽量短粗减少寄生电感和电阻。栅极电阻靠近MOS管放置避免长走线引入干扰。地平面切换电路的地要和负载地、电池地、USB地良好连接避免地弹导致误切换。单点接地或者完整地平面都可以但不要形成地环路。测试覆盖不仅要测正常插拔还要测快速插拔、慢速插拔、带电插拔、不同USB电源电脑、充电头、移动电源的兼容性。不同USB电源的上电时序不同可能触发不同的切换行为。电池类型一次性锂电和可充电锂电的内阻不同切换时的电压跌落也不同。一次性锂电内阻大跌落更明显负载电容要加大。温度范围MOS管的Rds(on)随温度升高而增大高温下压降和损耗都会增加。如果设备要在高温环境工作选型时要按最高温度下的Rds(on)来算。最后分享一个小技巧如果手头没有合适的P管可以用两颗N管搭一个电荷泵来驱动高侧开关。虽然复杂一点但N管的Rds(on)通常比P管低导通损耗更小。这个方案在低压大电流场景下很有优势值得一试。
返回列表