☰
PMOS发热排查实录:TP4056锂电池供电切换电路的栅极驱动陷阱
2026/10/6 6:58:02 网站建设 项目流程

有一阵子我被一个问题搞得头大:一块用TP4056做的18650锂电池供电小设备,插上USB之后,板上那颗PMOS管热得能煎鸡蛋。负载电流明明才0.6A,管子是按3A选的,按理说发热不应该这么离谱。换掉管子照样烫,最后拿万用表一点一点测回来,才发现凶手不是管子本身,而是栅极电压刚好卡在导通阈值附近,MOS管根本没完全打开,功率全部变成了热量。

这篇文章就用这个TP4056实战案例,把锂电池供电切换电路里PMOS发热的根源、排查方法和修正方案一次性讲清楚。不堆术语,但该算的账、该量的点、该避的坑,一样都不会少。

1. 为什么供电切换电路离不开PMOS

1.1 TP4056充电电路的先天短板

TP4056是目前最常用的单节锂电池线性充电芯片,外围器件少、成本低,最大充电电流能做到1A,很多DIY项目的最终形态都是一个5V USB口进来,TP4056给18650或聚合物理电池充电,然后系统板直接从电池取电。

问题就出在这个“取电”上。

TP4056本身没有电源路径管理,英文叫Power Path。意思很直白:芯片只负责给电池充电,电池要不要给系统供电、USB没插时由谁给系统供电,它一概不管。如果你想让设备在插USB的时候优先用USB的电,同时还能给电池充电,就必须自己在外面加切换电路,而最廉价可靠的方案之一,就是在电池正极通路里串一颗PMOS。

引脚名称功能
1TEMP电池温度检测输入,可接NTC,不用时接地
2PROG充电电流设定端,通过电阻设定电流
3GND地
4VCC电源输入,范围4.5~5.5V
5BAT电池连接端,充电时这里输出4.2V
6STDBY充满指示,充满时拉低
7CHRG充电指示,充电时拉低
8CE使能端,高电平使能,低电平关断

顺便把充电电流的设定公式给大家,TP4056的充电电流和PROG脚对地电阻的关系是:I = 1200 / RPROG,RPROG单位是Ω,I单位是A。比如想充1A,就用1.2kΩ电阻;想充500mA,用2.4kΩ。

充电截止电压是4.2V,精度±1%,这对绝大多数单节锂电池是安全的。

再回到供电切换。所谓“防倒灌”,是指电池电压会把电流送到USB 5V那一路去。USB口内部有不少电容和芯片,电池4.2V虽然低于5V,但一旦USB电源被拔掉,5V网络变成悬空状态,电池就能通过寄生路径给这部分电路反向供电,轻则导致LED微亮、设备关不彻底,重则烧掉路径上的器件。这时候就需要一颗PMOS把电池和USB网络隔开。

1.2 单PMOS的典型切换拓扑

最简单的切换思路:用一颗PMOS把电池和系统轨断开。系统轨是负载总电源入口,由USB 5V和电池两个候选电源提供。

PMOS安装的位置很有讲究,这也是我这次踩坑的核心。我当时搭的电路长这样,先放出来当反面教材:

USB_5V ---- R1 100k ----+---- PMOS.G | R2 100k ---- GND USB_5V ---- D1 SS34 ----+---- SYS(系统负载) | 电池+4.2V ---- PMOS.S PMOS.D ---- SYS

PMOS用的是AO3401A,S极接电池,D极接系统轨SYS。USB插入后,PMOS栅极被两个100k电阻分压到2.5V;电池电压4.2V,于是Vgs = 2.5 - 4.2 = -1.7V。

AO3401A的导通阈值Vgs(th)典型值在-1.0V左右,-1.7V刚好处于“刚刚开始导通”的区间。管子没有完全打开,Rds(on)不是规格书里写的40mΩ,而是可能变成300mΩ甚至更高。负载0.6A时,理论功耗就是0.6²×0.3=108mW,再叠加体二极管的问题,外壳很快就烫了。

很多教程都告诉你PMOS能防倒灌、能做电源切换,但很少告诉你:接反方向、驱动电压不对,比不加PMOS还要危险。

1.3 PMOS与NMOS导通条件对比

