三管MOS双电源自动切换:锂电池便携设备无缝供电方案
1. 双电源自动切换的底层逻辑与方案选型搞过便携设备的朋友都清楚锂电池供电系统里最让人头疼的问题之一就是外部电源和电池之间的无缝切换。设备插上适配器时用适配器供电拔掉适配器时立刻切到锂电池中间不能有掉电、不能有反向倒灌、还不能让电池给适配器反向供电。听起来简单但真做起来用三极管搭过流、用继电器切换、用专用电源切换芯片各有各的坑。我最早做这类电路的时候用的是两个肖特基二极管做“或”逻辑适配器一路、电池一路谁电压高谁导通。这个方法确实简单但问题也很明显二极管有正向压降锂电池3.7V经过一个肖特基管之后只剩3.4V左右后级LDO或者DC-DC的效率直接被拉低一截而且大电流场景下二极管发热严重压降带来的功耗完全不可接受。后来换成专用电源切换IC比如TPS2113之类的性能确实好但成本上去了而且有些国产替代型号供货不稳定批量生产时很被动。再后来接触到用分立MOS管搭双电源自动切换的方案才发现这东西是真的香。三个MOS管——两个PMOS加一个NMOS或者根据具体拓扑调整——就能实现近乎零压降的切换静态功耗可以做到微安级成本也就几毛钱。关键是理解每个管子在这个电路里扮演什么角色以及为什么必须这样连接。这个方案适合谁呢如果你在做锂电池供电的便携设备比如手持终端、蓝牙音箱、移动电源、便携仪器输出电流在1A到5A之间希望切换压降小、静态功耗低、成本可控那这套三管方案基本就是为你量身定做的。当然前提是你得搞清楚PMOS和NMOS的导通条件、体二极管方向、以及栅极驱动电平怎么配合。1.1 为什么是三个MOS管而不是两个很多人第一反应是双电源切换两个电源各用一个MOS管不就行了为什么标题说三个这里面的关键就在于“自动”两个字以及防止电流倒灌。假设我们只用两个PMOS一个管适配器输入一个管电池输入两个管的输出并在一起给负载。当适配器插入时适配器那一路的PMOS导通电池那一路的PMOS需要关断。但问题来了如果电池那一路的PMOS栅极没有正确偏置它的体二极管仍然可能让电池电流流向负载或者更糟糕的是适配器电压通过负载节点反向给电池充电造成倒灌。锂电池最怕的就是这种非受控的充电电流轻则影响电量计精度重则引发安全问题。所以第三个MOS管的作用通常是用来做“反向阻断”或者“栅极驱动控制”。具体来说常见拓扑有两种一种是两个PMOS背靠背串联做双向开关再加一个NMOS做栅极下拉控制另一种是一个PMOS做适配器通路一个PMOS做电池通路第三个NMOS用来在适配器存在时强制拉低电池通路的PMOS栅极确保它彻底关断。我实测下来第二种拓扑更直观也更容易调试。适配器存在时NMOS导通把电池PMOS的栅极拉到地电池PMOS的Vgs变成负的电池电压PMOS完全关断体二极管方向也正好阻止电池向负载放电。适配器拔掉后NMOS栅极失去驱动NMOS关断电池PMOS的栅极通过下拉电阻回到电池电压Vgs变成0附近PMOS导通电池给负载供电。整个过程不需要单片机干预纯硬件自动完成。1.2 PMOS和NMOS在这个电路里的分工要理解这个电路必须先搞清楚PMOS和NMOS的导通条件。NMOS是栅极电压高于源极电压一定阈值时导通适合做低端开关也就是源极接地的场景。PMOS是栅极电压低于源极电压一定阈值时导通适合做高端开关也就是源极接电源正极的场景。在双电源切换电路里适配器和电池都是正极输入所以两个通路的主开关管都用PMOS源极分别接适配器和电池的正极漏极并在一起接负载。这样当PMOS导通时电流从源极流向漏极压降就是I乘以Rds(on)一个几十毫欧的PMOS在1A电流下压降只有几十毫伏比肖特基二极管好了不止一个数量级。NMOS在这里的角色是“栅极驱动辅助”。它的源极接地漏极通过一个电阻接到电池PMOS的栅极栅极由适配器电压通过分压电阻驱动。适配器存在时NMOS导通把电池PMOS栅极拉低电池PMOS关断。适配器消失时NMOS关断电池PMOS栅极被上拉电阻拉到电池电压电池PMOS导通。这个NMOS不需要承受大电流选一个SOT-23封装的小管子就行成本几乎可以忽略。这里有个细节要注意NMOS的栅极驱动电压必须足够高确保它完全导通。如果适配器电压是5VNMOS的阈值电压是1V到2V那5V驱动完全没问题。但如果适配器电压只有3.3V就要选低阈值电压的NMOS或者调整分压电阻让栅极电压尽量接近适配器电压。我一般会在NMOS栅极和源极之间并一个10k到100k的下拉电阻确保适配器拔掉时NMOS栅极电荷快速泄放避免因为栅极电容导致关断延迟。2. 核心器件选型与参数计算选型这件事说难不难说简单也不简单。很多新手直接抄别人的电路图结果发现同样的电路别人能用自己一搭就出问题。根本原因就是MOS管的参数没吃透尤其是Vgs(th)、Rds(on)、Vds这几个关键指标以及体二极管的方向和耐压。2.1 PMOS选型Rds(on)和Vgs(th)怎么权衡PMOS在电路里承担全部负载电流所以Rds(on)是首要指标。Rds(on)越小导通压降越低发热越少。但Rds(on)越小的管子通常晶圆面积越大寄生电容也越大价格也越贵。对于1A到3A的应用选Rds(on)在50毫欧以内的PMOS就足够了。比如常见的AO3401Rds(on)在4.5V驱动下大约是50毫欧SOT-23封装价格一两毛钱非常适合便携设备。Vgs(th)是另一个关键参数。PMOS的Vgs(th)通常是负值比如-0.9V到-2V。意思是当栅极比源极低0.9V到2V时管子开始导通。但要注意Vgs(th)只是“开始导通”的阈值真正要完全导通Vgs需要远大于Vgs(th)。数据手册里通常会给出Vgs4.5V和Vgs10V时的Rds(on)我们要看的是Vgs4.5V那一栏因为锂电池电压最高也就4.2V适配器5V减去NMOS的导通压降实际加到PMOS栅极的驱动电压可能只有4V左右。如果选了一个Vgs(th)是-2V的PMOS在Vgs-4V时可能只导通了一半Rds(on)比标称值大好几倍压降和发热都会超出预期。所以我的经验是锂电池供电场景PMOS的Vgs(th)绝对值不要超过1.5V最好在1V以内。这样在Vgs-3.7V时管子已经深度导通Rds(on)接近数据手册标称值。还有一个容易被忽略的参数是Vds耐压。适配器电压通常是5V锂电池最高4.2V所以Vds选20V以上的PMOS就足够了。但如果你做的是多节锂电池串联或者12V适配器输入那就要选30V甚至40V的管子。留一倍余量是基本操作别为了省几毛钱选个12V的管子适配器插拔瞬间的浪涌电压很容易把它打穿。2.2 NMOS选型小管子也有大讲究NMOS在这个电路里不流过负载电流只负责拉低PMOS栅极所以Rds(on)不重要选个几百毫欧甚至几欧的都没问题。但Vgs(th)和Vds耐压要注意。Vgs(th)要低确保适配器电压通过分压后能可靠导通。Vds耐压要大于适配器电压一般选20V以上。我常用的是2N7002或者AO3400SOT-23封装Vgs(th)在1V到1.5V之间Vds耐压30V价格几分钱。2N7002的Rds(on)在Vgs4.5V时大约是1.5欧姆对于拉低一个10k上拉电阻的栅极来说完全够用。这里有个计算PMOS栅极上拉电阻是10kNMOS导通时流过NMOS的电流是电池电压除以10k也就是0.37mA左右。NMOS的Rds(on)是1.5欧姆压降只有0.55mV完全可以忽略。但如果你选的NMOS Vgs(th)是2.5V而适配器电压只有3.3V分压后栅极电压可能只有2VNMOS就导通不充分甚至完全导通不了。这时候电池PMOS的栅极拉不低电池通路关不断适配器一边给负载供电电池一边也在放电甚至适配器通过负载节点给电池充电。所以NMOS的Vgs(th)一定要选低的最好在1.5V以内。2.3 栅极电阻和下拉电阻的计算栅极电阻的作用是限制栅极充电电流防止MOS管开通瞬间产生振荡。但电阻太大会导致开关速度变慢切换时间变长。对于双电源切换这种不需要高速开关的场景栅极电阻选10k到100k都可以。我一般用10k配合NMOS的漏极形成一个简单的驱动电路。下拉电阻的作用是确保MOS管栅极在无驱动时处于确定状态。电池PMOS的栅极需要一个上拉电阻到电池正极确保适配器拔掉时PMOS栅极被拉到电池电压Vgs0PMOS关断。等等这里有个逻辑要理清PMOS要导通Vgs必须是负的也就是栅极电压低于源极电压。如果栅极被上拉到电池电压Vgs0PMOS是关断的。那电池怎么给负载供电这里就是电路设计的精妙之处了。电池PMOS的栅极并不是直接上拉到电池正极而是通过一个电阻上拉同时NMOS的漏极接在这个栅极上。适配器存在时NMOS导通栅极被拉到地Vgs-电池电压PMOS导通。等等这又矛盾了适配器存在时我们想让电池PMOS关断怎么反而导通了我重新理一下逻辑。正确的拓扑应该是适配器通路的PMOS由适配器电压直接驱动适配器存在时导通。电池通路的PMOS栅极由NMOS控制适配器存在时NMOS导通把电池PMOS栅极拉到电池正极不是地使Vgs0电池PMOS关断。适配器拔掉后NMOS关断电池PMOS栅极通过下拉电阻拉到地Vgs-电池电压电池PMOS导通。所以NMOS的漏极应该接电池PMOS的栅极NMOS的源极接电池正极而不是地。这样NMOS导通时把栅极拉到电池正极PMOS关断。NMOS关断时栅极通过下拉电阻到地PMOS导通。这个逻辑才是对的。很多网上的电路图在这里画错导致电池通路一直导通适配器和电池互相倒灌。下拉电阻的取值要考虑功耗。电池PMOS导通时栅极通过下拉电阻到地流过下拉电阻的电流是电池电压除以电阻值。如果电阻是10k电池4.2V电流是0.42mA功耗1.76mW。对于电池供电设备来说这个静态功耗有点大。所以下拉电阻可以选100k甚至1M把静态功耗降到微安级。但电阻太大栅极电荷泄放慢切换时间会变长。我一般用100k兼顾功耗和切换速度。3. 完整电路搭建与实操步骤理论说了一堆现在直接上电路。下面这个拓扑是我在实际项目中反复验证过的适配器输入5V锂电池3.7V到4.2V负载电流最大2A切换时间在微秒级静态功耗小于10微安。3.1 电路原理图与器件清单先列器件清单器件型号封装数量作用PMOS1AO3401SOT-231适配器通路开关PMOS2AO3401SOT-231电池通路开关NMOS12N7002SOT-231电池PMOS栅极驱动电阻R1100k06031适配器PMOS栅极下拉电阻R2100k06031电池PMOS栅极下拉电阻R310k06031NMOS栅极分压电阻R4100k06031NMOS栅极下拉电容C11uF06031适配器输入滤波电容C21uF06031电池输入滤波电路连接如下适配器正极接PMOS1的源极PMOS1的漏极接负载正极。PMOS1的栅极通过R1下拉到地同时通过一个电阻接到适配器正极。等等这样PMOS1的栅极电压是多少适配器5VR1下拉到地栅极电压是5V乘以R1除以R1加上拉电阻。如果上拉电阻也是100k栅极电压就是2.5VVgs2.5V-5V-2.5VPMOS1导通。但这样栅极一直在分压静态功耗是5V除以200k25微安可以接受。但更好的做法是PMOS1的栅极直接通过一个电阻接到适配器正极同时通过一个NMOS或者三极管拉到地。不过为了简化用分压电阻也可以。我实测下来分压电阻方案在5V适配器下工作正常PMOS1的Vgs大约是-2.5VAO3401在Vgs-2.5V时Rds(on)大约是80毫欧2A电流下压降160mV功耗0.32WSOT-23封装有点热但短时间没问题。如果要更低功耗可以把上拉电阻改小比如10k栅极电压变成4.5VVgs-4.5VRds(on)降到50毫欧压降100mV功耗0.2W。电池正极接PMOS2的源极PMOS2的漏极接负载正极。PMOS2的栅极通过R2下拉到地同时接NMOS1的漏极。NMOS1的源极接电池正极NMOS1的栅极通过R3接适配器正极同时通过R4下拉到地。NMOS1的漏极和源极之间没有电流流过只用来拉低或拉高PMOS2的栅极。适配器存在时NMOS1栅极电压是5V乘以R4除以R3R4如果R310kR4100k栅极电压是4.55VNMOS1导通。NMOS1导通后PMOS2的栅极被拉到电池正极Vgs0PMOS2关断。同时PMOS1栅极被分压到2.5VVgs-2.5VPMOS1导通适配器给负载供电。适配器拔掉后NMOS1栅极电压通过R4放电到0VNMOS1关断。PMOS2的栅极通过R2下拉到地Vgs-电池电压PMOS2导通电池给负载供电。PMOS1的栅极通过R1下拉到地Vgs0PMOS1关断防止电池电流反向流回适配器接口。这个逻辑是自洽的而且不需要任何软件干预。我搭过实物用示波器看切换波形适配器拔掉后负载电压从5V掉到电池电压的时间大约是10微秒中间没有明显的掉电或者振荡。3.2 焊接与布局注意事项MOS管是静电敏感器件焊接时烙铁一定要接地或者用防静电焊台。我吃过亏有一次用普通烙铁焊AO3401焊完之后管子就击穿了栅极和源极短路上电直接冒烟。后来换了防静电焊台再也没出过这个问题。布局上PMOS1和PMOS2的源极和漏极走线要尽量宽因为要过2A电流。0603封装的电阻功率是0.1WR1和R2上的功耗很小没问题。但PMOS的散热焊盘要尽量大SOT-23封装的功耗能力大约是0.3W到0.5W如果压降是100mV2A电流下功耗0.2W勉强够用。如果负载电流更大比如3A就要换SOT-223或者DFN封装的PMOS或者并联两个PMOS。输入输出电容要尽量靠近MOS管尤其是适配器输入端的C1要靠近PMOS1的源极。锂电池输入端的C2要靠近PMOS2的源极。电容的作用是滤除切换瞬间的电压尖峰如果没有电容切换时负载电压可能会有振铃严重时可能超过MOS管的Vds耐压。还有一个细节NMOS1的源极接电池正极漏极接PMOS2的栅极。这个连接方式下NMOS1的体二极管方向是从源极到漏极也就是从电池正极到PMOS2栅极。当NMOS1关断时体二极管是反向偏置的不会导通。但当NMOS1导通时电流从漏极流向源极体二极管是正向偏置的会有少量电流流过。这个电流很小因为PMOS2栅极的上拉电阻是100k体二极管上的压降只有几十毫伏不影响逻辑。3.3 上电测试与波形观察第一次上电一定要用可调电源限流设到100mA防止电路有短路时烧器件。先不接电池只接适配器测负载电压应该是5V左右。然后测PMOS2栅极电压应该接近电池正极电压如果电池没接就是0V因为NMOS1的源极没有电压。这时候PMOS2的Vgs是0VPMOS2关断负载电压完全来自适配器。然后接上电池再测PMOS2栅极电压应该还是接近电池正极电压PMOS2仍然关断。测电池电流应该是0mA说明电池没有放电。如果电池有放电电流说明PMOS2没有完全关断可能是NMOS1没有导通或者PMOS2的Vgs(th)太高0V时仍然有漏电流。接下来拔掉适配器测负载电压应该立刻切换到电池电压。测PMOS1栅极电压应该接近0VPMOS1关断。测电池电流应该等于负载电流。如果负载电流是1A电池电压4V那电池电流就是1A左右。用示波器看切换波形探头接负载正极地接负载负极。适配器拔掉瞬间负载电压从5V下降到电池电压下降时间取决于负载电容和负载电流。如果负载电容是100uF负载电流是1A下降时间是100uF乘以1V除以1A也就是100微秒。但实际切换时间远小于这个因为PMOS2在适配器拔掉后几微秒内就导通了电池电流立刻补上负载电压不会掉到电池电压以下。我实测的波形是适配器拔掉后负载电压从5V开始下降下降大约0.5V后PMOS2导通电池电流补上负载电压稳定在电池电压。整个切换过程大约5微秒中间没有掉电到0V后级MCU不会复位。4. 常见问题与排查技巧实录这套电路我搭过不下十次每次都会遇到一些新问题。有些是器件选型的问题有些是布局的问题有些是测试方法的问题。下面整理成速查表方便你遇到问题时快速定位。4.1 电池通路关不断适配器和电池互相倒灌这是最常见的问题。现象是适配器插着的时候电池仍然有放电电流或者适配器电流比负载电流大很多多出来的部分在给电池充电。用热成像仪看PMOS2或者NMOS1发热明显。根本原因通常是NMOS1没有完全导通导致PMOS2栅极没有被拉到电池正极PMOS2仍然部分导通。排查步骤测NMOS1栅极电压适配器存在时应该大于2V。如果小于1V检查R3和R4的分压比或者换Vgs(th)更低的NMOS。测NMOS1漏极电压应该接近电池正极电压。如果明显低于电池正极说明NMOS1没有导通或者NMOS1的Rds(on)太大。测PMOS2栅极电压应该接近电池正极电压。如果明显低于电池正极说明NMOS1没有把栅极拉高或者PMOS2栅极有漏电。测PMOS2的Vgs应该接近0V。如果Vgs是负的比如-1V说明PMOS2部分导通需要换Vgs(th)绝对值更小的PMOS或者调整NMOS1的驱动。我遇到过一次NMOS1用的是2N7002Vgs(th)最大是2.5V适配器5V分压后栅极电压是4.55V理论上应该导通。但实际测下来NMOS1的漏极电压只有3.8V比电池正极4V低了0.2V。原因是2N7002在Vgs4.55V时Rds(on)大约是1.5欧姆流过100k上拉电阻的电流是0.04mA压降只有0.06mV不应该有0.2V的压降。后来发现是焊接问题NMOS1的源极虚焊接触电阻导致压降。重新焊接后问题解决。4.2 适配器拔掉后电池不供电负载掉电现象是适配器拔掉后负载电压掉到0V电池没有切换过来。测PMOS2栅极电压应该是0VPMOS2导通。如果栅极电压不是0V而是接近电池电压说明NMOS1没有关断或者PMOS2栅极下拉电阻R2没有起作用。排查步骤测NMOS1栅极电压适配器拔掉后应该接近0V。如果仍然有电压说明R4没有把栅极电荷泄放掉或者NMOS1栅极有漏电。检查R4的阻值如果是100k放电时间常数是100k乘以NMOS1的输入电容大约几十微秒应该很快。如果放电慢把R4改小到10k。测PMOS2栅极电压应该接近0V。如果接近电池电压说明NMOS1仍然导通或者R2没有焊好。检查R2的阻值和焊接。测PMOS2的Vgs应该是-电池电压。如果Vgs是0V说明PMOS2栅极和源极短路或者PMOS2损坏。我遇到过一次PMOS2的栅极下拉电阻R2忘了焊结果适配器拔掉后PMOS2栅极浮空电压不确定有时候导通有时候关断。补焊R2后正常。所以焊接完成后一定要用万用表逐个检查电阻是否焊好尤其是0603封装的小电阻很容易漏焊或者虚焊。4.3 切换瞬间负载电压振荡现象是适配器拔掉瞬间负载电压有振铃幅度可能超过MOS管的Vds耐压导致MOS管击穿。用示波器看振铃频率通常在几十MHz幅度可能达到10V以上。根本原因是电路中的寄生电感和寄生电容形成了LC振荡。适配器输入端的走线电感、MOS管的输出电容、负载电容这些参数在切换瞬间会产生高频振荡。解决方法在适配器输入端和负载端各加一个1uF到10uF的陶瓷电容靠近MOS管放置减小环路面积。在MOS管的源极和漏极之间并一个TVS二极管钳位电压尖峰。TVS的击穿电压要略高于适配器电压比如适配器5V选6.8V的TVS。在PMOS的栅极串联一个10欧姆到100欧姆的电阻减缓开关速度降低振荡幅度。但电阻太大会增加切换时间需要权衡。我一般会在适配器输入端并一个6.8V的TVS型号是SMAJ6.8ASMA封装价格几毛钱。加上之后切换瞬间的电压尖峰从12V降到7V以内MOS管再也没有击穿过。4.4 静态功耗偏大电池待机时间短现象是适配器拔掉后电池待机电流比预期大比如预期10微安实际测下来100微安甚至1mA。电池容量是2000mAh待机时间从几个月缩短到几天。根本原因是电路中有额外的漏电流路径。排查步骤测电池正极到地的电流就是待机电流。如果大于预期逐个断开可能的漏电路径。检查PMOS1的栅极下拉电阻R1适配器拔掉后PMOS1栅极通过R1到地如果R1是100k电池电压4V漏电流是40微安。这个电流是从电池正极经过PMOS1的体二极管到适配器输入端再经过R1到地。等等PMOS1的体二极管方向是从漏极到源极也就是从负载到适配器。适配器拔掉后适配器输入端电压是0V负载电压是电池电压4V体二极管是反向偏置的不应该导通。但PMOS1的栅极通过R1到地栅极电压是0V源极电压是0V适配器拔掉后适配器输入端被R1拉到地Vgs0PMOS1关断。所以这条路径没有漏电流。检查NMOS1的栅极下拉电阻R4适配器拔掉后NMOS1栅极通过R4到地NMOS1关断。但NMOS1的源极接电池正极漏极接PMOS2栅极。NMOS1关断时漏极和源极之间只有体二极管体二极管方向是从源极到漏极也就是从电池正极到PMOS2栅极。PMOS2栅极通过R2到地电压是0V体二极管是反向偏置的不应该导通。但NMOS1的栅极和源极之间有漏电流数据手册里叫Idss通常是纳安级可以忽略。检查PMOS2的栅极下拉电阻R2PMOS2导通时栅极通过R2到地电池电压4V漏电流是40微安。这个电流是电池正极经过PMOS2的源极、栅极、R2到地。等等PMOS2导通时栅极电压是0V源极电压是4VVgs-4VPMOS2导通。栅极和源极之间的电阻是R2电流是4V除以100k40微安。这个电流是持续的因为PMOS2一直导通。所以待机电流至少是40微安。要降低这个电流把R2改大比如1M待机电流降到4微安。但R2太大会导致PMOS2栅极电荷泄放慢切换时间变长。我一般用470k待机电流8.5微安切换时间大约20微秒可以接受。还有一个漏电流路径是PMOS2的体二极管。PMOS2导通时体二极管是反向偏置的不导通。但PMOS2关断时体二极管是正向偏置的如果负载电压低于电池电压体二极管可能导通。不过适配器存在时负载电压是5V电池电压是4V体二极管反向偏置不导通。所以这条路径没有问题。4.5 常见问题速查表现象可能原因排查方法解决方法电池关不断有放电电流NMOS1未导通或PMOS2 Vgs(th)太高测NMOS1栅极电压和PMOS2栅极电压换低Vgs(th)的NMOS或PMOS检查分压电阻适配器拔掉后负载掉电NMOS1未关断或R2未焊测NMOS1栅极电压和PMOS2栅极电压减小R4检查R2焊接切换瞬间电压振荡寄生电感电容LC振荡示波器看负载电压波形加TVS加陶瓷电容加栅极电阻静态功耗偏大下拉电阻漏电流测电池待机电流增大R2到470k或1MMOS管发热严重Rds(on)太大或散热不足测MOS管压降和温度换低Rds(on)的MOS加大散热焊盘适配器插入时电池充电PMOS2未完全关断测电池电流方向检查NMOS1驱动换低Vgs(th)的PMOS5. 进阶优化与扩展思路基本电路跑通之后还可以根据具体应用场景做一些优化。比如有些设备要求适配器插入时给电池充电那就需要额外的充电管理电路但双电源切换部分不变。有些设备要求切换时负载电压不能有跌落那可以在负载端加一个大电容或者用理想二极管控制器替代PMOS。5.1 用理想二极管控制器替代PMOSPMOS做开关虽然压降小但栅极驱动电路需要额外的NMOS和电阻布局面积不小。如果追求更简单的方案可以用理想二极管控制器比如LM66100或者TPS2113这些芯片内部集成了MOS管和驱动电路外围只需要几个电容。但成本比三个MOS管高而且有些型号供货不稳定。我一般是在成本敏感的项目里用三管方案在空间敏感的项目里用理想二极管控制器。5.2 增加适配器插入检测信号有些应用需要MCU知道当前是适配器供电还是电池供电。可以在适配器输入端加一个分压电阻接到MCU的ADC引脚。适配器存在时ADC读到5V分压后的电压适配器拔掉后ADC读到0V。这个信号可以用来切换屏幕亮度、调整功耗模式、或者记录电源事件。分压电阻的选择要注意功耗。适配器5V分压电阻如果是100k和100k电流是25微安功耗0.125mW可以接受。但如果是电池供电时这个分压电阻会一直消耗电池电流所以要在适配器输入端加分压而不是电池输入端。适配器拔掉后分压电阻上没有电压不消耗电池电流。5.3 锂电池低压保护与切换电路的配合锂电池过放会损坏所以通常需要低压保护电路。有些锂电池自带保护板放电到2.5V左右会切断输出。但保护板切断后双电源切换电路中的PMOS2栅极下拉电阻R2仍然会消耗电池电流虽然很小但长期存放可能导致电池过放。所以如果设备长期不用最好把电池拔掉或者加一个物理开关。如果不想加开关可以把R2改到1M以上把待机电流降到微安级。但R2太大会导致PMOS2栅极电荷泄放慢切换时间变长。我实测过R21M时切换时间大约是100微秒对于大多数应用来说仍然可以接受。但如果后级有MCU100微秒的掉电时间可能不够MCU保持复位需要加一个大电容储能。5.4 双电池切换的扩展有些设备用两块锂电池一块主电池一块备用电池需要自动切换。这时候可以把电池通路复制一份用两个PMOS分别控制两块电池NMOS的驱动逻辑类似。但要注意两块电池的电压不能差太多否则电压高的电池会通过PMOS的体二极管给电压低的电池充电。所以双电池切换通常需要额外的均衡电路或者用理想二极管控制器实现真正的“或”逻辑。我个人在实际操作中的体会是三管双电源切换电路看起来简单但每个器件的参数都要仔细核对尤其是Vgs(th)和Rds(on)。焊接完成后一定要逐点测电压确认逻辑正确再接负载。我踩过最大的坑就是NMOS的Vgs(th)选高了适配器5V分压后栅极电压只有2VNMOS没有完全导通电池通路关不断适配器和电池互相倒灌电池发热严重。后来换了Vgs(th)是1V的NMOS问题解决。所以选型时一定要留足余量别卡着数据手册的极限值用。