文章目录
之气写过一篇超级详细的MOSFET的损耗计算过程,比较繁琐,不利于初级工程师的理解,今天这篇文章,我将用估算的方式讲解MOSFET的损耗计算过程,希望能给大家带来帮助。
提示:以下是本篇文章正文内容,下面案例可供参考
无论是在开关电源领域还是其它的应用场景下,效率都是设计时关注的一个重要的参数。效率的计算公式是:
那么如何提高效率呢?很明显Pin输入功率是一定的,那么提高Pout,减小中间损耗是提高效率的关键步骤。对于一个开关电源来说,减小MOSFET的能量损耗,对DCDC整体效率的提升具有重要意义。
MOSFET的三部曲包含:(1)开关损耗 (2) 导通损耗 (3) 驱动损耗,想必看过我上一篇文章的小伙伴都了解了,在开始计算之前呢,先回顾几个之前学过的概念和公式。
频率:单位时间内的次数,称之为频率,用字母f标识。
功率:单位时间内消耗的能量,称之为功率,用字母P表示。
P=I^2*R或者P=U*I
能量:功率在一定时间内做的功,称之为能量,用字母W表示。
P是定值时:
W=P*t
P是对t的函数时:
电流与电荷量之间的关系:
I:电流 Q:电荷量 t:时间
有了上面的概念和公式,下面开始进行计算。

开关过程的介绍可以参考另一篇原创文章:
(48条消息) MOSFET的开启过程详细讲解_探索硬件之路的博客-CSDN博客
https://blog.csdn.net/qq_24118431/article/details/121712154(一)开关损耗
我们关注一下VDS和ID这两个参数,从图中可以看出:
🌂在t2阶段,VDS是一个定值,ID可以等效看成一个随时间变化的斜率为正数的一次函数,那么P=VDS*ID就可以等效为在ID函数的基础上乘以一个系数。
🌂在t3阶段,反过来了,ID是一个定值,VDS可以等效看成一个随时间变化的斜率为负数的一次函数,那么同样P=VDS*ID就可以等效为在VDS函数的基础上乘以一个系数。
总结:
♦首先说明一下,为啥只关注t2和t3阶段?因为只有在这两个阶段,VDS和ID才会重叠,也就是说这两者均比较大,所以乘积比较大,也就是功率损耗比较大。t1阶段ID几乎为零,虽然VDS很大,但是乘积几乎为零;t4阶段,VDS几乎为零,虽然ID很大,但是乘积会很小。
♦我们把两个时间阶段合并在一起,就出现了神奇的下图。功率P与时间的一个函数是一个三角形,那么三角形围成的面积就是t2-t3阶段的能量了。
那么如何算开关损耗的功率呢?前面我们提到过功率的概念,想必都已经会算了吧,那就是单次的能量乘以频率:

那么又有人会问了,那t2和t3的时间如何确认呢?一般Datasheet不会直接给出Qgs1和Qgs2的值,会给一个Qgs整体的值。对于t2我们可以反推一下。
首先,Cgs=Ciss-Crss,在t2时间段内,Cgs电压从VGS(th)上升到VGS(pl),利用C=Q/U公式,可以计算出Qgs2=Cgs*(VGS(pl)-VGS(th)),然后t2=Qgs2/I,注:I是横流源
对于Qgd,datasheet一般是给出值的,所以,t3=Qgd/I,此处电流I同上,均为同一大小恒流源。到此,开关损耗Ps已经计算完成。


(二)导通损耗
导通损耗就比较简单了,计算公式如下:
I:MOSFET完全导通后的电流值,上图中t3→t4阶段的电流大小
R:MSOFET完全导通后的Rds值,上图中t4阶段的Rds,也称Rds(on)
(三)驱动损耗
驱动损耗Pd,顾名思义就是MSOFET的驱动电路驱动MOSFET打开损失的能量。想象一下,驱动电路在MOSFET打开期间,提供了的所有电荷量为Qg(tol),总功率计算如下:
注解:P=U(I*t)*f,也就是能量W=U*I*t,在驱动MOSFET开启的过程中,此阶段损耗很小,一般忽略不计。
以上就是今天要讲的内容,本文通过估算的方式计算了MOSFET的损耗,且加入了一些文字注解,帮助大家理解公式。理解了其中的原理,比掌握了计算公式更重要。想要讨论并钻研硬件知识的小伙伴可以加群,一起讨论。如二维码过期,可添加微信号:FH-YY-QING

这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
给定一个nxmbool数组:[[true,true,false],[false,true,true],[false,true,true]]有什么简单的方法可以返回“该列中有多少个true?”结果应该是[1,3,2] 最佳答案 使用转置得到一个数组,其中每个子数组代表一列,然后将每一列映射到其中的true数:arr.transpose.map{|subarr|subarr.count(true)}这是一个带有inject的版本,应该在1.8.6上运行,没有任何依赖:arr.transpose.map{|subarr|subarr.in
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A