| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 手撕Boost!Boost公式推导及实验验证 -> 正文阅读 |
|
[C++知识库]手撕Boost!Boost公式推导及实验验证 |
文章在微信公众号“硬件工程师炼成之路”首发,敬请关注。 前一段时间写了一下Buck电路的振铃,不少同学给我留了作业,让我说说Boost。今天就来看看Boost电路。 友情提示:本文字数1W+了,有点长,请点赞收藏加关注。 我们知道,不论是buck,还是boost电路,总会有一些公式,用得最多的就是电感的感量计算,电流纹波,输入电压纹波大小,输出电压纹波大小等等。 这些公式,在我们设计的时候会去算一算,很多的DCDC的芯片手册里面也会有这些公式。 就我自己而言,我是很讨厌背公式的,相信大家也一样。 所以最好的方式莫过于充分理解电路的工作原理,甚至于可以自己推导出这些公式。 我们如果理解了这些公式,那么就理解了Boost电路各个地方的电流,电压是怎么样的,遇到一些问题,就可以不用去看公式就能知道为什么会这样。 比如电感感量增大,会怎么样? 电容容量增大会怎么样? 工作频率的大小又有哪些影响呢? 所以,推导公式是为了摆脱公式。 另外,计算之后,我们会发现: 计算结果跟实测结果经常差的比较多?根本就不准?为什么呢? 这些问题,本文都会说一说。 Boost的拓扑结构 我们先来看拓扑结构,一切信息都在这个里面。 ? 首先说下最基本的一个工作原理。 上图中MOS管就是一个开关,只要这个速度够快(开关频率够高),控制好导通与关断时间(充放电时间),配合输出滤波电容,就可以得到基本稳定的Vo了,也就是输出电压。 我们来简单看一下过程。 在开关导通的时候,电感L接地,二极管截止,Vi对电感L进行充电,电感两端电压是Vi。 在开关变为不导通的时候,因为之前电感L已经被充电了,有电流流过,电流向右,电感两端电流不能突变,所以会感应出电压,让右侧的二极管导通。 输出电压Vo恒定,二极管导通压降为Vd,所以电感右端电压为Vo+Vd,电感左端电压是电源输入Vi。这是升压boost电路, 所以Vo+Vd>Vi,电感此时放电,给负载供电,以及给输出滤波电容充电。 并且,此时电感的两端电压是右边电压Vo+Vd减去左边电压Vi,即:Vo+Vd-Vi 来个前菜加深理解 Boost电路是升压电路,是直流转直流,不考虑纹波电压的话,Vi和Vo都是恒定的,Vo大于Vi。 在开关导通的时候 电感L一端是恒定电压Vi,另外一端接地。这说明在开关导通的时候,电感L两端的电压是恒定不变的,就是Vi。 根据电感最最最最基本的公式:U=L*di/dt。 (虽然我不喜欢背公式,但是这个公式我觉得是电感最重要的了,我之前还专门讲过,它可以推导出电感储能公式等等。同样,电容的最重要的公式:i=C*du/dt。) 好,电感两端电压U=Vi不变,电感量L也是常数,所以呢,di/dt=U/L=常数,这不就是说电流随时间线性变化吗? 如果我们规定电流流向负载的方向是正,根据电感此时电压,是左边大于右边,所以电感的电流是线性增大的。 当开关断开的时候 电感两端的电压U=Vo+Vd-Vi,也是恒定的,电流同样随时间线性变化。只不过电压的方向是反的,右边大于左边,所以电感的电流是线性减小的。 开关导通,电感电流线性增大。 开关断开,电感电流线性减小。 ? 我第一次看到电感电流波形是这样的时候,我就觉得好巧啊,怎么就一定是线性上升呢?不是曲线上升? 现在自然是知道了,当然,知道也好像没什么卵用,那说点儿有用的。 我们在电感选型的时候,一定知道有个参数叫饱和电流吧。 我们会要求,电感的峰值电流不能超过电感的饱和电流。 ? 为啥是峰值电流,不是有效值电流? ? 因为,我们一般认为电感的感量是不变的,但是实际情况是,电流大到一定程度的时候,电感量L会随电流的增大而减小,所以会有电感饱和电流这一说。 并且,随着电感电流的继续增大,电感量下降速度加快。 我们复习下电感这个曲线,很多电感手册都有,电感的饱和电流是指电感感量下降了30%(不同厂家这个值有差异)的时候的电流。 ? 如果选型的电感饱和电流太小会怎么样呢? 开关导通,电感电流增大,增大到饱和电流的时候,那么L会快速减小,意味着di/dt=U/L快速增大。 也就是说,di/dt变大了,即电感电流随时间更快的增大。 电流更大了,那么进一步电感感量L更小了,di/dt更更更大了,电流又更更更大了。 如此,电流就突破天际了,这就悲剧了。 简单画个图,感受一下。 好了,根据前面的分析,我们还是画出几个关键点处的电压和电流波形吧,这应该是没什么难度的,最难的应该属于那个电感电流的波形了,我们也解释过了。 开始推公式 我们推公式,自然是为了更好的选型,对吧。 目的为了计算出输入电容,输出电容,功率电感,都选择多大的值。 为了更好的理解,我们把已知的条件都说一下。 首先是输入电压Vi,输出电压Vo,输出电流Vo/R,咱总得知道自己想要什么吧,所以这些在设计之初都是已知的。 其次是开关频率fs,这个在芯片选型之后就是确定的了。 再然后就是设计的目标,输入纹波大小△Vi,输出纹波大小△Vo。 我们根据这些已知的量,就可以求得电感感量,输入滤波电容大小,输出滤波电容大小。 好,我重新把图画一下,如下: 因为计算的基本原理其实就是电容和电感的充放电。所以,我们首先要求的就是开关导通的时间和断开的时间,或者说是占空比。 这个也非常简单,我们可以这么想。 在开关导通的时候,电感两端电压是Vi。 在开关断开的时候,输出端电压为Vo,二极管导通,那么电感右侧就是Vo+Vd,电感左侧接的是电源输入,为Vi,所以此时电感两端电压是Vo+Vd-Vi。 整个电路稳定之后,因为负载电流恒定,那么一个周期时间之内,在开关导通时电感电流增加的量,要等于开关截止时,电感电流减小的量,即电感充了多少电就要放多少电,不然负载的电流或者电压就要发生变化。 即一个周期内,电感电流增大量等于减小量。 然后又因为U=Ldi/dt,di/dt=U/L,L不变,所以电感电流变化速度与电压成正比。 简单说就是,电感电流上升或下降的斜率与电压成正比。 斜率与电压成正比,电感电流上升的高度与下降高度又相同,那上升时间不就和电压成反比了吗? 所以,自然就有了: Ton/Toff=(Vo+Vd-Vi)/Vi 我们变换一下,就得到了江湖所传的“伏秒法则” 再根据T=Ton+Toff=1/f 我们可以分别求得导通时间,关断时间,占空比。 好,这里,我们已经推出了第一部分公式。 其实从这里我们可以看到。 占空比与电感量L没有关系,与负载电流的大小也没有关系,只跟输入输出电压有关系。 功率电感选择 我们电感选型首先需要考虑两个参数,电感感量和电感电流。 电感感量又决定了电感纹波电流的大小,为什么呢? 还是因为U=Ldi/dt,di/dt=U/L=电流变化斜率 所以,当我们确定了输入输出电压,那么电感两端的电压就是固定的,那么电感电流变化斜率与电感量成反比,电感越大,斜率越小。 ? 一般来说,电感感量的确定,是让电感的纹波电流△IL等于电感平均电流的20%-40%之间。 ? 那为什么会这样呢?电感过大或过小会有什么影响? 如果电感感量过小,那么电感纹波电流会比较大,即流过电感电流的峰值会很高,电感饱和电流就要很高。如此同时,过大的电流,在开关切换时,会导致EMI问题会更加明显。 如果电感感量过大,那么电感电流纹波会比较小,会导致动态响应变差。 啥叫动态响应变差? 就比如输出一直是1A的电流,某个时刻,负载从需要1A的电流变成突然需要5A的电流。这个时候,如果电感过大,电感电流充上来需要较长时间,那么电感电流需要很多个开关周期才能升到5A,这期间,负载所需要的5A电流主要来源于输出滤波电容的放电,会导致输出电压跌落比较多,有可能出现故障。 简单说,就是这个boost不能及时响应负载电流的快速变化。 好,我们下面来求合适的电感量 首先先求电感的平均电流IL 输出电压是Vo,输出电流是Io,输入电压是Vi,那么根据能量守恒定律。 输入功率*n=输出功率。(n为效率) 输入功率,就是电源的输入电压Vi乘以平均电流,显然,从boost拓扑结构上看,电源的所有电流都会流过电感,那么这个电源输出的平均电流也就是电感的平均电流IL。 即,Pi=Vi*IL 输出功率 显然,就是Po=Vo*Io Pi*n=Po 即Vi*IL*n=Vo*Io 那么IL=Vo*Io/(Vi*n),估算时可以取n≈80% 我在有一些文件里面看到boost电感平均电流用这个公式计算: IL=(Vo+Vd)*Io/Vi 这个公式怎么来的呢? 这个公式是假设只有二极管有损耗的,忽略其它的损耗。 如上图,稳态时,输出端电容是不耗电的,电压也不会变化,所以其平均电流为0,也就是说,流过负载的电流,全部从二极管过来。所以二极管的平均电流也是Io,导通压降是Vd,那么二极管的平均功率是Pd=Io*Vd。 所以有: Po=P负载+Pd 即:Pi=Vi*IL=Io*Vo+Io*Vd 也就是:IL=(Vo+Vd)*Io/Vi 对于这个Boost来说,二极管的损耗是占比比较大的,估算确实可以采用这个公式。不过我们需要记住,这个公式仅仅考虑了二极管的损耗。 ? 我们文章后面就用这个公式来计算吧。 其次,我们来求电感的纹波电流△IL 从前面知道,电感电流就是个三角波,在开关导通时电感电流增大,在关断时,电感电流减小。 那纹波电流的大小求起来就简单了,就等于在开关导通时电感电流增大的值,也等于关断时电感电流减小的值。 我们就计算其中一个,计算开关导通时电感电流增大了多少吧。 这个也非常easy,开关导通,电感两端电压是Vi,导通时间Ton前面已经求出来了。 根据U=Ldi/dt就可以求出电感电流纹波△IL=di 可以看到,电感电流的纹波跟负载电流的大小没有关系。 现在我们已经写出来了电感的平均电流IL,电感的纹波电流△IL,前面说了,△IL应该是IL的20%-40%为宜。 即:△IL=(0.2~0.4)*IL 根据这个等式,就能求得我们的电感值范围了。 至此,我们已经求得了电感值的取值范围,下面开始推导输入输出滤波电容的计算。 输入滤波电容 我们在确定输入滤波电容的时候,是有一个假设的,这个假设是什么呢? 输入电源默认来自远方,是没法提供快速变化的电流的。 正是因为这一点,所以才有输入滤波电容存在的必要,如果输入电源总能快速响应Boost的电流的需求,那还要滤波电容干什么? 比如如果用LTspice仿真,会看到,仿真软件自己的boost示例,都是没有输入滤波电容的。 下图这个LT1619仿真电路,就是没有输入滤波电容的,这个是官方给出的示例,不是我画的。 这个官方仿真示例不要输入滤波电容,原因就在于它用的电源V1是电压源。 电压源在仿真软件里面的意思就是,这个IN的电压就是3.3V,永远都是3.3V,不管后面电流咋变,反正我就能绝对的把Vin的电压控制在3.3V,电流都能供上,你想要多大我就能提供多大,所以就不需要滤波电容了。 这一点,实际电路肯定做不到,所以需要输入滤波电容来提供瞬态的电流需求。 ? 那为什么实际输入电源不能快速响应呢? 实际应用中,输入电源可能距离很远,有了很长的走线,上上期《buck振铃尖峰的实验与分析》文章末尾已经详细说了,走线越长,电感就越大,这里不再赘述。 总的来说,就是相当于远处的电源接了一个电感到boost电路的输入端,电感电流不能突变,也就是说输入电源不能快速响应这个boost电流的需求。 既然等效串联了一个电感,而且Boost电路是开关电源,频率大概在几百Khz,周期也就几us左右。那么在这一个周期之内,我们可以把电源输入过来的电流看作是恒定不变的。 当然,肯定有人会说,如果我的电源输入很近,可以快速响应,那就不对了呀?怎么电流能是恒定的呢? 这想法自然没问题。 事实上,即使是电感,那也是阻碍电流的变化,并不是完全让电流不能变化,所以对于动态的电流需求,还是能响应一点的。当然,线路电感越大,就越不容易马上响应,能提供的电流波形也就越平。 但是呢,我们没法控制这个线路的电感有多大,或者有的电路,电源上面更是直接使用了LC滤波器。 既然没法控制,我们就按照最差的情况来处理,即在一个周期内,把电源输入过来的电流看作是恒定不变的,Boost需要的动态电流完全由滤波电容来提供,根据这种情况选择的输入滤波电容,就可以满足所有的情况了。 好,又说了一堆,回到我们的目标:计算输入滤波电容容量。 输入滤波电容是用来控制输入电压纹波△Vi的,下面来看如何根据△Vi得到输入滤波电容Ci的大小。 我们先理清下思路,输入电压纹波就是输入电容上面的纹波变化。电容上面的纹波变化可以分成两个部分。 一个是电容放电或者是充电,存储了电荷量发生了变化,这个变化会导致电压变化,可以用公式Q=CUq来表示,Uq即是电压的变化。 另一个是电容有等效串联电阻ESR,电容充放电时有电流流过,电流流过ESR会产生压降,这个压降用Uesr表示吧。 所以,电压纹波应该是: △Vi=Uq+Uesr 1、电容电荷量变化引起的压降Uq 我们看输入节点,这个节点的电流有3个,一个是来自电源输入的,前面说了,在一个周期内,它可以看作是恒定的,一个节点是电容,另外一个节点是电感。 根据基尔霍夫电流定律,节点电流和为0,并且电源输入的电流恒定,那么当电感电流的变化量必然等于电容电流的变化量,因为最终3者的和为0。 我们画出三者的电流波形如下:
根据节点电流和为0,那么输入电容的电流变化就是功率电感的电流变化(你增大时我减小,你减小时我增大)。我们从上图也可以很直观的看出来。 显然,电容电流大于0时,电容在充电,电容电流小于0时,电容在放电。 可以看到,电容充电和放电时间长度是一样的,都是周期的一半,T/2。 ? 那充放电的电荷量是多少呢? 放电的电荷量,等于放电电流i乘以放电时间t,不过放电电流不是恒定的。从前面知道,电容放电电流它等于电感电流的变化量,所以电容电流的变化量也是△IL。 需要注意,电容电流是在大于0时充电,电流小于0时放电,也就是图中阴影部分,充电与放电的切换的时刻并不是开关导通与断开的时候,而是在中间时刻。 然后电容放电/充电的总电荷量Q等于电流乘以时间,这不就是图中阴影三角形的面积吗? 三角形底部是时间,充电/放电时间等于T/2 三角形的高为电感纹波电流的一半,△IL/2。 所以总放电量为Q=1/2*底*高 再结合Q=CUq,即可求得Uq了。 具体计算如下图所示: 2、电流流过电容的ESR造成的压降Uesr。 前面波形图知道,电容的充电电流最大是△IL/2,放电电流最大就是-△IL/2,负号表示电流方向,方向的不同,引起的压降的电压也是相反的。 那么ESR引起的总的压降是: Uesr=△IL/2*ESR-(-△IL/2*ESR)=?△IL*ESR 最终,我们求得Uesr的公式如下: 好,我们已经算出Uesr和Uq。 那么根据△Vi=Uesr+Uq,我们就可以△Vi的表达式了,如果知道△Vi,我们也能得到输入电容Ci的大小或者是ESR了。 ? 这个公式看着有点复杂,有两个参数都跟电容本身有关系,ESR和容量Ci。 考虑到我们的电容实际使用情况 陶瓷电容ESR小,容量小,Uq对纹波起决定作用,所以可以近似△Vi=Uq 铝电解电容容量大,ESR大,Uesr对纹波起决定作用,所以可以近似△Vi=Uesr 根据上面两点,我们就可以去选择合适的电容了。 陶瓷电容根据容量值去选 铝电解电容根据ESR去选 当然了,这一段话很多资料都有,但是很少有实际比较过Uq和Uesr的大小的,文章后面会做实验来实际看看 好,现在输入电容的理论计算已经搞定了,我们接着看输出滤波电容。 输出滤波电容 相比输入纹波△Vi大小,我们可能更关心输出纹波的大小,毕竟是要带负载的。 同样,纹波由电容电荷量变化和ESR决定。 1、电容电荷量变化引起的Uq 一个周期内,电容的充电电荷量和放电电荷量必然一样,我们计算出其中一个就行了。显然,放电的时候更好计算,因为放电电流就是负载电流,是恒定的,为Io=Vo/RL。 放电的电荷量等于容量乘以电容电压的变化,也等于放电电流乘以放电时间,即: Q=Uq*C=Io*Ton 根据这个公式,我们就可以求得Uq了。 ? 2、电流流过电容的ESR造成的压降Uesr Uesr如何计算呢? 我们调出输出电容的电流波形就知道了。 ? 这个波形我解释一下。 在开关导通的时候,二极管不导通,负载的电流为Io,完全由输出滤波电容提供,即滤波电容的放电电流也为Io,而且还是在导通时间里面恒定不变的。 在开关从导通切换到断开时,电感的电流已经是充到最大的,因为先前开关导通时电感一直在充电,所以切换时电感电流最大,且等于电感平均电流加上纹波电流的一半,即为IL+△IL/2。切换时,这个已经充好的电流会通过二极管给负载供电,负载电流为Io。同时,电感还要给电容进行充电,根据节点电流和为0,那么电容的充电电流就是电感充到最大的电流减去负载的电流,即IL+△IL/2-Io。 在开关断开之后,电感电压反向了,所以电感电流持续减小,也就是说二极管的电流持续减小,而负载电流不变,所以输出滤波电容的电流持续减小。 根据上图,在开关切换之前,电容的电流为-Io,那么ESR两端的电压是-Io*ESR。 在切换之后,电容的电流立马反向,为IL+△IL/2-Io,那么ESR两端的电压是(IL+△IL/2-Io)*ESR,两者相减,就是ESR上电压变化量,也是ESR产生的纹波电压大小。 即 Uesr=(IL+△IL/2-Io)*ESR-(-Io*ESR) = (IL+△IL/2)*ESR, 好,我们已经算出Uesr和Uq。 那么根据△Vo=Uesr+Uq,我们就可以△Vo的表达式了,如果知道△Vo,我们也能得到输出滤波电容Co的大小或者是ESR了。 与输入滤波电容一样,考虑到我们使用的电容类型。 陶瓷电容ESR小,容量小,Uq对纹波起决定作用,所以可以近似△Vo=Uq 铝电解电容容量大,ESR大,Uesr对纹波起决定作用,所以可以近似△Vo=Uesr 根据上面两点,我们就可以去选择合适的电容了。 陶瓷电容根据容量值去选 可以看到,公式里面没有电感L,也就是说,如果使用陶瓷电容滤波,增大电感量对输出纹波不起作用,不要傻傻去增大电感啦。 ?铝电解电容根据ESR去选 不容易啊,现在公式都推导完成了。 下面进入实验环节,以此来检验上面的公式是否正确 ? 实验验证 实验已知条件及纹波要求: 使用boost芯片LT1619。 开关频率是f=300Khz 输入电压Vi=3.3V 输出电压Vo=5V 二极管使用MBR735,导通电压约为:Vd=0.5V 负载R=3Ω,负载电流Io=Vo/R=1.667A 输入纹波要求:△Vi≤30mV 输出纹波要求:△Vo≤50mV ? 1、首先需要确定电感值L 根据前面推导出的公式计算,可得,电感的取值范围为: 我们求得电感的范围是3.96uH~7.92uH。 我们取现实中常用的电感值L=6.8uH吧。 当然,我们现实中电感选型也要考虑电感的饱和电流是否足够,饱和电流要大于电感会流过的最大电流值ILmax,并且要留有一定的裕量。 显然,这个ILmax=IL+△IL/2。 我们根据前面的公式计算得ILmax=3.1A 2、如果使用陶瓷电容滤波 先看输入滤波电容Ci: Ci的值计算结果(忽略了ESR)如下: 可以看到,Ci要大于8.98uF。 我们取现实中常用的电容值Ci=10uF吧。 并且,在Ci=8.98uF时纹波△Vi=30mV,那么Ci=10uF时,纹波是△Vi=26.94mV,我们记住这个值,后面仿真对比使用。 ? 再看输出滤波电容Co: Co的值计算结果(忽略了ESR)如下: 可以看到,Co需要大于44.45uF。 我们取现实中常用的电容值Co=47uF吧 并且,在Co=44.45uF时纹波△Vo=50mV,那么Co=47uF时,纹波是△Vo=47.29mV,我们也记住这个值,后面仿真对比。 ? 仿真验证: 好,现在电感L,输入滤波电容Ci,输出滤波电容Co都有了 输入电压:3.3V 输出电压:5V L=6.8uH Ci=10uF Co=47uF 我们LTspice仿真电路图如下: ? 有个问题先解释一下,在电源输入端我加了一个1uH的电感L2,就是为了让输入电源过来的电流基本恒定,模拟前面说的最差的情况(电源比较远)。若果没有这个L2,那么Vin就是稳压源的电压,绝对的稳定,没有纹波的。 我们看仿真结果: 输入纹波电压计算值为26.94mV,仿真值为28mV 输出纹波电压计算值为47.29mV,仿真值为47mV 可以看到,仿真的结果与计算值非常接近,也就验证了计算公式的准确性。 ? 这里插一点,为了方便同志们学习boost,我将关键点的电压,电流波形截图出来了,分析Boost可以参考 有一点需要说明下:图中二极管的电流和输出滤波电容的电流都有一个向下的尖峰,这个尖峰是因为二极管的反向恢复时间造成的 即二极管电压反向,它不能马上恢复截止功能的,需要时间,这个时间就是反向恢复时间,在这个时间里面,二极管可以通过较大的反向电流,所以就有了较大的反向电流存在。 文末会给出仿真的源文件,感兴趣的同学可以自己玩一玩,不同类型的二极管反向恢复时间不同,向下的尖峰也是不一样的,这里就不再展开了。 ? 我们继续 陶瓷电容ESR 陶瓷电容我们都通常说ESR很小,可以忽略,前面的计算也是忽略。 不过想必大家也肯定想过,总说ESR小,影响小,那到底有多小? 我们上面用了两个陶瓷电容,10uF和47uF,那我们查查这两个电容的ESR情况。 这里我找了两个型号: 10uF/10V:GRM188B31A106ME69 47uF/10V:GRM21BR61A476ME15 10uF电容的ESR是4mΩ,47uF电容的ESR是3mΩ ? 我们还是先计算一下,ESR对纹波的贡献有多少。 ? 输入10uF电容的ESR是4mΩ,引入的纹波电压是 相比于容量引起的纹波26.94mV,这个约为十分之一左右,确实很小。 两者加起来,新的△Vi=26.94+2.6=29.54mV ? 输出47uF电容的ESR是3mΩ,引入的纹波电压 相比于容量引起的纹波47.29mv,这个也是比较小的,大约是五分之一吧,但似乎达不到可以忽略的地步。 两者加起来,新的△Vo=47.29+9.3=56.59mV ? 下面我们把ESR加入到电路中 运行一下,结果如下图: ? ? 加入ESR之后,可以看到,输入纹波电压还是28mV,基本没有变化,不过与计算值29.54mV也差得不多。 这个输入纹波加了ESR基本没变化,确实是有原因的。 原因是因为输入滤波电容的电流是变化的,我们计算的是Uesr的最大值,出现最大值的时刻并不在电容放电完成后的时刻(放电完成时Uq产生的压降最大)。放电完成的时刻电容电流为0,ESR上面没有压降,所以基本就不变了,所以咱们看到的就是△Vi没变化。 不过这个也不用细细区深究,本身Uesr太小了,影响不大。 这个问题在输出滤波电容上面不会出现,因为输出滤波电容是一直有电流的,这个可以从前面的波形图看出来,所以最终的纹波,是可以将Uesr和Uq直接相加的 因此,我们可以看到,输出滤波电容的纹波电压仿真是56mV,与计算值56.59mV也是非常接近的,增加ESR后,纹波实打实增加了9mV左右。 而且,可以看到,输出纹波在底部有一个突然的上升,这个就是电容电流突然变化,在ESR上面产生的压降,大致也可以看到是9mV左右。 另一方面,这个波形与我们实际测试想比,还差了点啥? 实际测试经常有毛刺对吧,这里面看不到 仿真软件,其实就是使用计算机进行数学计算,一般是不会出错的,不准确肯定是模型不够准确。 很容易想到,仿真图里面电容等效一个理想电容和ESR电阻串联构成,这跟真实的电容还是有差距的,怎么说也会有寄生电感存在吧。 我就不手动添加寄生电感了,直接使用厂家提供的电容spice模型吧。 仿真结果如下图: 输入还是没毛刺,输出毛刺出来了,是不是有点儿意思呢? 算上毛刺,输出纹波大小大概是250mV,这是预想的50mV的5倍。 先来看毛刺吧,毛刺是怎么出来的呢? 其实这个很容易,从前面分析知道,输入电容和输出电容的电流波形如下: ? 由图可知,输入滤波电容的电流是没有突变的(有拐点,但是是连续的),而输出滤波电容的电流是有突变的(由负突然变为正)。 我们知道电容都是有各种寄生参数的,自然也有寄生电感存在,突变的电流意味着di/dt很大,这必然会在寄生电感上面产生高的电压,也就是图中的毛刺。 如何搞定这个毛刺? 去掉是不可能的,这辈子都不可能,只能降低幅度。 我们在输出端加一个100nF小电容,电路图变为如下: ? 输出纹波如下: 可以看到,毛刺下降了,总的纹波从250mV下降到了160mV左右,效果是有的。 ? 毛刺还是有点大,怎么办? 简单啊,再增加一个100nF电容,总共放两个100nf滤波电容,是这样吗? 仿真一下,发现纹波变成了110mV左右,确实有减小。 所以,我们想要降低毛刺,可以多并联几个100nF的小电容。 想必到这里,应该知道boost后面为什么有大电容也有小电容了吧。 大电容决定了整体纹波的大小(去掉毛刺剩下的),小电容是为了降低毛刺的。 ? 除了毛刺这个问题,我们发现,使用了spice文件构建的电容之后,输入纹波和输出纹波都变大了,而且还是变大不少的。 输入纹波从28mV变到了35mV。 输出纹波从56mV变到了83mV(不算毛刺)。 使用spice文件生成的电容模型的仿真结果肯定是更为准确的,它是厂家提供的,能更真实的还原电容的特性。 我们前面的计算公式是从拓扑结构推出来的,只考虑了电容的容量C和ESR,所以是一个理想的结果。 虽说算出来与实际结果有差距,但是还是有其意义的,至少我们知道了纹波大概在多少mv,我们留好裕量就好了。 ? 那这个裕量留多少?2倍吗? 比如计算输出滤波电容47uF,但是仿真纹波比50mV大不少,达到了83mV,那我使用100uF的滤波电容,容量提升了2倍,应该可以控制在50mV以内吧。 选用标称值为100uF/10V的MLCC陶瓷电容可以吗? 答案是:no!no!no! ? 陶瓷电容有一个特性,就是容量会随所加的电压发生变化,这个变化很大!! 这个特性叫直流偏压特性,MLCC有这个特性,铝电解电容没这个。 上图是GRM32ER61A107ME20(100uF/10V)的电容曲线。 我们输出电压是5V,在5V时,这个电容的实际容量只有标称值的50%,也就是说只有50uF左右。 所以,选择100uF/10V是不行的,应该要选择更大容量的电容,比如200uF。或者是2个100uF的电容并联,这样真正的有效容量才会有100uF。 ? 另外一方面,这个是耐压10V的电容,在5V使用时,有效容量只剩下50%,如果输出是7V,容量就只剩下30%了,也就说必须选择更大容量的电容。 或者说选用耐压值更高的电容,这样有效电容量更高。 ? 关于Boost使用陶瓷电容滤波,我们小结一下: 1、我们使用公式计算出的电容量大小,往往是偏小的,真实纹波要比计算值要高一些。 2、MLCC陶瓷电容的直流偏压特性,因此使用时,往往实际容量要比标称值小很多。 3、boost输出会容易产生高频毛刺,需要加小电容降低毛刺。 因此,设计时,真正的电容要比计算的大,纹波要求严格的地方,可能需要4-5倍。 ? 说完了使用陶瓷电容的情况,那使用铝电解电容会怎么样呢? ? 3、使用铝电解电容滤波 还是先来计算一番 铝电解电容的ESR比较大,所以纹波主要由ESR决定,因此我们忽略容量的影响。 ? 输入滤波电容ESR 即输入滤波电容的ESR如果控制在46mΩ,那么输入纹波电压可以控制在30mV ? 输出滤波电容ESR ? 即输出滤波电容的ESR如果控制在16mΩ,那么能将输出纹波电压控制在50mV ? 如果我们使用常规的Low ESR铝电解电容,比如Leon的VZH系列 ? 可以看到,满足输入46mΩ的电容容量非常大,都到了1500uF以上。满足输出16mΩ的滤波电容都没有。 所以说,常规的铝电解电容用在开关电源上面滤波,效果是比较差的,纹波很难控制得比较低。 ? 不过,也有一种电容叫做固态铝电解电容,已经是在广泛使用的。 ? 假定我们现在选用尼吉康的PCF系列铝固态电解电容。 可以看到,33uF的可以大致是可以满足输入纹波要求,330uF大致是可以满足输出的纹波要求得。 从官网上面下载这330uF电容的spice文件(PCF1A331MCL4GS),接到输出端滤波(输入就不看了),同时加了2个100nF的电容,构建仿真电路图。 仿真结果如下: 可以看到,不算毛刺纹波不高,但是毛刺振荡非常明显,加了2个100nF滤波也只能控制在300mV左右。 现在讨论不算毛刺的纹波也没有意义了,因为去不掉,我们肯定是看总的输出噪声是300mV,这个有点大。 这个原因应该是固态电容的等效串联电感太大,我比较了一下这个电容和前面的47uF陶瓷电容的spice文件,确实是固态电容的电感更大的。 所以,总的来说,不论是铝电解电容,还是固态电容,都是没有陶瓷电容好的,这也是为什么很多dcdc芯片手册都推荐使用陶瓷电容滤波的原因吧。 当然,也不是说铝电解电容不能用,因为我举的例子负载电流达到了1.667A的,这个算是比较大的,如果负载电流减小到三分之一,输出纹波(包括毛刺振荡)噪声也降低了,如下图,降低到了110mV左右,纹波要求不严格的话也可以用了。 ? 这里有一个使用电解电容滤波,输出振荡很严重的例子,有兴趣可以看看,我觉得他如果将铝电解换成陶瓷电容滤波,可能会改善很多,链接如下: https://bbs.21dianyuan.com/forum.php?mod=viewthread&tid=289717 小结 这文章字数破纪录了,1w多,我也不想如此,只不过之前还是有同志们说有点难懂,我只能写一句解释一下,不好文字说明的地方就画图,图片也60多张了吧,最后就这样臭长臭长了。 所以总结的第1点就是:有点累。 第2点就是,推导公式确实可以加深对boost的理解,对各处的信号都能了如指掌,这对我们设计boost还是很有用的,特别是出现问题的时候,自然而然都能想到改怎么分析。 第3点就是,计算公式与真实值是有较大差距的 推导的公式,是基于boost的基本拓扑来的,这跟实际使用还是有较大的区别。 其中最大的一点就是,没有公式来计算毛刺(高频振荡),而很多时候,毛刺占输出波动最主要的部分。 所以公式仅仅只能作为参考,更重要的是,我们要对各种基本器件有一个较深的了解,比如我文章举例的陶瓷电容,铝电解电容,固态电容,这三种器件极大的影响了最终的结果,如果只是浮于表面,遇到问题只能东试试,西试试吧,能不能搞定就看运气了。 文章中的仿真原文件,芯片手册文档,还有TI的《Boost转换器基本计算》等。 我都放在了网盘,微信公众号后台回复“炼成之路”即可下载了,东西有点多,自己找一下。 ? |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/6 17:06:12- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |