12V板卡上电那一瞬间,示波器电流探头直接抓到一个60A的尖峰,板子上的电解电容都在吱吱响。这种场景搞硬件的朋友应该不陌生——后级挂了一排4700uF大电容,上电瞬间不整点缓冲措施,冲击电流能把电源都拉垮。这篇博文就记录一下我用PMOS缓启动电路配合LTspice仿真,把上电冲击从60A压到15A的完整过程,从原理、仿真到实板调试一条龙讲清楚。适合正在做电源设计、板卡热插拔或者被上电时序折磨的硬件工程师参考。
1. 上电瞬间的60A是怎么来的
1.1 一个典型的12V负载板卡
先还原一下当时的场景。我手里这块板子输入是12V,后级是一整排钽电容加电解电容,总的负载电容叠到4700uF左右,同时还有一堆DCDC和负载电路。电源是从背板插进去的,连接器、PCB走线和电源模块的内阻加起来大概在0.2Ω上下。
如果直接把12V怼上去,理论上瞬间电流就是12V除以回路总阻抗,0.2Ω算下来就是60A。虽然这个值只持续极短的时间,但它足以让电源模块进入过流保护、连接器打火、甚至把PCB走线的铜箔都烧出痕迹。更隐蔽的是,这种冲击电流会沿着电源网络传导,干扰相邻板卡的正常工作。
这里要强调一下,冲击电流的根源不是负载本身工作在60A,而是“给电容充电”这个动作太粗暴。电容两端的电压不能突变,在上电的瞬间,它相当于是一个短路。只有在电压建立起来之后,电流才会逐步降下来。这就像给一个巨大的水桶灌水,水管刚打开的时候水是直接砸进去的,等水位上升了才慢慢平稳。
1.2 电容充电就是要薅电流
电容充电的基本关系是i等于C乘以dv/dt,也就是充电电流等于电容量乘以电压变化速率。上电瞬间,电压从0开始跳变到12V,如果这个跳变发生在纳秒到微秒级,dv/dt就是百万伏每秒以上,哪怕只有几百微法的电容,电流也会冲到几十安。
用4700uF来算,如果电压在10微秒内从0冲到12V,dv/dt就是1.2乘以10的6次方伏每秒,充电电流是4700uF乘上这个数,算出来是5640A。当然这是理想情况,实际回路阻抗会限制电流。但至少说明一个问题,冲击电流的严重程度取决于“电压变化的快慢”,而不是“最终电压有多高”。
所以解决办法呼之欲出——把上电时的电压变化斜率拉缓,让电容充电电流可控。这就是缓启动电路的核心目标。
1.3 PMOS高边开关为什么容易“硬启动”
PMOS做高边开关很常见,源极接输入、漏极接负载,栅极低电平导通、高电平关断。但这个结构天然就有“硬启动”的隐患。PMOS本身在完全导通时的导通电阻很小,比如IRF9540这种管子,RDS(on)只有0.117Ω,满载压降很小。问题是,上电瞬间如果栅极被快速拉低,那么Vgs很快达到完全导通状态,PMOS几乎瞬间导通,输出端的大电容等于直接并联到输入端,电流全看回路电阻脸色。
另外一个容易忽略的点是PMOS的体二极管。PMOS的体二极管方向是从漏极指向源极,也就是从负载指向输入。对于正常的12V到负载的供电方向,这个体二极管是反偏的,不会在上电瞬间形成充电通路。但如果负载侧电压高于输入侧,体二极管就会导通,这一点在防倒灌电路里反而是要利用的特性。
对于缓启动来说,真正要关注的是栅极驱动的变化速率。PMOS的导通过程与Vgs电压有关,如果让Vgs从0V缓慢变化到负的完全导通电压,PMOS就会经历一段较长的线性区,在这个区间内,漏极电流被限制在可控范围内,输出电容的充电电流也就跟着被限制住了。
2. 缓启动的设计思路:把阶跃输入变成斜坡输出
2.1 控制栅极斜率,就能控制冲击电流
缓启动的本质很简单:不要一下把PMOS完全打开,而是让它的导通程度逐渐增加。PMOS在开关过程中会经历三个区:截止区、饱和区(恒流区)和线性区(可变电阻区)。在饱和区,漏极电流主要受Vgs控制,近似可以看作一个压控电流源;在进入线性区之后,电流主要由Vds和RDS(on)决定。
如果栅级电压以很慢的速度上升(对于PMOS来说是Vgs从0V缓慢变负),管子就会在饱和区停留较长时间。此时漏极电流被限制在一个较低的值,输出电容缓慢充电,输出电压的斜率也就被控制住了。充电电流等于C_load乘以dVout/dt,而dVout/dt间接由Vgs的变化速率决定。
我习惯用一个生活化的类比来解释:如果直接用开关给电容充电,相当于拿一个消防水管对着水桶猛灌;缓启动则是先让水龙头半开,等水桶水位够了再全开。PMOS在这里扮演的就是一个“半开的水龙头”,栅极电压控制着龙头的开度。
2.2 为什么这里用PMOS而不用NMOS
很多初学者第一反应是用NMOS做开关,因为NMOS导通电阻小、价格低、型号也多,但高边NMOS有个大麻烦。NMOS需要Vgs大于阈值电压才能导通,而源极接的是输出端,输出端的电压一开始是0V,要让NMOS导通就必须在栅极施加一个比输入电压还高几伏的信号。这意味着需要一个电荷泵或者自举电路,专门为NMOS生成一个高于电源轨的驱动电压。
PMOS就没有这个问题。PMOS的源极接输入端,栅极只需要比源极低几伏就能导通。通常直接用单片机或者逻辑电平通过一个NMOS小管子就能把PMOS栅极拉低,电路结构简单不少。代价是PMOS的Rdson通常比同规格的NMOS大一些,价格也略贵,但在12V、十几安这个量级,完全不是问题。
顺便说一句,PMOS和NMOS的符号区别也代表了它们的导通逻辑。PMOS箭头指向栅极,NMOS箭头从栅极指出来,反应的是空穴和电子的流动方向差异。电路图上看到箭头指向栅极,基本上就是PMOS。
2.3 三种缓启动拓扑,我为什么先选RC
缓启动的实现方式大致有三类。
第一类是纯RC延时加PMOS。利用电阻给电容充电的时间常数来控制栅极电压的爬升速率,电路最简单,成本最低,缺点是时间常数受温度影响,精度一般。但对付一般的上电冲击完全够用。
第二类是恒流源驱动的缓启动。用恒流源给栅极电容充电,栅极电压线性上升,比RC的指数上升更可控,时间也更好算。但电路要多几个器件,适合对缓启动时间有严格要求的场合。
第三类是集成缓启动功能的负载开关芯片。比如TI的TPS25962x、ADI的LTC4231这类热插拔控制器,内部集成了电流限制、缓启动和故障保护,功能最全。但成本高,而且一些特定场景下集成芯片的电流上限未必匹配,比如我这边需要15A左右的上电限制,很多负载开关芯片的电流限制点并不在这附近。
我的选择是先用手头的PMOS加RC网络快速出方案,跑通之后再考虑是否升级成控制器芯片。对于12V低电压系统,RC缓启动已经能解决大部分问题,而且仿真工具可以快速验证参数,没必要一上来就上高端方案。
3. LTspice仿真实战:从搭图到把60A压到15A
3.1 搭建PMOS缓启动电路并设置仿真参数
LTspice用的是ADI提供的免费仿真工具,内置了大量元件模型,非常适合做这类电源拓扑的快速验证。我用的版本是Windows下的最新版,界面很朴素,但功能完全够。
先把关键器件列出来:
- V1:12V直流源,模拟电源输入
- M1:PMOS管,选P沟道功率MOSFET,例如IRF9540(Vds=-100V,Id=-23A,Rdson=0.117Ω)
- C_load:4700uF,模拟后级总负载电容
- R_load:1Ω,模拟后级负载
- R_G:1MΩ,PMOS栅极上拉电阻,确保默认关断
- R_D:62kΩ,栅极下拉限流电阻
- C_GS:100nF,栅源之间并联的缓启动电容
- Q1:2N7002小信号NMOS,用作控制管
- EN:脉冲源,控制Q1的开关
电路连接方式是这样的。V1正极接PMOS源极(M1的S脚)和R_G的上端,PMOS漏极(D脚)接C_load正极和R_load,负载电容和负载电阻都到地。PMOS的栅极(G脚)分成三路:R_G往上接到源极,R_D往下接到Q1的漏极,C_GS直接并接在栅极和源极之间。Q1的源极接地,Q1的栅极接EN信号。
在LTspice里放置PMOS时要注意管脚顺序。默认的pmos符号通常是D、G、S、B(底板)四脚,体二极管是自动带的。放置后右键元件,在Value一栏填IRF9540,如果软件自带模型就能直接跑,如果没有就去网上找个厂商提供的SPICE模型加到原理图里。
EN信号源设置成PULSE(0 5 1m 1u 1u 20m 40m),意思是前1ms为0V,Q1保持关断,PMOS栅极被R_G拉到12V,Vgs=0V,PMOS完全关断。到了1ms之后EN变成5V,Q1导通,PMOS栅极通过R_D向地放电,Vgs开始从0V缓慢变为-12V,PMOS逐渐导通,输出电容开始充电。
仿真设置用.tran 20m,也就是仿真20ms,最大步长设成1us,避免漏掉冲击电流的细节。
3.2 关键参数的计算与整定过程
先算一下目标参数。已知C_load=4700uF,希望冲击电流限制在15A以内,根据i等于C乘以dv/dt,得到dv/dt等于15A除以4700uF,约等于3.2V/ms。也就是说,输出电压要以每秒3.2kV左右的斜率上升,12V爬升全程大约需要3.8ms。
栅极慢驱动的目标就是把PMOS的导通过程拉到这个时间尺度。PMOS的阈值电压通常在-3V左右,完全导通需要Vgs到-6V到-8V。当Q1导通后,栅极电压从12V往0V方向下降,Vgs从0V往-12V变化。Vgs从-3V到-6V这个区间,是PMOS从开始导通到进入低导通电阻的关键阶段。
栅极放电的等效时间常数是R_D乘以C_GS。这里R_G是1MΩ的栅极上拉电阻,远大于下拉电阻R_D,主要起默认关断作用,对放电速度的影响可以忽略。如果取R_D等于62kΩ,C_GS等于100nF,时间常数是6.2ms。Vgs下降到-3V,大约需要0.95ms,下降到-6V大约需要4.3ms。两者相差约3.4ms,正好与电容充电时间3.8ms接近。
这个计算是相当粗略的工程估算,因为实际PMOS的米勒电容会在导通过程中形成一个平台期,栅极电流大部分用于给米勒电容放电,输出电压的变化会呈现分段特性。所以我的做法是先按这个估算选好电阻电容,再到LTspice里跑一遍,观察冲击电流的实际峰值,微调参数。
按照这个方案搭好电路仿真,测MOSFET漏极电流I(M1),冲击电流峰值大概在17A左右,比目标15A略高一点。把R_D从62kΩ调到68kΩ,同时把C_GS微调到120nF,时间常数变成8.2ms,仿真结果冲击电流降到约15A,输出波形平滑。这个值已经满足设计要求,就定下来了。
3.3 波形解读与优化方向
仿真的关键波形要看四个:VIN输入电压、VOUT输出电压、Vgs栅源电压、I(M1)漏极电流。
在LTspice里,可以直接添加表达式V(vout)来画输出电压,V(vin)画输入电压,V(vin)-V(gate)就是Vgs。注意PMOS的Vgs是负值,从0V缓慢变化到-12V。
正常的缓启动波形应该是这样的:EN信号在1ms处跳变后,Vgs开始缓慢下降,输出电压从0V开始爬升,爬升速率大致恒定,漏极电流在导通初期出现一个较平缓的峰,峰值就是设计值15A左右,随后电流回落到正常负载电流约12A(12V除以1Ω负载)。
如果仿真出来的冲击电流还是很大,优先检查栅极放电回路是不是太快。比如R_D取得太小或者C_GS不够大,都会导致PMOS迅速导通。另一个方向是调整上拉电阻R_G,如果R_G太小,在Q1导通时仍然会提供额外的充电电流,导致栅极电压无法降到足够低,PMOS进入不了完全导通,虽然冲击电流小了但压降和损耗会增大,发热严重。
还可以在漏极回路加一个小电感,利用电感的电流不能突变特性进一步抑制尖峰,但成本、体积和反向电动势问题都要重新评估。对于12V系统,RC缓启动已经足够。
4. 仿真翻车记录与实板避坑
4.1 仿真常见的几个坑
LTspice虽然好用,但初期有几个坑值得说一下。
第一个坑是PMOS模型方向搞反。PMOS的符号在不同软件里画法有差异,LTspice中如果放置后没有旋转,源极和漏极的顺序可能不符合预期。检查的方法是看体二极管方向:正常PMOS高边开关,体二极管应该是从漏极指向源极,也就是从输出指向输入。如果接反了,仿真结果会完全不对。
第二个坑是初始条件设置。LTspice默认从0时刻开始计算,如果输入源直接就有一个12V阶跃,加上输出电容初始电压为0,很容易在第一步就产生一个数值上的巨大尖峰,这不是真实的电流,而是仿真数值噪声。我通常让输入电压在0时刻之前就稳定,或者用IC指令设置初始条件,再或者设置最大步长限制,让阶跃在几步之内平滑过渡。
第三个坑是ESR没加。实际电解电容的ESR会在充电回路中起到限流作用,但LTspice里默认电容是理想元件。仿真用的电解电容建议加上ESR,比如4700uF电容串一个20mΩ的电阻,这样电流波形更贴近实测。
第四个坑是仿真时间不够长。如果只看前几毫秒,看到的冲击电流是完整的,但缓启动结束后PMOS从线性区进入完全导通的过程也会有电流波动,建议仿真跑满20ms到50ms,观察整个动态过程。
4.2 缓启动带来的副作用与应对方案
缓启动不是免费的午餐,它最大的副作用是让PMOS在上电期间工作在线性区,此时MOSFET上的压降和流过的电流都很大,瞬时功耗会很高。以本次设计为例,缓启动期间12V电压大部分落在PMOS上,电流按平均7A估算,瞬时功耗可能在80W这个级别。虽然持续时间只有几个毫秒,但如果散热条件不好,管子还是会过热。
解决方法是选SOA(安全工作区)好的PMOS,IRF9540的SOA在这个条件下是够用的,但要在原理图上留好焊盘,方便加散热片。另外可以在软件层面测量瞬态功耗,把PMOS的Vds和Id相乘画出来,看瞬态功耗是否超过管子的最大额定值。
另一个副作用是关断变慢。RC缓启动电路在栅极放电时是慢的,但在关断时如果仍然通过同样的RC网络,栅极充电也会慢,PMOS会缓慢关断,这在某些需要快速切断负载的场景下是不能接受的。实际做法是在R_D并联一个二极管,方向要保证导通时经过电阻,关断时直接通过二极管快速给栅极充电。二极管阳极接栅极,阴极接Q1漏极,这样关断的时候电流从Q1侧通过二极管直接灌入栅极,跳过电阻,关断速度明显加快。
4.3 实板测试:从仿真到示波器的最后一步
仿真通过之后,实板调试时还是有几个地方要特别注意。
电流探头要用带带宽足够高的,至少50MHz以上,不然测出来的冲击电流峰值会被滤波掉,看起来比实际小。我吃过这个亏,第一次用200kHz带宽的电流探头测,峰值只有8A,换成高带宽探头再测,真实峰值是15A,仿真值基本对得上。
示波器探头的地线要短。长地线会引入额外的电感,导致测量波形上出现振铃,看起来像是电流震荡。直接用弹簧地线夹能减少这个问题。
还有一个细节是连接器的接触电阻。实板如果通过连接器供电,接触电阻可能远大于0.2Ω,实测冲击电流会比仿真小。这倒不算坏事,但设计时如果在最严苛条件下(比如连接器刚插上、接触电阻很小)冲击电流可控,那后级负载更安全。
最后提醒一下,缓启动的时间和上电时序是两回事。有些板卡的后级DCDC有严格的使能时序要求,比如服务器主板上CPU的供电时序,电源电压需要稳定一段时间之后才能拉高使能信号。PMOS缓启动只是解决了“上电冲击电流”这个问题,后级的时序控制还是得靠专门的电源管理电路去实现。如果两者需要配合,可以在输出端加一个电压检测比较器,当VOUT达到某个阈值再释放后级使能信号,这样既有缓启动保护,又能满足时序要求。
我个人的习惯是把RC参数先按仿真值放上去,然后在实板上用可调电阻试几组值,观察示波器波形微调。毕竟仿真模型再准,也模拟不了PCB寄生参数和负载特性,实测才是最终标准。不过这一轮下来,仿真和实测的冲击电流误差控制在10%以内,LTspice在这个场景下的可信度还是很高的。