天天看點

手撕Buck!Buck公式推導過程

這個文章我本來沒打算寫的,因為之前我已經寫了《手撕Boost!Boost公式推導及實驗驗證》,在我看來,Buck與boost是完全類似的,明白一個,另外一個也就明白了。

不過後來還是陸續有粉絲問我有沒有buck,那麼今天就來推導下buck的公式。畢竟大家基礎也是各不相同,舉一反三有時還比較困難,有現成的更好。

手撕Buck!Buck公式推導過程

如果沒看過手撕boost的,我建議可以先看看,因為有很多的前提條件在那裡面有詳盡的解釋。這些前提條件在buck裡面也是适用的,這篇文章就不會再贅述了,羅裡吧嗦也不好。

先簡要說明一下文章會說哪些内容。

1、buck的拓撲結構,工作原理

2、輸入輸出電容取值的推導過程,電感感量的計算過程

3、boost各處電壓,電流波形

4、buck,boost公式彙總

5、實際電路應用情況

Buck的拓撲結構

Buck是直流轉直流的降壓電路,下面是拓撲結構,作為硬體工程師,這個最好是能夠記下來,了然于胸。

為啥要記下來,自然是因為這個電路太基礎了,并且誰都會用到,更重要的一點,面試可能會考。。。

手撕Buck!Buck公式推導過程

上圖是個異步buck,同步buck就是将裡面的二極管換成MOS管。

我用異步buck來分析的原因,就是覺得它要複雜一點,多了一個二極管導通壓降,如果異步的明白了,那麼同步的自然也明白了。

并且,根據這個拓撲推導的公式也是适用同步Buck的,隻需要讓公式裡面的二極管壓降為0即可。

首先,還是來看下工作原理。

工作原理其實非常簡單,上圖中MOS管就是一個開關,隻要這個速度夠快(開關頻率夠高),控制好導通與關斷時間(電感充放電時間),配合輸出濾波電容,就可以得到基本穩定的Vo了,也就是輸出電壓。

下面來看下兩個過程,開關導通和開關斷開。

先看開關導通

手撕Buck!Buck公式推導過程

開關導通時,二極管不導通,我們看電感,電感左邊是Vi,右邊是Vo,因為是降壓,是以左邊大于右邊,那麼電感兩端電壓是Vi-Vo,為恒定值。如果把電感電流向右定義為正,那麼電感電流是線性增大的,因為L*di/dt=Vi-Vo,那麼di/dt=(Vi-Vo)/L=常數。

手撕Buck!Buck公式推導過程

開關斷開時,電感要續流,會産生反向電動勢,讓二極管導通,二極管導通電壓是Vd。因為二極管陽極接地,是以陰極電壓是-Vd,也就是電感左邊的電壓就是-Vd,右邊的電壓是Vo不變,是以電感兩端電壓是-Vd-Vo。此時電感電流是線性減小的,因為L*di/dt=-Vd-Vo,di/dt=-(Vo+Vd)/L=常數,并且是負值,是以是線性減小的。

推導公式

我們推導公式,是為了選型,選擇輸入濾波電容,輸出濾波電容,電感。

那麼先把已知條件列出來

首先是輸入電壓Vi,輸出電壓Vo,輸出電流Vo/R,咱總得知道自己想要什麼吧,是以這些在設計之初都是已知的。

其次是開關頻率f,這個在晶片選型之後就是确定的了。

再然後就是設計的目标,輸入紋波大小△Vi,輸出紋波大小△Vo。

手撕Buck!Buck公式推導過程
手撕Buck!Buck公式推導過程

我們根據這些已知的量,就可以求得電感感量,輸入濾波電容大小,輸出濾波電容大小。

因為計算的基本原理其實就是電容和電感的充放電。是以,我們首先要求的就是開關導通的時間和斷開的時間,或者說是占空比。

這個也非常簡單,我們可以這麼想。

在開關導通的時候,電感兩端電壓是Vi-Vo。

