这个文章我本来没打算写的,因为之前我已经写了《手撕Boost!Boost公式推导及实验验证》,在我看来,Buck与boost是完全类似的,明白一个,另外一个也就明白了。
不过后来还是陆续有粉丝问我有没有buck,那么今天就来推导下buck的公式。毕竟大家基础也是各不相同,举一反三有时还比较困难,有现成的更好。
如果没看过手撕boost的,我建议可以先看看,因为有很多的前提条件在那里面有详尽的解释。这些前提条件在buck里面也是适用的,这篇文章就不会再赘述了,罗里吧嗦也不好。
先简要说明一下文章会说哪些内容。
Buck的拓扑结构
Buck是直流转直流的降压电路,下面是拓扑结构,作为硬件工程师,这个最好是能够记下来,了然于胸。
为啥要记下来,自然是因为这个电路太基础了,并且谁都会用到,更重要的一点,面试可能会考。。。
上图是个异步buck,同步buck就是将里面的二极管换成MOS管。
我用异步buck来分析的原因,就是觉得它要复杂一点,多了一个二极管导通压降,如果异步的明白了,那么同步的自然也明白了。
并且,根据这个拓扑推导的公式也是适用同步Buck的,只需要让公式里面的二极管压降为0即可。
首先,还是来看下工作原理。
工作原理其实非常简单,上图中MOS管就是一个开关,只要这个速度够快(开关频率够高),控制好导通与关断时间(电感充放电时间),配合输出滤波电容,就可以得到基本稳定的Vo了,也就是输出电压。
下面来看下两个过程,开关导通和开关断开。
先看开关导通
开关导通时,二极管不导通,我们看电感,电感左边是Vi,右边是Vo,因为是降压,所以左边大于右边,那么电感两端电压是Vi-Vo,为恒定值。如果把电感电流向右定义为正,那么电感电流是线性增大的,因为L*di/dt=Vi-Vo,那么di/dt=(Vi-Vo)/L=常数。
开关断开时,电感要续流,会产生反向电动势,让二极管导通,二极管导通电压是Vd。因为二极管阳极接地,所以阴极电压是-Vd,也就是电感左边的电压就是-Vd,右边的电压是Vo不变,因此电感两端电压是-Vd-Vo。此时电感电流是线性减小的,因为L*di/dt=-Vd-Vo,di/dt=-(Vo+Vd)/L=常数,并且是负值,所以是线性减小的。
推导公式
我们推导公式,是为了选型,选择输入滤波电容,输出滤波电容,电感。
那么先把已知条件列出来
首先是输入电压Vi,输出电压Vo,输出电流Vo/R,咱总得知道自己想要什么吧,所以这些在设计之初都是已知的。
其次是开关频率f,这个在芯片选型之后就是确定的了。
再然后就是设计的目标,输入纹波大小△Vi,输出纹波大小△Vo。
我们根据这些已知的量,就可以求得电感感量,输入滤波电容大小,输出滤波电容大小。
因为计算的基本原理其实就是电容和电感的充放电。所以,我们首先要求的就是开关导通的时间和断开的时间,或者说是占空比。
这个也非常简单,我们可以这么想。
在开关导通的时候,电感两端电压是Vi-Vo。
在开关断开的时候,输出端电压为Vo,二极管导通,那么电感右侧就是Vo,电感左侧接的是-Vd,所以此时电感两端电压是Vo+Vd。
整个电路稳定之后,因为负载电流恒定,那么一个周期时间之内,在开关导通时电感电流增加的量,要等于开关截止时,电感电流减小的量,即电感充了多少电就要放多少电,不然负载的电流或者电压就要发生变化。
即一个周期内,电感电流增大量等于减小量。
然后又因为U=Ldi/dt,di/dt=U/L,L不变,所以电感电流变化速度与电压成正比。
简单说就是,电感电流上升或下降的斜率与电压成正比。
斜率与电压成正比,电感电流上升的高度与下降高度又相同,那上升时间不就和电压成反比了吗?
所以,自然就有了:
Ton/Toff=(Vo+Vd)/(Vi-Vo)
我们变换一下,就得到了江湖所传的“伏秒法则”
再根据T=Ton+Toff=1/f
我们可以分别求得导通时间,关断时间,占空比。
如果是同步buck,那么Vd=0,则会见到我们经常看见的公式:
功率电感选择
我们电感选型首先需要考虑两个参数,电感感量和电感电流。
电感电流分为2个,平均电流IL和纹波电流△IL。
先看平均电流
显然,输出电压Vo基本不变,也就是说输出滤波电容两端电压没有变化,那么电容的平均电流为0,根据输出节点的基尔霍夫电流定律,节点电流和为0,那么电感的平均电流就等于负载的平均电流Io。
即IL=Io=Vo/R。
然后我们再来求电感的纹波电流△IL
从前面知道,电感电流就是个三角波,在开关导通时电感电流增大,在关断时,电感电流减小。
那纹波电流的大小求起来就简单了,就等于在开关导通时电感电流增大的值,也等于关断时电感电流减小的值。
我们就计算其中一个,计算开关导通时电感电流增大了多少吧。
这个也非常easy,开关导通,电感两端电压是Vi-Vo,导通时间Ton前面已经求出来了。
根据U=Ldi/dt就可以求出电感电流纹波△IL=di=U/L*Ton
可以看到,电感电流的纹波跟负载电流的大小没有关系。
同时呢,我们也很容易得到电感的峰值电流,就是电感的平均电流加上纹波电流的一半嘛,即ILp=IL+△IL/2=Io+△IL/2。
也就是:
计算这个峰值电流有什么用呢?
电感选型时,电感的饱和电流必须大于这个ILp,并且要留一定的裕量。
现在我们已经写出来了电感的平均电流IL,电感的纹波电流△IL,△IL应该是IL的20%-40%为宜。
即:△IL=(0.2~0.4)*IL
根据这个范围,就能求得我们的电感值范围了。
输入滤波电容计算
我们在确定输入滤波电容的时候,是有一个假设的,这个假设是什么呢?
输入电源默认来自远方,是没法提供快速变化的电流的。
实际应用中,输入电源可能距离很远,有了很长的走线,走线越长,寄生电感就越大,也就是说输入电源不能快速响应这个Buck输入电流的需求。
因此,我们在一个周期时间内,可以将输入电源的电流看作是恒定的,稳定状态下,这个电流也等于电源输入的平均电流Ii,我们先求一下电源输入的平均电流Ii。
怎么求电源的输入电流呢?
很简单,使用能量守恒定律就可以了。
不考虑MOS管的损耗的话,那么用耗电的器件有2个,一个是二极管,一个是负载R。
由工作原理可知,二极管只在MOS开关断开时有电流流过,其电流等于电感电流,并且一个周期内有电流流过的时间为Toff,所以二极管的平均电流也等于电感的平均电流,为IL=Io。
一个周期内二极管流过电流的时间为Toff,电流为IL,导通压降为Vd。
所以二极管的功率为:
Pd=Vd*Io*Toff*f =Vd*Io *(Vi-Vo)/(Vi+Vd)
负载的功率是Pr=Io*Vo
电源输入功率Pi=Vi*Ii
根据能量守恒,Pi=Pr+Pd,可以得到输入电源的平均电流Ii为:
现在已经求出Ii,在一个周期内,电源的输入电流可以看成恒定值,为Ii。
了解了这个前提条件,我们回到目标:计算输入滤波电容的容量
我们先理清下思路,输入电压纹波就是输入电容上面的电压变化。电容上面的纹波变化可以分成两个部分。
一个是电容放电或者是充电,存储了电荷量发生了变化,这个变化会导致电压变化,可以用公式Q=CUq来表示,Uq即是电压的变化。
另一个是电容有等效串联电阻ESR,电容充放电时有电流流过,电流流过ESR会产生压降,这个压降用Uesr表示吧。
所以,电压纹波应该是:
△Vi=Uq+Uesr
1、电容电荷量变化引起的压降Uq
我们看输入节点,这个节点的电流有3个,一个是来自电源Vi输入的,前面说了,在一个周期内,它可以看作是恒定的,一个节点是电容,另外一个节点是开关。
根据基尔霍夫电流定律,节点电流和为0,并且电源输入的电流恒定为Ii,那么输入电容电流的变化量必然等于开关电流的变化量,因为最终3者的和为0。
也就是说,开关断开时,开关电流为0,那么电源输入的电流全都流进输入电容,电容被充电,此时电容的充电电流为Ii。而开关导通时,电感需要续流,这个电流由电源输入和输入滤波电容二者共同提供,电容此时放电。
并且,开关切换的时候,开关电流是突变的。而三者电流和为0,那么电容的电流必然也是突变的。
我们画出三者的电流波形如下:
一个周期内,电容的充电电荷量和放电电荷量必然一样,我们计算出其中一个就行了。
显然,充电的时候更好计算,因为充电时开关断开,电容的电流就是电源的输入电流,是恒定的,为Ii。
根据Q=I*t,那么充入的电荷量为Q=Ii*Toff,电容充入电荷,会导致电压变大,这个电压的增量这里取个名字叫Uq,那么Q=Uq*C,也就是Uq=Q/C=Ii*Toff/C
最终可以求得Uq
2、电流流过电容的ESR造成的压降Uesr
想要知道ESR造成的纹波大小,我们只需要知道流过电容的电流就知道了,因为电压等于电流乘以ESR。
我们把电容的电流波形单独画一下。
这个波形下面解释下:
在开关断开的时候,电源输入电流Ii全部进入输入滤波电容,因为li恒定,因此输入滤波电容的电流就是恒定为li,此时电容充电,如果我们把充电电流定义为正,那么电流就是+li。
在开关导通之后,电感原本从二极管续流,变成了从MOS管续流,因为之前电感一直在放电,所以切换时电感电流最小,等于IL-△IL/2,在整个Ton时间段内,电感是被充电的,所以电感电流一直在增大,直到达到峰值电流IL+△IL/2。
并且在Ton时间内,电感电流走的是MOS管通路,因此,Mos管电流最大也是IL+△IL/2。根据输入节点电流和为0,这个电流等于输入电源电流Ii和滤波电容的放电电流,所以滤波电容的最大放电电流为IL+△IL/2-Ii。因为前面定义了充电电流为正,那么放电电流就为负,即滤波电容电流是:-(IL+△IL/2-Ii)。
知道了电流,ESR,那么我们就知道了纹波大小。
在开关断开时,ESR上面产生的压降是恒定的,为:Ii*ESR
在开关导通后,ESR上面产生的最大压降是:-(IL+△IL/2-Ii)*ESR
两者相减,得到的就是一个周期内ESR引起的纹波大小,也就是:
Uesr=(IL+△IL/2)*ESR
计算过程如下:
好,我们已经算出Uesr和Uq。
那么根据△Vi=Uesr+Uq,我们就可以△Vo的表达式了,如果知道△Vo,我们也能得到输入滤波电容Ci的大小或者是ESR了。
输入总的纹波公式:
这个公式看着有点复杂,有两个参数都跟电容本身有关系,ESR和容量Ci。
考虑到我们的电容实际使用情况
陶瓷电容ESR小,容量小,Uq对纹波起决定作用,所以输入纹波电压可以近似为Uq,如果我们要限定纹波不能大于△Vi,那么Uq≤△Vi。
铝电解电容容量大,ESR大,Uesr对纹波起决定作用,所以输入纹波电压可以近似Uesr,如果我们要限定纹波不能大于△Vi,那么Uesr≤△Vi
根据上面两点,我们就可以去选择合适的电容了。
陶瓷电容根据容量值去选
铝电解电容根据ESR去选
好,现在输入电容的理论计算已经搞定了,我们接着看输出滤波电容。
输出滤波电容
相比输入纹波△Vi大小,我们可能更关心输出纹波△Vo的大小,毕竟是要带负载的。同样,纹波由电容容量和ESR决定。
我们看输出节点,这个节点的电流有3个,一个是来自负载的,它可以看作是恒定的,为Io=Vo/RL,一个节点是输出滤波电容,另外一个节点是电感。
根据基尔霍夫电流定律,节点电流和为0,并且负载的电流恒定,那么电感电流的变化量必然等于电容电流的变化量,因为最终3者的和为0。
我们画出三者的电流波形如下:
根据节点电流和为0,那么输出电容的电流变化就是功率电感的电流变化(你增大时我减小,你减小时我增大)。我们从上图也可以很直观的看出来。
显然,电容电流大于0时,电容在充电,电容电流小于0时,电容在放电。并且图中也可以看到,电容充电和放电时间长度是一样的,都是周期的一半,T/2。
那充放电的电荷量是多少呢?
从前面知道,输出电容的电流变化就是功率电感的电流变化,因为电感的纹波电流是△IL,那么电容的纹波电流也是 △IL。又因为电容的平均电流是0,所以电容的充电电流和放电电流都是△IL/2。
需要注意,电容电流是在大于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,那么根据△Vo=Uesr+Uq,就可以求出总的输出纹波大小△Vo。
根据上面两点,我们就可以去选择合适的电容了。
陶瓷电容根据容量值去选
陶瓷电容ESR小,容量小,Uq对纹波起决定作用,所以可以近似为Uq,如果我们要限定纹波不能大于△Vo,那么Uq≤△Vo
铝电解电容根据ESR去选
公式到这里就基本推完了。
公式汇总
下面把Buck所有的公式汇总下,如下图:
之前写过boost的公式推导,不过没汇总公式,现在也汇总如下:
实际电路应用
公式现在都已经推出来了,这些公式都是从拓扑结构里面推出来的,我们也会在很多芯片手册中看到这些公式,那么我们设计时,按照这些公式选择电容可以吗?
答案是:no,no,no!
原因在于,实际我们使用的器件都不会是理想的。
就陶瓷电容来说,一个直流偏压特性,可能就使得电容实际容量只有标称值的30%甚至更低。
还有电容会有ESL等参数,电路本身还有会其它的损耗等等,这些都会使得buck/boost实际输出与理论推导有较大的出入。
虽然这些公式不能直接套用,但是我们根据它们也能大致知道是个什么情况,所以其作用还是有的,我们设计时也需要去算一算的。
这些因素具体有多大的威力,以及实际电路该如何考量。因为我在之前的《手撕Boost!Boost公式推导及实验验证》一文中,进行了大量的实验以及分析,现在就不再说了,有兴趣可以去翻一翻。