MOS管栅极电阻的功耗该如何计算
开头先说个好消息,经过一番操作,终于开通了留言功能,不再是自说自话了。
下面进入正题
问题起源
我在公众号发的视频一般也会发在B站,最近就有一个小伙伴在我的视频底下面留言了。
因为这个视频里面有讲MOS管栅极串联电阻的作用,怎么就能抑制谐振,还有电阻的阻值怎么选择,但是我没说这个电阻的功耗怎么计算。
考虑到有的小伙伴不知道我之前讲了啥,我就把链接再贴上(看过的就不用浪费时间再看了)
B站是这个链接:
https://www.bilibili.com/video/BV15o4y1o7Ru/
公众号里面的视频链接是这个:
MOS管串联电阻的问题,在视频的后面。两个链接内容是一样的,看一个就可以了。
小伙伴留言的问题是:栅极电阻的功率该如何计算呢?
我看到这个问题的时候,心里想:呀,好问题啊,这个涉及到这个电阻的封装大小。想我以前,这种电路,我都是使用手册推荐的封装的,因为我觉得这个电阻的功率太难算了,也不去计算。
曾经也有人质疑我说:你搞0805这么大封装的干什么,这个电阻就这一个地方用,搞0402的不行吗,物料归一,板子还整齐好看,都是0402的。
我也不是吃素的,反驳道:no!no!no!开关速度快,瞬间电阻功率大,会烧的。
事实上,功率多大,会不会烧,这我哪里知道,汗。。。好在是忽悠过去了。
不过,事到如今,有了前面的基础,既然有小伙伴提出了这个问题,那还是得解决一下。因为,更重要的是,最近灵感也木有啦,正好借这个机会水一篇文章。
提取问题
说干就干。
小伙伴的原问题是:“电阻电路学习中请问一下栅极电阻的功率要怎么计算?比如我10V/2A输出的驱动芯片20欧的栅极电阻。”
句子不是很通顺,想来应该是手机打字留言不方便,不过我看懂了:驱动电压是10V的,驱动电流到输出到2A,栅极串联了20Ω的电阻,请问这个电阻的功率是多少?
这个小伙伴没有给出开关频率,很明显,功率是跟频率相关的,假如1秒钟驱动一次,那这个功率肯定很低,因为只有在切换的时候电阻才会有电流,大部分情况下电压稳定,电阻电流为0。
我们加入开关频率1Mhz,占空比为50%的PWM波,也就是方波。
驱动电流可以达到2A,串联了20Ω电阻,因为不会发生谐振(如果不知道为什么,可以看下前面的视频),所以最大电流不会超过10V/20Ω=0.5A,也就是说驱动电流肯定是够的。这就说明了驱动电压10V不会被拉下来。
我们假定栅极走线为12mil线宽,长度为1cm的寄生电感是9.17nH,为了方便寄生,我们设为10nH吧。功率MOS管的寄生电容大概是1nF左右,我们就取1nF。
最终问题提炼为:驱动电压10V,驱动信号为PWM波,占空比为50%,频率为1Mhz,寄生电感10nH,MOS管寄生电容为1nF,栅极串联电阻为20Ω,请问,这个电阻消耗的功率是多大?
建立模型
我们提取电路模型如图。
那么如何求电阻功率呢?确实不好求,有电感,有电容,阻抗也是随频率变化的,不固定,咋整?
理论基础
这个时候,就需要运用到前面学的知识啦,信号在脑子里面是什么样的呢?信号在脑子里面应该被拆解为一个个频率的正弦波,别说你不知道啊,我文章写了,视频也发了,不知道的话你对得起我么?
先将驱动电压波形拆解为各个频率正弦波,然后分别计算各个正弦波分量在电阻上面的功率,再把它们加起来就是总功率了。
What?这么复杂?你在玩我吗?
这么复杂的事情自然是我帮你们干了。
我的思路是使用Matlab工具,这个工具有个好处,那就是我们可以构建任意波形,不一定非得是正弦波,三角波,方波这种,反正都是一序列的点,只要能描述出来,就可以进行处理。
构建驱动序列之后,使用fft函数分析频谱,得到各个频率的幅度值,这个东西其实就是对应频率的电压值啦。如图
我们知道,电感和电容的阻抗在不同的频率下是不同的,它是频率的函数,jwL和1/jwC。因此,上面的模型,我们很容易就能写出来总的阻抗公式了,之所以要得到阻抗,是因为我们要求电阻每个频率分量的电流。
阻抗Z=Rs+jwL+1/jwC。
现在我们有了各个频率分量的电压值,也有了阻抗,那么各个分量的电流值就出来啦。因为是串联的,所以这个电流也是流过电阻的电流。
我们再根据P=I^2*R,就可以求出各个频率分量的功率的,再把它们加起来,那就是总功率了。
最终我们求得,电阻的功耗是P=0.10047W
Matlab代码
上面的过程看起来是很复杂的,其实Matlab代码很简单,也就那么三四十行。真正计算的过程也就不到10行,其它的都是定义变量,画图,设置坐标轴什么的。
建议大家可以运行代码试试,我之前也分享了在线运行Matlab的方法。
看不懂代码也没关系,这个模型最重要的参数就5个,电感,电容,电阻,驱动电压,开关频率。可以自己去尝试修改为不同的值,这样可以算出各种不同情况下电阻的功率。也可以收藏下,在以后真正需要计算的时候,代入相关参数,就可以得到电阻的功率啦。
需要指出的是,这些参数对结果的影响很大,我就不一一说明有啥差别啦。
Fclk=1000000; %PWM频率为1MHz
U0 = 10; %电压幅值10V
Rs = 20; %串联电阻为20Ω
ESL= 10^(-8); %走线电感10nH
C= 10^(-9); %走线电感为1nF
Fs=1000*Fclk; %采样率为基频的1000倍
Num_T=100; %分析100个周期的信号
L=(Fs/Fclk)*Num_T; %100个周期信号长度(采样总点数)
T=1/Fs; %采样周期
t=(1:L)*T; %时间长度
N=length(t);
LEN_PWM=zeros(1,N); %定义PWM信号采样序列
for i=1:N %产生PWM信号-点序列
if mod(i,(Fs/Fclk))<Fs/(2*Fclk)
LEN_PWM(i)=0;
else
LEN_PWM(i)=U0;
end
end
figure;
subplot(2,2,[1 2]);
plot(t,LEN_PWM); %画出PWM信号
title('PWM波形','FontSize',18);
set(gca,'XLim',[0 10/Fclk]);%x轴的数据显示范围
set(gca,'YLim',[-0.5 10.5]);%y轴的数据显示范围
xlabel('时间t (s)','FontSize',18);
ylabel('电压/V','FontSize',18);
X_LEN_PWM=abs(fft(LEN_PWM)); %fft傅里叶变换
Fn=Fs*(0:(L/2))/L; %各个谐波频率序列
An=X_LEN_PWM(1:L/2+1)*2/L; %每个谐波的幅值序列
Zn=Rs+Fn.*ESL.*2.*pi.*1i+1./(Fn.*C.*2.*pi.*1i); %各个频率对应的总阻抗序列
Pn=(((0.707.*An)./abs(Zn)).^2)*Rs; %各个频率的功率序列,电压有效值除以阻抗得到电流
Pall=sum(Pn) %总功率
subplot(2,2,3);
semilogx(Fn,An);
title('PWM频谱','FontSize',18);
xlabel('f (Hz)','FontSize',18);
ylabel('幅度','FontSize',18);
subplot(2,2,4);
semilogx(Fn,Pn);
title(['电阻功率谱-总功率=',num2str(Pall),'W'],'FontSize',18);
xlabel('f (Hz)','FontSize',18);
ylabel('幅度','FontSize',18);
本文就到这里啦,因为都是自己的想法,如有错误,请高手们指出来。