硬件工程师炼成之路
认证:优质创作者
作者动态
ESD如何仿真?我找到了ESD仿真的模型
09-04 08:17
芯片贴片前为什么要烘烤?有哪些注意事项
09-02 09:08
PCB走线宽度与过流能力知多少?
08-29 10:51
没有接地的产品,ESD放电测试时地回路是怎样的?
07-25 09:33
我常用的分析方法——输入输出阻抗,是怎么玩的?你会不?
05-28 14:53

MOS管栅极电阻的功耗该如何计算

问题起源

我在公众号发的视频一般也会发在B站,最近就有一个小伙伴在我的视频底下面留言了。

因为这个视频里面有讲MOS管栅极串联电阻的作用,怎么就能抑制谐振,还有电阻的阻值怎么选择,但是我没说这个电阻的功耗怎么计算。

考虑到有的小伙伴不知道我之前讲了啥,我就把链接再贴上(看过的就不用浪费时间再看了)

B站是这个链接:https://www.bilibili.com/video/BV15o4y1o7Ru/

公众号里面的视频链接是这个:

《LC串联谐振的意义》

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);
声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 6
关注 748
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