在開關斷開的時候,輸出端電壓為Vo,二極管導通,那麼電感右側就是Vo,電感左側接的是-Vd,是以此時電感兩端電壓是Vo+Vd。

整個電路穩定之後,因為負載電流恒定,那麼一個周期時間之内,在開關導通時電感電流增加的量,要等于開關截止時,電感電流減小的量,即電感充了多少電就要放多少電,不然負載的電流或者電壓就要發生變化。

即一個周期内,電感電流增大量等于減小量。

然後又因為U=Ldi/dt,di/dt=U/L,L不變,是以電感電流變化速度與電壓成正比。

簡單說就是,電感電流上升或下降的斜率與電壓成正比。

手撕Buck!Buck公式推導過程

斜率與電壓成正比,電感電流上升的高度與下降高度又相同,那上升時間不就和電壓成反比了嗎?

是以,自然就有了:

Ton/Toff=(Vo+Vd)/(Vi-Vo)

我們變換一下,就得到了江湖所傳的“伏秒法則”

手撕Buck!Buck公式推導過程

再根據T=Ton+Toff=1/f

我們可以分别求得導通時間,關斷時間,占空比。

手撕Buck!Buck公式推導過程

如果是同步buck,那麼Vd=0,則會見到我們經常看見的公式:

手撕Buck!Buck公式推導過程

功率電感選擇

我們電感選型首先需要考慮兩個參數,電感感量和電感電流。

電感電流分為2個,平均電流IL和紋波電流△IL。

先看平均電流

手撕Buck!Buck公式推導過程

顯然,輸出電壓Vo基本不變,也就是說輸出濾波電容兩端電壓沒有變化,那麼電容的平均電流為0,根據輸出節點的基爾霍夫電流定律,節點電流和為0,那麼電感的平均電流就等于負載的平均電流Io。

即IL=Io=Vo/R。

手撕Buck!Buck公式推導過程

然後我們再來求電感的紋波電流△IL

從前面知道,電感電流就是個三角波,在開關導通時電感電流增大,在關斷時,電感電流減小。

那紋波電流的大小求起來就簡單了,就等于在開關導通時電感電流增大的值,也等于關斷時電感電流減小的值。

我們就計算其中一個,計算開關導通時電感電流增大了多少吧。

這個也非常easy,開關導通,電感兩端電壓是Vi-Vo,導通時間Ton前面已經求出來了。

根據U=Ldi/dt就可以求出電感電流紋波△IL=di=U/L*Ton

手撕Buck!Buck公式推導過程

可以看到,電感電流的紋波跟負載電流的大小沒有關系。

同時呢,我們也很容易得到電感的峰值電流,就是電感的平均電流加上紋波電流的一半嘛,即ILp=IL+△IL/2=Io+△IL/2。

也就是:

手撕Buck!Buck公式推導過程

計算這個峰值電流有什麼用呢?

電感選型時,電感的飽和電流必須大于這個ILp,并且要留一定的裕量。

現在我們已經寫出來了電感的平均電流IL,電感的紋波電流△IL,△IL應該是IL的20%-40%為宜。

即:△IL=(0.2~0.4)*IL

根據這個範圍,就能求得我們的電感值範圍了。

手撕Buck!Buck公式推導過程

輸入濾波電容計算

我們在确定輸入濾波電容的時候,是有一個假設的,這個假設是什麼呢?

輸入電源預設來自遠方,是沒法提供快速變化的電流的。

實際應用中,輸入電源可能距離很遠,有了很長的走線,走線越長,寄生電感就越大,也就是說輸入電源不能快速響應這個Buck輸入電流的需求。

手撕Buck!Buck公式推導過程
手撕Buck!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為:

手撕Buck!Buck公式推導過程

現在已經求出Ii,在一個周期内,電源的輸入電流可以看成恒定值,為Ii。

了解了這個前提條件,我們回到目标:計算輸入濾波電容的容量

我們先理清下思路,輸入電壓紋波就是輸入電容上面的電壓變化。電容上面的紋波變化可以分成兩個部分。