先把基础讲透。MOS管的导通由栅源电压Vgs决定,和型号参数的关系是:

  • NMOS:Vgs > 阈值电压Vth时导通。NMOS做高边开关时,源极接负载,栅极必须比源极电压高几伏以上才能完全打开,所以高边用NMOS要么自举要么加电荷泵,麻烦。
  • PMOS:Vgs < -阈值电压时导通,栅极比源极低几伏以上才能完全打开。PMOS的源极通常直接接输入电源正端,只要把栅极往下拉到地或接近地,就能满足导通,做高边开关非常顺手。
类型导通条件适合位置常见驱动方式
NMOSVgs > Vth低边开关、电流控制GPIO直接给正压
PMOSVgs < -Vth高边电源开关、电池切换栅极下拉到地或负压

在锂电池供电切换场景里,我们要断开的是一条正极通路,所以PMOS是主角。但要注意,PMOS的“负压导通”是相对于源极电压来说的,不是看栅极绝对电压有多低。很多朋友只盯着栅极电压高低,看不到源极电压,接出来就是各种稀奇古怪的问题。后面这个案例里,这个问题会反复出现。

2. 深挖PMOS发热的四个物理根源

2.1 发热公式:功耗从哪里来

MOS管发热的本质是功耗转热,主要三笔账:

第一,导通损耗:P = I² × Rds(on)。电流已经确定时,Rds(on)越大越烫,这个最好理解。

第二,线性区损耗:P = Vds × Id。MOS管没有完全导通,管子两端存在较大压差,但电流照样通过,这个乘积就是实打实的功耗。这种损耗往往比想象中高得多,也正是半导通状态最危险的地方。

第三,开关损耗:P ≈ ½ × Vin × I × (t_rise + t_fall) × f。每次开关过程都要在线性区消耗能量,频率越高越严重。

在插拔USB这样的低频切换场景里,开关损耗不是主角。但有些电路会在临界电压附近反复抖动,把第三笔账硬生生放大好几倍,这个后面会说到。

用具体数字感受一下功耗差异:AO3401A在Vgs=-4.5V时,Rds(on)典型值约40mΩ,过1A电流,理论功耗是1²×0.04=40mW,SOT-23封装顶多微温。但把Vgs压到-1.5V时,Rds(on)很可能蹿到200~500mΩ,同样1A就是200~500mW,SOT-23封装的热阻大概150°C/W,温升轻松超过30°C,手摸上去已经是烫手级别了。

管子这时候不一定坏,但长期高温工作的寿命和可靠性都会明显下降。

2.2 根源一:栅极电压控制不当导致半导通

这是绝大多数PMOS发热的第一大原因。

半导通的意思:Vgs落在阈值附近,MOS管既没进入深度导通,也没完全关断,相当于一个阻值飘忽不定的电阻串在电源通路上。

以AO3401A为例,Vgs(th)参数范围大约是-0.7V到-1.4V。这个参数是“开始导通”的门槛,不是“完全导通”的充分条件。真正要让管子完全打开,需要把Vgs推到-2.5V以上,最好到-4.5V。规格书里的Rds(on)只在Vgs=-4.5V或-2.5V条件下测试,就是这个道理。

实际工程中,常见的半导通触发方式有三种:

第一种,用等值电阻分压,像我前面那个反面电路,把栅极电压卡在中间。

第二种,用3.3V单片机GPIO直接拉高栅极去关断PMOS。如果PMOS的S极接的是4.2V电池,GPIO输出高电平3.3V,Vgs=3.3-4.2=-0.9V,恰好卡在阈值附近,关不断。更要命的是,PMOS的Vgs(th)本身有批次离散性,同样型号的管子有些在-0.7V就开了,有些要到-1.2V才开,于是有人遇到“有时热有时不热”。

第三种,用NPN三极管驱动PMOS栅极,但三极管没有进入饱和,CE结上残留了一个多伏特压降,栅极停在1V多,同样造成半导通。

判断方法很简单:用万用表测Vgs。只要绝对值小于2V,就要高度怀疑半导通。深度导通至少要让Vgs绝对值大于2.5V,最好留到4V以上。

2.3 根源二:体二极管悄悄开了后门

PMOS内部自带一个寄生二极管,方向是从漏极D到源极S,厂家图纸上通常画在MOS管符号旁边。

这个体二极管带来的副作用是:即便PMOS沟道完全关断,只要D点电压比S点电压高0.5V左右,体二极管就会正向导通,电流照样能从D流到S。

换句话说,你以为PMOS把两路电源隔开了,实际上体二极管给电流留了一扇后门。

