论坛的朋友们大家好,本次研讨会由MPS 工程师Jackson讲解,这次的主题是![]()
电机驱动功耗计算以及瞬态热阻抗曲线的应用。
在电机驱动应用中,常常会遇到电机堵转等情况,瞬态电流可能是稳态电流的十几倍,这时候很多客户想要知道芯片的瞬态结温有多少,那本次研讨会分为三个部分来帮助大家解答这个问题,分别是功耗计算,热模型,瞬态热阻抗曲线的应用,最终会以我们MPS 芯片MP6600L为例子,展示如何估算瞬态结温。
论坛的朋友们大家好,本次研讨会由MPS 工程师Jackson讲解,这次的主题是![]()
电机驱动功耗计算以及瞬态热阻抗曲线的应用。
在电机驱动应用中,常常会遇到电机堵转等情况,瞬态电流可能是稳态电流的十几倍,这时候很多客户想要知道芯片的瞬态结温有多少,那本次研讨会分为三个部分来帮助大家解答这个问题,分别是功耗计算,热模型,瞬态热阻抗曲线的应用,最终会以我们MPS 芯片MP6600L为例子,展示如何估算瞬态结温。
在MOS管的等效模型中存在三个电容,电容的下标由MOS管引脚名称来命名,他们分别是 Cgd, Cgs, Cds. MOS 开通关断,其实就是对这些电容充放电的过程;在 MOS 管的手册中,也有三个电容,输入电容, 输出电容,反向传输电容,其中反向传输电容就直接等于 Cgd. 输入电容等于Cgs+Cgd, 把GS两端当成一个二端口网络看进去,等效的电容就是 Ciss, 它就相当于 Cgd 和 Cgs 两个电容的并联,其实 Ciss 就是MOS导通时GS两端的电容,Coss 就相当于 MOS 关断时,D 和 S 两端的电容;
穿插一个关于电容的小知识:电容 一个极板跑进多少电荷,另外一个极板就会被寄出多少电荷;一个极板被吸走多少电荷,另外一个极板就会补充进多少电荷。
在 PWM 低电平阶段,0V给到了 MOS 管G端,所以电压 VGS 为0,此时MOS是关断的,所以电压VDS=电源电压VIN,所以这时候电容Cgs两端电压是0V,电容cgd两端电压Vgd=-VIN, Cgd电容 上+,下-;当PWM上升沿出现时,Vgs电压也就逐渐上升,这个上升的过程标准是四个阶段。
在第一阶段,驱动电流同时对Cgs 和 Cgs充电,电压将正电荷推向了G端,电荷兵分两路,下面这路容易理解,正电荷被灌进Cgs, G端的电压逐渐抬升;而上面这路就需要用到我们刚刚补充的电容小知识,驱动电压将正电荷推进了Cgd的下极板,下极板的负电荷被中和掉一部分,上极板的正电荷被挤出了一个部分,由于此时此时MOS管时关断的,这部分正电荷只能流入VIN, 上极板始终连着VIN,下极板负电荷不断被中和,Cgd两端电压差逐渐减小,所以下极板电压也是逐渐上升,那么综合来看,这两个电容的共同作用都是使G端电压逐渐上升。普遍的说法一般是驱动电流对Cgd分流比较小,在第一阶段可以忽略掉这个电容。
重点是第二阶段,随着是Vgs电压逐渐上升,当Vgs超过Vgsth,MOS开始逐渐导通,Vds电压会急剧下降,DS两端就像开关闭合,电容Cgd上极板电压急剧下降↓,这个过程中伴随着大量正电荷被吸到GND端,与此同时,下极板大量吸收正电荷,这些电荷从哪里来呢,就是从驱动端来,此时Cgd这个电容狮子大开口,疯狂吸收驱动电流 ,而下面电容Cgs电荷却得不到补充,所以这期间Vgs就无法继续上升,实测中
我们发现有时候如果米勒电容胃口太大,还能看到这个平台会直接凹陷。虽然Cgd的胃口很大,但是好在Cgd还是冲满了,此时MOS完全导通,Vds电压就为0,上极板电压为0V,Vgd等于驱动电压,MOS管就在这稳定的状态下,等待着下降沿的出现,关于下降沿此处就不再赘述;以上描述就是单个MOS开通过程;
前面我们提到开通过程中有四个阶段,第一阶段是Vgs电压从0到Vth, 这个过程MOS始终没有导通,Ids为0,因此损耗为0,栅极损耗可以忽略不计;第二个阶段是,MOS开始导通到米勒平台,这时候电压始终为Vds,电流从0变化到Ids(on), 功耗就是1/2 VDS* IDS* t2* FPWM;
第三个阶段是米勒平台,这时候Ids是几乎不变的,VDS逐渐变成0,所以功耗也是1/2 VDS* IDS* t3* FPWM;
第四阶段完全导通,Vds为0,也就没有开关损耗; 因此我们开关损耗主要是t2,t3 决定,也就是Cgs,Cgd决定,这两个电容会影响我们的开关速度,从而影响开关损耗;通常在计算的时候t2+t3, 近似成我们的管子的rising time。 关断时的计算也是同理,因此开关损耗的计算就是我们前面展示的公式;
简单来讲,芯片散热过程,我们可以量化不同路径上热阻值的串并联的关系,通过热学仿真,我们能得出一个热特征参数,Ψ, Ψ有两个值,ΨJT ΨJB,可以通过这两个值的任意一个来计算芯片稳态的结温;
有了这些RC值,就可以根据拟合成一条热阻抗曲线,下面来看一下;
import matplotlib.pyplot as plt
from math import e
import numpy as np
R_th = [6.34876e-1,6.158431e+0,8.166576e+0,1.740248e+0,5.968462e+0,3.840516e+0,1.40592e-1]
C_th = [1.46521e-3,1.27947204e-1,1.939822263e+1,3.2721125e-2,2.279791058e+1,1.788177141e+0,4.43541e-4]
assert len(R_th) == len(C_th)
th = len(R_th)
#x = np.arange(0,1,0.0001,dtype = float)
x = np.logspace(-6, 0, num=7, base=10) # 对数域
y= np.sum([R_th[i] * (1-e**(-1*x/(R_th[i]*C_th[i]))) for i in range(th)],axis=0) # Foster模型的热阻抗曲线方程
plt.figure(figsize=(25,9))
plt.yscale("log") # 对数坐标
plt.xscale("log") # 对数坐标
plt.xlim(1E-6,1)
plt.ylim(1E-3,1)
# 开启刻度线网格
plt.grid(which='major',axis='both',linewidth=0.75,linestyle='-',color='orange')
plt.grid(which='minor',axis='both',linewidth=0.25,linestyle='-',color='orange')
plt.plot(x,y)
plt.show()