一個是電容放電或者是充電,存儲了電荷量發生了變化,這個變化會導緻電壓變化,可以用公式Q=CUq來表示,Uq即是電壓的變化。

另一個是電容有等效串聯電阻ESR,電容充放電時有電流流過,電流流過ESR會産生壓降,這個壓降用Uesr表示吧。

是以,電壓紋波應該是:

△Vi=Uq+Uesr

1、電容電荷量變化引起的壓降Uq

我們看輸入節點,這個節點的電流有3個,一個是來自電源Vi輸入的,前面說了,在一個周期内,它可以看作是恒定的,一個節點是電容,另外一個節點是開關。

手撕Buck!Buck公式推導過程

根據基爾霍夫電流定律,節點電流和為0,并且電源輸入的電流恒定為Ii,那麼輸入電容電流的變化量必然等于開關電流的變化量,因為最終3者的和為0。

也就是說,開關斷開時,開關電流為0,那麼電源輸入的電流全都流進輸入電容,電容被充電,此時電容的充電電流為Ii。而開關導通時,電感需要續流,這個電流由電源輸入和輸入濾波電容二者共同提供,電容此時放電。

并且,開關切換的時候,開關電流是突變的。而三者電流和為0,那麼電容的電流必然也是突變的。

我們畫出三者的電流波形如下:

手撕Buck!Buck公式推導過程

一個周期内,電容的充電電荷量和放電電荷量必然一樣,我們計算出其中一個就行了。

顯然,充電的時候更好計算,因為充電時開關斷開,電容的電流就是電源的輸入電流,是恒定的,為Ii。

根據Q=I*t,那麼充入的電荷量為Q=Ii*Toff,電容充入電荷,會導緻電壓變大,這個電壓的增量這裡取個名字叫Uq,那麼Q=Uq*C,也就是Uq=Q/C=Ii*Toff/C

最終可以求得Uq

手撕Buck!Buck公式推導過程

2、電流流過電容的ESR造成的壓降Uesr

想要知道ESR造成的紋波大小,我們隻需要知道流過電容的電流就知道了,因為電壓等于電流乘以ESR。

我們把電容的電流波形單獨畫一下。

手撕Buck!Buck公式推導過程

這個波形下面解釋下:

在開關斷開的時候,電源輸入電流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

計算過程如下:

手撕Buck!Buck公式推導過程

好,我們已經算出Uesr和Uq。

那麼根據△Vi=Uesr+Uq,我們就可以△Vo的表達式了,如果知道△Vo,我們也能得到輸入濾波電容Ci的大小或者是ESR了。

輸入總的紋波公式:

手撕Buck!Buck公式推導過程

這個公式看着有點複雜,有兩個參數都跟電容本身有關系,ESR和容量Ci。

考慮到我們的電容實際使用情況

陶瓷電容ESR小,容量小,Uq對紋波起決定作用,是以輸入紋波電壓可以近似為Uq,如果我們要限定紋波不能大于△Vi,那麼Uq≤△Vi。

鋁電解電容容量大,ESR大,Uesr對紋波起決定作用,是以輸入紋波電壓可以近似Uesr,如果我們要限定紋波不能大于△Vi,那麼Uesr≤△Vi

根據上面兩點,我們就可以去選擇合适的電容了。

陶瓷電容根據容量值去選

手撕Buck!Buck公式推導過程

鋁電解電容根據ESR去選

手撕Buck!Buck公式推導過程

好,現在輸入電容的理論計算已經搞定了,我們接着看輸出濾波電容。

輸出濾波電容

相比輸入紋波△Vi大小,我們可能更關心輸出紋波△Vo的大小,畢竟是要帶負載的。同樣,紋波由電容容量和ESR決定。

1、電容電荷量變化引起的Uq

手撕Buck!Buck公式推導過程

我們看輸出節點,這個節點的電流有3個,一個是來自負載的,它可以看作是恒定的,為Io=Vo/RL,一個節點是輸出濾波電容,另外一個節點是電感。