回到我那个反面电路。S接电池4.2V,D接系统轨SYS。USB插入后,肖特基二极管D1把SYS拉到4.7V左右,D点4.7V高于S点4.2V,这时候体二极管导通;同时沟道又是半导通,相当于两条通路并联,电流从SYS往电池方向灌回去。这部分电流完全没经过TP4056控制,属于“管不住的电流”,路径上又有体二极管的压降,自然发热。

体二极管的方向这样记:PMOS沟道导通时的正式电流方向是S流向D,体二极管方向是D流向S。想防止倒灌,就得保证在关断状态下,D点电压不高于S点电压。具体接法上,S端要接电压较高的那一边,D端接较低的一边。

2.4 根源三:开关瞬态与振荡损耗

切换瞬间栅极电位变化太慢,或者电路在临界点反复抖动,PMOS会在线性区停留较长时间,发热也会很明显。

最典型的场景是USB头接触不良。5V电压在3V到4.8V之间跳,栅极电压跟着跳,PMOS一会儿被拉负压导通,一会儿变0V关断,每一轮切换都要在线性区走一趟,热量就是这么堆上去的。

还有一种情况是栅极振铃。G点到驱动源之间有引线电感,DS之间又有米勒电容,如果栅极驱动源输出阻抗很低,在边沿会形成振铃。栅极电压负向振铃问题不大,但正向振铃一旦把Vgs抬到半导通区间,管子就会在线性区蹭比较长的时间。

解决办法是给栅极串联一个10~100Ω的电阻,把这个振铃压住。

进阶做法是加迟滞比较器,让栅极电压在两个状态之间迅速跳变,不在中间电压区停留。这一点在一些“慢爬升”的USB充电器上尤其重要,因为有的劣质充电头输出电压上升得慢,栅极会跟着慢慢抬升,中间态持续时间久,热量全留在PMOS上了。

2.5 根源四:选型、封装与散热被低估

最后一个原因很土,但经常发生:看耐压够、电流够,就直接把管子焊上去了,完全没有查Rds(on)和热阻。

第一,Rds(on)不是恒定值。电流偏大或者结温升高时,MOS管的导通电阻会变大,发热增加进一步推高温度,形成正反馈。所以越是摸起来烫,越要警惕它变得更烫。

第二,电流参数ID标得大,不代表你设计功耗满足了封装能力。比如标称ID=-4A的管子,实际驱动条件不同,真实Rds(on)可能是标称值的几倍。2A电流下0.4W功耗,放在SOT-23封装上,温升就已经很可观了。

第三,封装热阻差异很大。SOT-23大概150~200°C/W,SOT-89要低不少,SO-8带散热焊盘的就更容易散热。同样1W功耗,SOT-23可能温升接近100°C,SO-8可能只有30~40°C。PCB覆铜面积和过孔数量也直接影响散热,铜箔越大,热阻越小。

所以发热不一定代表管子坏了,先查驱动,再查选型,最后再考虑散热。这三个因素往往在一起起作用。

3. TP4056实战:一个具体的发热故障排查记录

3.1 故障现场还原:USB一插就烫手

当时我做的设备是ESP32-C3采集传感器数据,驱动一块SSD1306 OLED,峰值电流大概0.6A,一节18650电池供电,充电部分用TP4056模块,充电电流设定1A。外接USB 5V,想实现“USB在时优先用USB,USB拔掉自动切电池”。

实际搭建的电路就是1.2节那个错误版本:PMOS用CJ3401,和AO3401A同参数,S接电池,D接SYS,G通过两个100k电阻分压接USB和地。

插上USB之后,OLED正常亮,TP4056也进入充电状态,我当时觉得一切正常。过了两三分钟,想拔USB线,手刚碰到PMOS,烫得缩了回来。拿红外温度枪打了一下,表面温度72°C。

当时负载电流测下来只有0.6A,按说CJ3401标称能过4A,怎么也不该烫成这样。很明显,管子没有工作在规格书说的那个理想状态。

3.2 万用表实测:数据不会说谎

第一步,先断电,用万用表二极管档确认PMOS的体二极管方向。红表笔接D、黑表笔接S,显示约0.5V;红黑表笔反过来,显示无穷大。这就确认了体二极管方向是从D到S,和CJ3401的数据手册一致。

