尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PMOS双电源自动切换电路设计:从原理到实战避坑指南

发布时间:2026/9/27 20:30:50

资讯中心
01
ARTICLE

PMOS双电源自动切换电路设计:从原理到实战避坑指南

PMOS双电源自动切换电路设计:从原理到实战避坑指南
做硬件的老哥基本都撞上过这种需求一个系统既要外部电源供电又要挂一块备用电池外部电一断系统得在几毫秒内切到电池不能重启、不能丢数据。以前图省事用两颗肖特基二极管做ORing电路是简单但0.3V到0.5V的压降实在肉疼尤其是电池供电端本身电压就不高再让二极管吃掉一截低电量的时侯设备可能直接罢工。后来我把方案换成PMOS管搭了一套双电源自动切换电路正常工作的时候压降只有毫伏级别主电掉电后能自动无缝切到备用电源整个过程不需要单片机干预纯硬件自动完成。这篇文章就把整个设计过程完整拆开讲从基础的单PMOS切换电路到零压降的实现细节再到防倒灌、防复位这些实战中绕不开的坑全都会涉及。适合正在设计主备电源切换的硬件工程师也适合想提升电池供电系统效率的电子爱好者参考。1. 双电源切换的核心思路与方案选型1.1 先看应用场景谁需要这个电路谈方案之前得先弄清楚需求在哪儿。我见过比较多的双电源切换场景是这几类物联网传感器节点平时用适配器或者POE供电断电时切换到锂电池还要保证数据不丢、定时上报不中断。路由器、光猫、NAS这类家用设备喜欢内置一颗小电池断电后撑几秒钟让系统优雅关机不至于掉配置、伤文件系统。车载记录仪、便携仪器车充或者USB供电熄火/拔线后自动切到内置电池继续录制或者保留最后一段数据。工控现场24V总线供电为主12V铅酸电池作为后备主电源波动或掉电要保持PLC/传感器不掉线。这些场景的共同点是主电正常时负载由主电供电电池只在主电消失的瞬间顶上。这时候电路要做的事情只有两件第一检测主电是否正常第二在掉电时把负载快速切换到备用电源。听起来简单但实现方案的取舍直接影响系统可靠性。1.2 方案对比二极管、继电器、PMOS还是负载开关IC我最早用的方案是二极管ORing也就是把主电源和备用电源各串一个二极管然后并到一起接负载。谁电压高谁供电天然自动切换电路简单到不能再简单。但问题也很直接普通硅二极管压降0.6V到0.7V肖特基二极管也要0.3V到0.4V。假设系统工作电流1A一颗肖特基就是0.4W的损耗在无风扇的小盒子里这就是个热源。更致命的是电池端到负载端凭空少了几百毫伏电池容量利用率直接被拉低。继电器方案我也试过触点导通电阻确实可以做到毫欧级但响应时间通常在5ms到15ms对于很多MCU来说这个时间足够让电压跌出复位阈值了。而且机械触点有寿命问题频繁切换几次就心里没底。负载开关IC比如集成式的理想二极管控制器确实好用导通电阻极低内部还带比较器和防倒灌。但有些项目讲究成本一两颗IC的钱抵得上一整颗PMOS方案的全部物料另外专用IC的供货也不稳定设计到一半选型被砍的滋味不好受。权衡下来用PMOS管做切换开关是综合最优解。导通压降等于负载电流乘以Rds(on)一颗几毫欧的管子1A电流也就压掉几个毫伏接近零压降。切换靠栅极电压控制微秒级响应就能做到成本还低。关键是只要把PMOS的导通条件吃透整个电路就是几颗电阻加一颗管子的事。1.3 PMOS导通条件别把Vgs搞反了很多人第一次用PMOS管就栽在导通条件上。这里简单捋一下因为后面所有电路分析都基于这个。PMOS管的源极S通常接高电位漏极D接负载。栅极G和源极S之间的电压差叫Vgs。PMOS的阈值电压Vth一般是负值常见的是-0.5V到-2V。当Vgs为负且绝对值大于阈值电压绝对值时也就是Vgs小于Vth比如-1V管子的Vgs为-2V管子导通当Vgs接近0V或者为正时管子截止。可以把这个理解成一个“负压开关”栅极电压比源极电压低到一定程度开关才合上。这跟NMOS正好相反NMOS是栅极电压比源极电压高到一定程度才导通。做个粗略对照PMOSS接电源高侧D接负载Vgs为负导通。NMOSD接负载低侧S接地Vgs为正导通。搞清楚这个后面电路就好分析了。2. 基础版电路单PMOS实现主备电自动切换2.1 最小系统电路结构与元件清单先看一个最基础的电路。它只有一颗PMOS、一颗肖特基二极管、两颗电阻就能实现主备电自动切换。整个电路如下VBUS ── D1(肖特基) ──┬──── VOUT (负载) │ VBAT ── S(Q1-PMOS) ── D(Q1) ── VOUT │ G(Q1) ── R1(100k) ── GND G(Q1) ── R2(100k) ── VBUS元件清单Q1PMOS管比如AO3401Vds-30VVgs(±)20VRds(on)典型50mΩ小封装SOT-23DIY和量产都常用。D1肖特基二极管比如SS343A/40V正向压降0.3V左右。R1、R2100kΩ、0603/0805贴片电阻用于设置栅极电位。C1VOUT端大电容建议470μF以上钽电容或者铝聚合物电容并联0.1μF陶瓷电容滤高频。VBUS主电源输入比如3.3V稳压输出。VBAT备用电源比如3.7V锂电池。这个电路的思路是把PMOS当成一个“受控二极管”主电存在时它截止相当于二极管不存在主电消失时它导通替代二极管给负载供电。接下来的工作过程分析都基于一组具体参数VBUS3.3VVBAT3.7V锂电池典型电压这样分析出来的结论最直观。2.2 三种工作状态逐一分析状态一主电正常VBUS3.3V。D1正极接3.3V负极接负载VOUT约等于3.3V减0.3V也就是3.0V左右。同时R2把Q1的栅极拉到3.3VQ1源极是电池电压3.7V此时Vgs3.3V-3.7V-0.4V。假设Q1的Vth-1VVgs-0.4V是大于Vth的管子处于截止状态。电池回路被断开负载完全由主电供电。注意此时Q1的D极电压是VOUT约3.0VS极是3.7VD极电压低于S极体二极管反向截止不存在倒灌路径。状态二主电掉电VBUS从3.3V往下掉。当VBUS跌到一定值以下D1开始反偏主路断开。此时Q1栅极通过R1被拉到0VVgs0V-3.7V-3.7V远低于Vth-1VQ1瞬间导通。电池电压通过Q1的沟道送到VOUT负载切换到电池供电。由于PMOS完全导通后的阻抗只有几十毫欧VOUT基本等于VBAT减去负载电流乘以Rds(on)也就是3.7V减去几十毫伏损耗非常小。状态三主电恢复VBUS重新升到3.3V。D1恢复导通VOUT被拉回3.0V主电开始给负载供电。同时R2把Q1栅极重新拉高到3.3VVgs回到-0.4VQ1自动截止电池退出供电。整个回切过程同样不需要外部控制。这个电路的核心逻辑就是用主电电压本身去控制PMOS的栅极。主电在栅极被拉高备电断开主电不在栅极被拉低备电接入。它的巧妙之处在于检测和开关是同一个信号没有引入额外的检测电路。2.3 关键参数计算与元件选型这段相当重要选型选得不好电路可能根本没法正常工作。第一看PMOS的Vds耐压。电路里PMOS的S极接电池D极接负载电池端最高电压决定了Vds的应力。以3.7V锂电池为例满电4.2V考虑电压尖峰再留点余量选Vds额定值20V到30V的管子完全够用。如果电池电压是12V或者24VVds就得选40V到60V档位。第二看Vgs耐压。基础电路中VBUS最高3.3VVBAT最高4.2VVgs始终在-4.2V到0.8V之间远远小于常见的±20V极限所以不需要额外保护。但如果VBUS是12VVBAT是24V栅极直接接VBUS可能会导致Vgs超过管子的极限这时候要在栅极串联电阻加稳压管钳位或者用电阻分压。第三看Vth的选择。这是很多人忽略的点。电路的切换点大致由下式决定切换电压 ≈ VBAT - |Vth|也就是说当VBUS下降到VBAT减阈值绝对值附近时PMOS开始导通。以VBAT3.7V、Vth-1V为例切换点大约是2.7V。这意味着主电电压降到2.7V以下备电才会切入。如果主电是3.3V稳压源掉电时从3.3V跌到2.7V需要几百微秒到几毫秒期间VOUT会同步下跌。想让切换更早发生可以选择Vth绝对值更大的管子比如-1.5V到-2V的切换点会高一些。但要注意Vth绝对值太大也意味着导通电阻可能变大需要平衡。第四看Rds(on)和散热。负载电流乘以Rds(on)就是压降也是管子上的耗散功率。1A负载、50mΩ管子压降50mV、功耗50mWSOT-23封装还能应付。如果是5A负载压降250mV、功耗1.25W就得选Rds(on)更低的管子比如10mΩ以内并且预留足够的铜箔散热。第五看R1、R2阻值的选取。R1负责掉电时把栅极拉低R2负责正常时把栅极拉高。两个100kΩ是折中选择静态电流约3.3V/200kΩ16.5μA不会对电池造成明显负担栅极下拉时间常数约等于R1×Ciss常见小功率PMOS的Ciss在1nF到10nF之间100kΩ乘以10nF等于1ms从掉电到完全导通大约2到3ms。对于大多数MCU的掉电保持时间来说够用。如果系统对切换速度要求更高可以把R1减小到10kΩ代价是静态电流增加到约165μA。注意R2不能省没有R2的话主电正常时栅极悬空PMOS可能因为噪声或者电荷积累而误导通这是可靠性隐患。输出电容C1也要提一句。切换过程中存在一个短暂的“真空期”主电已经断开备电还没完全导通此时VOUT靠C1储存的能量维持。假设切换耗时2ms、负载电流0.5A、允许电压跌落0.2V所需电容约为C I×t/ΔV 0.5A×2ms/0.2V 5mF这个值偏保守因为实际切换时PMOS在VBUS跌到切换点附近就开始导通并不是完全等到VBUS为0才接入。但为了让电路有余量C1选470μF到1000μF是合理的。如果后级是MCU建议再并联一个100μF陶瓷电容降低瞬态阻抗。3. 零压降方案是怎么做到的3.1 零压降的真实含义与实现前提先明确一点零压降不是真的零欧姆通路而是把损耗压到毫伏级别。PMOS作为开关管完全导通后VSD之间的电压等于导通电流乘以Rds(on)。用一颗Rds(on)20mΩ的管子2A负载下压降只有40mV相比肖特基二极管的400mV直接省了十倍。在3.7V供电的系统里这40mV的意义是电池电压跌到3.3V还能正常工作而用二极管的方案可能3.7V就撑不住了折算下来电池可用时间能提升5%到10%。实现零压降的前提是PMOS必须工作在深度导通状态也就是Vgs的绝对值要足够大。基础电路中VBAT3.7V、VG0VVgs-3.7V对于Vth-1V的管子来说驱动强度足够Rds(on)能压到数据手册标称值。如果VBAT只有2VVth-2V那Vgs-2V刚好临界管子进入线性区导通电阻会飙升压降就不“零”了。所以这个方案对备电电压有下限要求大致是VBAT要大于1.5倍|Vth|。3.2 容易被忽略的体二极管倒灌问题PMOS管的源极和漏极之间天然存在一个体二极管方向是从漏极D指向源极S也就是D极电位比S极电位高时这个二极管会导通。很多人在单管电路里栽跟头就是因为没注意到它。拿基础电路的参数说事VBUS3.3V、VBAT3.7V主电正常时VOUT约等于3.0VD极3.0V低于S极3.7V体二极管反向截止没有问题。但如果场景换成VBUS5V适配器、VBAT3.7V锂电池主电正常时VOUT约等于4.7VQ1的D极4.7V高于S极3.7V体二极管正向导通电流会从VOUT倒灌进电池。这会造成几个后果电池电压被强行拉到接近4.7V锂电池会被“浮充”到过压如果电池没有保护板轻则损坏重则冒烟起火如果电池是不可充电的一次性电池这事就更严重了。这也是网上很多“电池电压越用越高”案例的根源。遇到这种情况最简单的规避方式是调整主备电压关系保证主电正常时VOUT不会高于电池电压。比如主电3.3V、备电3.7V这个组合就安全。但如果应用决定了主电必须高于备电比如5V适配器加锂电池那就必须加防倒灌措施。3.3 防倒灌的几种实战方案第一种是给备电PMOS的漏极串一颗肖特基二极管。这个操作简单粗暴但二极管又引入了0.3V压降等于把零压降的效果打了折扣不推荐。第二种是背靠背双PMOS两只PMOS的源极S对源极S连接两个漏极分别接电池和负载栅极连在一起控制。这样做的本质是把两只管子的体二极管反向串联一只管子的体二极管方向朝左另一只朝右两两抵消形成一个双向阻断结构。具体到5V主电配3.7V电池的场景VOUT4.7V时靠近负载那只PMOS的体二极管反偏倒灌路径被彻底切断。双管共源结构需要注意的是两只管子要配对Vth差异太大会出现一只先开一只后开不过对于慢速切换应用影响不大。第三种是加一个电压检测IC或者比较器由它来检测VBUS电压然后控制PMOS的栅极。这种方案最严谨电压检测IC例如TCM809、TPS3840都有固定的阈值输出开漏配合外部上拉电阻可以直接驱动PMOS。当VBUS低于设定阈值时检测IC输出低电平PMOS的栅极被拉低备电接入当VBUS恢复后输出高电平PMOS截止。好处是切换点精确可控还可以设置滞回避免临界抖动。3.4 实测数据不同负载下的压降记录我之前在一个3.3V主电加3.7V锂电池的项目里实测过这组数据。PMOS用的是AO3401Rds(on)标称50mΩVth约-1.2V负载是ESP32加传感器平均电流80mA峰值电流约300mA。用电位器模拟主电掉电示波器记录VOUT波形。负载80mA时备电通路压降约4mV基本可以忽略。负载300mA时压降约15mV电池电压3.89V时VOUT为3.875V。把管子换成Rds(on)10mΩ的低压降型号比如AON7410后300mA负载下压降只有3mV用万用表几乎测不出差别。切换时间从VBUS跌破2.7V到VOUT稳定在电池电压大约用了1.8ms。VOUT在切换过程中有个约200mV的短暂跌落加了一个470μF钽电容后跌落减少到80mV完全不影响ESP32工作。这些数据是在面包板上用飞线搭的电路测出来的如果做成PCB走线更短、寄生电感更小切换波形会更干净。4. 实操搭建与调试记录4.1 面包板搭建步骤与物料准备如果你手头正好有材料可以直接照着搭一套验证。物料清单如下AO3401 PMOS管一颗或者SI2301也可以。SS34肖特基二极管一颗。100kΩ电阻两颗、10kΩ电阻一颗。470μF钽电容一颗、0.1μF陶瓷电容两颗。面包板一块、跳线若干、USB供电线或者直流稳压电源、锂电池或者可调电源模拟电池。搭建顺序我建议从负载端开始因为后级先就位调试时电压表才能看到真实反馈。先在面包板上把VOUT和GND之间的470μF电容和0.1μF陶瓷电容接好这两个电容尽量靠近后面要接的负载位置。然后放PMOS管AO3401是SOT-23封装三个脚分别是G、S、D需要仔细对照数据手册确认引脚顺序不同的管子引脚定义不一样这一步错了一切都白搭。把S极接到电池正极预留位置D极接到VOUT。接着接栅极偏置电阻G到GND接100kΩG到VBUS预留位接100kΩ。最后接主路二极管SS34的正极接VBUS负极接VOUT。主电源和电池的负极都要共地这一点不能漏否则整个电路浮空什么反应都不会有。4.2 万用表和示波器验证切换逻辑焊接或者插接完成后,先用万用表确认三种状态。状态一只接主电不接电池VOUT电压应该在3.0V左右测量Q1的Vgs万用表红表笔接G、黑表笔接S应该看到约-0.4V或者更接近0V说明MOS管处于截止状态。状态二只接电池不接主电Q1的栅极通过R1拉到GNDVgs约-3.7VVOUT应该等于电池电压减去十几毫伏说明PMOS导通了。如果测得VOUT接近0V先检查管子引脚有没有接错再检查R1是否焊牢。状态三主电和电池都接VOUT回到3.0V左右电池正极到VOUT之间测不到明显电流说明备电被正确隔断。示波器验证切换波形更直观。把CH1接到VOUTCH2接到VBUS用跳线直接拔掉VDUS供电线来模拟掉电。正常情况下可以看到VBUS曲线快速跌落VOUT在延迟大约1到2毫秒后稳定到电池电压附近中间会出现一个窄的下凹幅度取决于输出电容大小。如果VOUT波形上下剧烈抖动说明栅极附近有振荡可以尝试在G和S之间并联一个10nF电容吸收噪声。4.3 负载与电容对切换速度的影响调试过程中我专门试了不同负载和电容的组合。负载电流越大VBUS掉电速度越快因为主电源输出电容储存的能量被消耗得更快这会缩短从掉电到切换点的时间。负载电流越小比如只有几个毫安VBUS可能缓慢下降PMOS会在阈值附近来回导通截止VOUT出现震颤。这种情况下要么调大滞回要么在VBUS检测点故意加一个小泄放电阻让VBUS掉电时下降得更干脆。输出电容也不是越大越好。虽然大的C_OUT能让切换时的跌落更小但如果超过10mF电池接入的瞬间会产生很大的冲击电流可能触发电源保护或者拉低电池电压。大电容还会让VOUT从主电切换到电池时倒灌路径持续更久。实际设计时输出电容按负载功耗来定够用就行盲目堆料不一定带来更好的性能。5. 常见问题与避坑清单5.1 切换瞬间MCU复位怎么查这个问题在项目中遇到得最多。现象是主电断开瞬间单片机复位了但备份电池电压明明够。原因一般是两个一是切换太慢VOUT掉到了复位阈值以下二是输出电容太小撑不住切换真空期的能量消耗。排查方法用示波器抓VOUT的跌落深度和恢复时间。如果看到VOUT跌到单片机复位阈值以下且持续超过几十微秒基本就是切换慢了。解决思路按优先级排序加大C_OUT这是最直接的减小R1阻值加快栅极下拉换更低Vth的PMOS让切换点提前使用电压检测IC让备电在主电还没完全跌完时就接入。5.2 备电空载电流大电池很快就没电了另一个常见现象是电路不接负载电池也会慢慢耗尽。排查时先用万用表电流档测电池到电路的总静态电流如果超过几百微安逐个排除原因。最常见的是R1、R2阻值选得太小比如用了10kΩ那么静态电流就有几百微安虽然单看不大但如果是几百毫安时的锂电池几天就放完了。换100kΩ甚至470kΩ能明显改善。另一个容易被忽略的原因是PMOS没有完全截止主电正常时Vgs虽然大于Vth但管子处于微导通状态漏电流达到几十到几百微安。检查方法是在电池回路串电流表然后单独调高主电电压看电流是否会变大。如果确实有微导通可能是主电电压和电池电压太接近Vgs压差不够换一颗Vth绝对值更大的管子就能解决。5.3 PMOS选型时容易踩的坑选型我用一句话总结耐压看Vds驱动看Vgs损耗看Rds(on)切换速度看Ciss可靠性看通道来源。几个具体的坑如下。Vgs超过极限一次就击穿。如果VBUS是12V甚至24V直接把栅极接到VBUSVgs可能超过±20V。解决方法是栅极串联一个10kΩ电阻并在G-S之间并联一个12V稳压管钳位。Vds耐压不够。电池端电感或者热插拔会产生尖峰如果Vds余量不足长期使用可能会出现雪崩击穿。建议耐压留1.5倍以上的余量比如12V系统选30V到40V的管子。低Rds(on)意味着大栅极电容。一颗Rds(on)5mΩ的管子Ciss可能到10nF以上如果还用100kΩ下拉电阻切换时间可能长达几十毫秒。这种情况下要缩小栅极电阻或者增加一级NMOS驱动。假管子问题必须提。网上确实有不少AO3401假货丝印看着像实际用了低压测试正常一带载就发热烧毁。建议从授权代理商或可靠渠道购买到手后先测Vgs(th)和Rds(on)两个参数跟数据手册对一下再上电路。5.4 问题速查表现象可能原因处理方法切换后电压掉到复位阈值以下切换慢或C_OUT小加C_OUT、减小R1、换低Vth管子、加电压检测IC电池空载也在耗电R1/R2太小、PMOS微导通R1/R2改大换Vth更大的管子主电正常时电池电压升高体二极管倒灌换背靠背双PMOS或加电压检测IC控制栅极管子发热严重Rds(on)太大或假管子换低Rds(on)正品管子检查Vgs是否完全导通切换时VOUT震荡栅极振荡或切换点附近迟滞不足G-S间加10nF电容降低环路增益VBUS恢复后电池继续供电回切逻辑失效、R2阻值异常检查R2连接与阻值必要时用电压检测IC强制回切6. 扩展用比较器实现精准电源监测与切换6.1 电压检测IC方案的基本思路基础电路的切换点由VBAT和Vth共同决定优点是无脑缺点是没法精确控制。如果项目要求主电掉到某个准确电压值就切换比如5.2V掉到4.5V那么用电压检测IC是更好的选择。具体做法选一颗固定阈值或者可调阈值的电压检测芯片例如TCM809T阈值4.63V把它的输入接在VBUS的分压电阻上。检测IC输出是开漏结构平时输出高阻态VBUS低于阈值时输出低电平。把这个低电平接到备电PMOS的栅极上就可以实现“掉到阈值立刻切备电”。同时为了回切在VBUS正常时需要把PMOS栅极拉高到比电池高这可以通过检测IC外部加上拉电阻到VBUS解决。需要注意的是检测IC自身有一定的响应时间常见的是几十微秒对于绝大多数电源切换场景来说完全够用。加滞回的话可以在分压电阻上并联一个电阻形成一个上下阈值不同的窗口避免主电电压在临界点波动时备电反复切入切出。6.2 给MCU增加一个掉电预警信号除了自动切换很多系统还希望在上电掉电时提前通知MCU让它保存关键数据、关闭外设、进入低功耗模式。这个信号可以用一颗NMOS管实现把NMOS的栅极通过一个电阻接到VBUS源极接地漏极接MCU的GPIO并上拉。VBUS正常时NMOS导通GPIO被拉到低电平VBUS掉电后NMOS截止GPIO被上拉电阻拉高MCU检测到上升沿就进入掉电处理流程。需要注意的是掉电检测信号必须比备电切换信号早那么一点点或者至少同时否则MCU还没反应过来电压已经掉了。实际调试时可以通过调整NMOS栅极电阻的分压比让预警信号比备电接入早几十毫秒。如果MCU本身有掉电检测功能也可以直接用内部的BOD但那样没法区分主电掉电和电池欠压还是外置检测更灵活。结尾这套PMOS双电源自动切换电路我在两个实际项目里跑过一个用在3.3V主电加锂电池备电的传感器节点上一个用在12V适配器加铅酸电池的工控盒子里。整体感受是PMOS方案比二极管ORing强太多最明显的变化是电池放电截止电压可以放得更低设备可用时间多了不少而且不用写一行代码纯硬件就把功能做完了。最后分享一个从调试中悟出来的小技巧如果用的是锂电池把切换点设在比电池低压保护点高0.2V左右电池快没电但还没触发保护的时候就让系统切回主电并提示充电实测对延长电池循环寿命很有帮助。希望这篇文章能帮你少走弯路把你的电源切换方案一次做稳。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。