根據基爾霍夫電流定律,節點電流和為0,并且負載的電流恒定,那麼電感電流的變化量必然等于電容電流的變化量,因為最終3者的和為0。

我們畫出三者的電流波形如下:

手撕Buck!Buck公式推導過程
手撕Buck!Buck公式推導過程

根據節點電流和為0,那麼輸出電容的電流變化就是功率電感的電流變化(你增大時我減小,你減小時我增大)。我們從上圖也可以很直覺的看出來。

顯然,電容電流大于0時,電容在充電,電容電流小于0時,電容在放電。并且圖中也可以看到,電容充電和放電時間長度是一樣的,都是周期的一半,T/2。

那充放電的電荷量是多少呢?

從前面知道,輸出電容的電流變化就是功率電感的電流變化,因為電感的紋波電流是△IL,那麼電容的紋波電流也是 △IL。又因為電容的平均電流是0,是以電容的充電電流和放電電流都是△IL/2。

需要注意,電容電流是在大于0時充電,電流小于0時放電,也就是圖中陰影部分,充電與放電的切換的時刻并不是開關導通與斷開的時候,而是在中間時刻。

然後電容放電/充電的總電荷量Q等于電流乘以時間,這不就是圖中陰影三角形的面積嗎?

三角形底部是時間,充電/放電時間等于T/2

三角形的高為電感紋波電流的一半,△IL/2。

是以總放電量為Q=1/2*底*高

再結合Q=CUq,即可求得Uq了。

具體計算如下圖所示:

手撕Buck!Buck公式推導過程

2、電流流過電容的ESR造成的壓降Uesr

前面波形圖知道,電容的充電電流最大是△IL/2,放電電流最大就是-△IL/2,負号表示電流方向,方向的不同,引起的壓降的電壓也是相反的。

那麼ESR引起的總的壓降是:

Uesr=△IL/2*ESR-(-△IL/2*ESR)=△IL*ESR

最終,我們求得Uesr的公式如下:

手撕Buck!Buck公式推導過程

好,我們已經算出Uesr和Uq,那麼根據△Vo=Uesr+Uq,就可以求出總的輸出紋波大小△Vo。

手撕Buck!Buck公式推導過程

根據上面兩點,我們就可以去選擇合适的電容了。

陶瓷電容根據容量值去選

陶瓷電容ESR小,容量小,Uq對紋波起決定作用,是以可以近似為Uq,如果我們要限定紋波不能大于△Vo,那麼Uq≤△Vo

手撕Buck!Buck公式推導過程

鋁電解電容根據ESR去選

手撕Buck!Buck公式推導過程

公式到這裡就基本推完了。

公式彙總

下面把Buck所有的公式彙總下,如下圖:

手撕Buck!Buck公式推導過程

之前寫過boost的公式推導,不過沒彙總公式,現在也彙總如下:

手撕Buck!Buck公式推導過程

實際電路應用

公式現在都已經推出來了,這些公式都是從拓撲結構裡面推出來的,我們也會在很多晶片手冊中看到這些公式,那麼我們設計時,按照這些公式選擇電容可以嗎?

答案是:no,no,no!

原因在于,實際我們使用的器件都不會是理想的。

就陶瓷電容來說,一個直流偏壓特性,可能就使得電容實際容量隻有标稱值的30%甚至更低。

還有電容會有ESL等參數,電路本身還有會其它的損耗等等,這些都會使得buck/boost實際輸出與理論推導有較大的出入。

雖然這些公式不能直接套用,但是我們根據它們也能大緻知道是個什麼情況,是以其作用還是有的,我們設計時也需要去算一算的。

這些因素具體有多大的威力,以及實際電路該如何考量。因為我在之前的《手撕Boost!Boost公式推導及實驗驗證》一文中,進行了大量的實驗以及分析,現在就不再說了,有興趣可以去翻一翻。

手撕Buck!Buck公式推導過程

繼續閱讀