第二步,重新接USB通电,逐点量电压:

  • USB_5V:5.02V
  • SYS:4.71V
  • 电池+:4.18V
  • PMOS.G:2.51V

计算Vgs = 2.51 - 4.18 = -1.67V。

这个电压已经越过了导通阈值,但远达不到深度导通需要的-4.5V。CJ3401的Vgs(th)典型值在-1.0V左右,所以管子处于一个“通又通不彻底、断又断不干净”的状态。我估了一下,这时候Rds(on)至少200mΩ,而且SYS和电池之间有0.53V压差,体二极管也是正偏的,电流从SYS往电池方向灌。

实际串表测量,通过PMOS的电流约0.35A。用P = Vds × I来粗算,Vds=0.53V,I=0.35A,功耗约0.18W。这个功耗如果持续,SOT-23封装理论温升高达27°C左右,再加上ESP32-C3射频发射时电流冲到300mA以上,峰值功耗更高,最终表面温度冲到72°C一点都不奇怪。

更麻烦的是,这个路径上流进电池的电流不是TP4056控制的,等于给电池额外增加了一个充电通道,轻则发热,重则加速电池损耗。

到这里,发热原因基本锁定了:栅极分压导致半导通,体二极管又提供了倒灌通道。

3.3 修复一:把PMOS方向反过来并调整电阻

修的时候做了两个改动。

第一,把PMOS的S和D对调:S现在接SYS系统轨,D接电池正极。

为什么这样改?

正常情况下,电池电压低于SYS电压,体二极管从D到S就是反偏的,不会形成倒灌路径。当USB断开时,SYS电压先靠负载电容维持,然后被电池通过PMOS沟道拉起来,体二极管也不会带来麻烦。当PMOS需要导通时,Vgs=0-4.2=-4.2V,深度导通。当USB插入时,栅极接近USB电压,SYS是USB减去二极管压降,Vgs接近0V甚至微微为正,PMOS深度截止。

第二,把栅极分压电阻从两个100k改成R_up=10k、R_down=100k。

USB插入时,G点电压是5.0×100/(10+100)≈4.55V,SYS大约是4.7V,Vgs=-0.15V,安全的截止区。USB拔出后,G点通过100k电阻放电到0V,Vgs=-4.2V,完全导通。

如果你想把截止做得更彻底,可以把R_down加到220k,分压后G点约4.78V,和SYS之间的压差不到0.1V,更安全。代价是USB拔出后栅极放电稍慢,但R_down=220k配1nF量级的栅极电容,时间常数只有0.2ms左右,切换过程几乎感觉不到掉电。

修复之后的切换时序是这样的:USB拔出瞬间,G点电压不能突变,R_down把G从4.55V慢慢放到0V,同时SYS从4.7V开始跌落。因为放电时间常数很小,PMOS很快就开通,SYS电压还没掉多少,就被电池接住了。用示波器看SYS电压,跌落不超过几十毫伏,切换基本无缝。

3.4 修复二:给TP4056充电路径加独立开关

修复一解决了主要发热问题。如果你还想更严谨,可以在TP4056的VCC输入路径上也串一颗PMOS做开关,让充电只在需要时启用。

不过就我这次项目而言,TP4056直接接USB供电反而更合理,因为充电电流由芯片内部线性控制,不会随系统负载大幅波动。

这里也说一下TP4056自身有没有防倒灌能力。数据手册里BAT脚在VCC掉电时的漏电流非常小,微安级,这是芯片内部做了隔离的结果。所以在常规设计里,不需要单独为TP4056再加防倒灌PMOS,除非你实测发现USB拔掉后有异常漏电。

3.5 修复后的实测参数与功耗核算

改完电路重新上电,记录一组数据:

  • USB插入时:SYS=4.71V,G=4.66V,电池D=4.18V,Vgs=-0.05V,PMOS截止,万用表测不到明显漏电。
  • USB拔掉时:G=0V,SYS=4.16V,Vgs=-4.16V,PMOS深度导通。测PMOS两端压降Vds≈12mV,负载电流0.5A,估算Rds(on)=0.012/0.5=24mΩ,和CJ3401官方在Vgs=-4.5V时给出的40mΩ量级一致。
  • 连续运行一整天,PMOS表面温度稳定在36°C左右,和环境温度差距不到10°C。

功耗核算:负载0.6A时,P=I²×R=0.36×0.024≈9mW,SOT-23温升只有1~2°C,几乎可以忽略。

对比修复前半导通状态加体二极管带来的0.18W功耗,差距接近20倍。这20倍,就是“PMOS发热”和“PMOS正常”的真正分水岭。

4. 常见问题速查表与设计避坑清单

4.1 发热问题快速定位表

现象最可能原因排查点解决办法
USB插入后PMOS烫栅极分压导致半导通/体二极管倒灌测Vgs是否接近阈值改分压比例,调整S/D方向
USB拔掉后PMOS烫栅极放电太慢/振铃示波器看G点跌落时间减小R_down,栅极串10~100Ω
插拔瞬间烫切换过程在线性区停留时间太长看波形是否有毛刺和振荡加快栅极驱动,加迟滞
始终烫,和插拔无关Rds(on)太大或封装散热不够查导通时Vds和实际电流换低Rds(on)管子,加大焊盘,换封装
负载关断后PMOS还温热GPIO高电平电压不够,关断不彻底测Vgs是否为正或接近0V用NMOS反相器驱动,或加电阻上拉到S极

这个表不是万能药,但覆盖了大部分DIY项目里的PMOS发热场景。拿到问题先别急着拆管子,量电压永远是第一步。

4.2 分立PMOS切换电路的设计要点

如果你坚持用分立PMOS自己做切换,下面这几个点是拿钱和头发换出来的:

第一,S/D方向先判断。设计时先问自己:关断状态下,我最怕哪个方向的电流倒灌?然后根据体二极管方向,把S端接到电压更高的那一边,让体二极管处于反偏状态。

第二,栅极驱动电压要有余量。导通时Vgs至少-2.5V,最好-4.5V以上;关断时Vgs要达到0V或者正几百毫伏,绝不能停在阈值附近。

第三,栅极串一个小电阻,10~100Ω,抑制开关振铃。这个电阻在很多教程里容易被忽略,但它能在USB接触不良等场景里救你一命。

第四,栅极下拉或上拉电阻尽量选100k~1M级别,避免分压后产生中间态电压。阻值太小会加重分压问题,阻值太大会拖慢开关速度,需要平衡。

第五,PMOS周围铺铜要足。SOT-23这种小封装全靠焊盘和铜箔散热,该加过孔就加,别把散热焊盘悬空着不用。

4.3 比分立方案更省心的替代方案

如果你是量产,或者不想在栅极驱动上继续烧脑,可以直接换集成方案。

第一个方向是理想二极管控制器,比如LTC4412。它外接一颗PMOS,内部有比较器和驱动电路,能自动选择电压更高的输入源。防倒灌、切换、驱动一次搞定,很多电池供电产品都在用。

第二个方向是集成负载开关,比如SGM2576、SGM25761之类。里面已经集成PMOS、慢启动、过流保护,一个使能脚控制通断,外围就是两个电容。

第三个方向是带电源路径管理的充电IC,比如BQ24072系列。这种芯片在内部就处理了“USB供电优先、电池备用”的逻辑,外部不需要你再加PMOS。

第四个方向最简单,但只适合小电流场合:用两颗肖特基二极管做ORing,也叫做线与。压降比PMOS大一些,但绝对不会出现半导通和倒灌问题。

个人建议是:DIY学原理用PMOS没问题,但要是做半正式产品或要交给别人用的东西,老老实实选集成方案,省下的调试时间远远超过差价。

5. 后记与几个排查小习惯

这次故障让我养成了几个习惯,顺便分享给大家。

第一,拿到PMOS先测体二极管方向,再决定电路怎么接。这一步一分钟都不到,但能避免后面好几个小时的反向排查。

第二,测Vgs的时候,表笔要直接戳到管脚根部,别夹在一长串导线上。导线自身压降会骗人,尤其电流波动的时候,读数可能偏掉几十毫伏,刚好影响判断。

第三,手摸温度之前,先用万用表测一下Vds和电流,用P=Vds×I估算功耗。很多管子标称电流很大,但实际工作点完全不对,单靠“换更贵更粗的管子”解决不了问题。

第四,换新MOS管之后,务必重新检查驱动条件。每个型号、每批货的Vgs(th)都有离散性,同一个电路换了一颗管子,可能就从正常变成半导通。

这种问题网上资料很少写透,但基本原理和排查思路是通用的:发热不是玄学,功耗有一笔算一笔。找到那条没被控制的电流路径,问题就解决了一半。

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

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

立即咨询