0 前言
本文基于 TI 的 TPS56637 實現一個支持調壓的 BUCK 電路,包含從零開始詳細的 原理解析、原理圖、PCB 及 實測數據
本文屬于《DIY迷你數控電源》系列,本系列我們一起實現一個簡單的迷你數控電源
我是 LNY,一個在對嵌入式的所有都感興趣的博主,一個原廠嵌入式軟件開發工程師
如果對你有幫助,請點贊、收藏、關注三連,這是我持續創作的動力之一!!!
文章目錄
- 0 前言
- 1 如何進行數控調壓
- 1.1 BUCK原理簡介
- 1.2 如何用BUCK得到想要的電壓
- 1.3 如何動態調整BUCK的輸出電壓
- 1.4 其它
- 2 設計選型
- 2.1 背景:數控電源DIY項目
- 2.2 設計指標
- 2.3 BUCK選型
- 3 硬件設計
- 3.1 原理圖 & 參數設計
- 3.2 軟件效率優化
- 3.3 PCB & 渲染圖
- 4 測試
- 4.1 測試環境
- 4.2 簡單測試
- 4.3 進一步的測試待更新...
- 5 本系列其它文章(或更新計劃)
- 6 參考資料
1 如何進行數控調壓
1.1 BUCK原理簡介
BUCK
是一種 DCDC 拓撲結構,把輸入的高電壓轉換成更低的穩定電壓
實現方式是 控制模擬開關導通的占空比 來調整輸出電壓的大小
而 控制模擬開關導通的占空比 是由輸出電壓決定的(許多BUCK芯片將模擬開關集成在芯片內部)
BUCK
的 FB
(Feedback,反饋)引腳用于獲取 分壓后的輸出電壓實際值
分壓后的輸出電壓實際值 將和 內部參考電壓 進行比較,組成一個反饋網絡,通過監測輸出電壓,來控制模擬開關的占空比:
分壓后的輸出電壓實際值 > 內部參考電壓 ==> 提高模擬開關導通的占空比,輸出電壓升高
分壓后的輸出電壓實際值 < 內部參考電壓 ==> 降低模擬開關導通的占空比,輸出電壓降低
最終,FB
引腳的電壓 將會穩定在 內部參考電壓,而輸出電壓也會穩定在我們想要的電壓上
1.2 如何用BUCK得到想要的電壓
外圍電路的結構芯片原廠已經給出,在一般應用下,我們最重要的工作是:計算FB
引腳上電阻分壓網絡的阻值,即下圖中的 R6 和 R7
VOUTV_{OUT}VOUT?—— 經過 BUCK
降壓后的輸出電壓
R6、R7 —— 對應原理圖的 R6 和 R7
0.6 —— 反饋電壓,每個 BUCK
芯片可能不同,為一常量,在 DATASHEET 的電氣參數中可以查到
芯片原廠在其應用實例中一般都會給出上圖中所示的一個公式
在輸入和輸出參數都滿足其要求的情況下,選定R6和R7的阻值,就可以得到想要的輸出電壓
這個公式是怎么得來的?
這個公式可以寫成:
0.6=VOUTR6+R7?R7\begin{aligned} 0.6 = \frac{ V_{OUT} }{R_6 + R_7} * R_7 \end{aligned} 0.6=R6?+R7?VOUT???R7??
看原理圖,電流從 VOUT 經過 R6R_6R6? 和 R7R_7R7? 流入 GND,那么這條回路上的電流為:VOUTR6+R7\frac{ V_{OUT} }{R_6 + R_7}R6?+R7?VOUT??
這條回路上電流處處相等,因此電阻 R7R_7R7? 兩端的電壓為 VR7=VOUTR6+R7?R7V_{R_7} = \frac{ V_{OUT} }{R_6 + R_7} * R_7VR7??=R6?+R7?VOUT???R7?
電阻 R7R_7R7? 兩端的電壓就是其兩端的壓差,而其一端是 GND 電壓為0V,那么其另一端電壓值就是VR7V_{R_7}VR7??
這一點直接連接BUCK芯片FB引腳,即 VFB=VOUTR6+R7?R7V_{FB} = \frac{ V_{OUT} }{R_6 + R_7} * R_7VFB?=R6?+R7?VOUT???R7?
上面我們有說,BUCK芯片的目的就是控制模擬開關導通的占空比,讓VFBV_{FB}VFB?和內部參考電壓保持一致,從而得到想要的輸出電壓。目前我們VOUTV_{OUT}VOUT?(由設計指標得到)、VFBV_{FB}VFB?(由芯片手冊得到)已知,只要選擇 R6R_6R6? 和 R7R_7R7? 讓這個等式成立就可以了。
阻值選擇的注意事項?
- 必須保證上述等式成立。
- 阻值應在合理范圍內選擇。阻值過大會導致
FB
引腳內部誤差放大器偏置電流引起的誤差變大,且更容易拾取環境中的電磁干擾噪聲等;阻值過小會導致由過多電流流入電阻分壓網絡,導致系統功耗變大。
當手冊沒有明確指定時,選擇幾十kΩ級別(如10kΩ - 200kΩ) 的電阻通常是一個安全、合理且廣泛應用的起點。
1.3 如何動態調整BUCK的輸出電壓
首先,廠商自己會推出一些支持調壓的 DC-DC 芯片,可以通過一些通訊協議來調整輸出電壓。
但我們這里討論的是 普通的 DC-DC 芯片如何完成調壓。當然,TI 在其DATASHEET里有寫,不建議這么操作。
卓晴老師在他的文章數控降壓電源模塊DCDC| 5A,LCD顯示講解了一種數控調壓的方法:通過使用DAC注入電流,以調整FB電壓,進而調整輸出電壓。我們簡單復習一下。
在正常情況下,FB
引腳的電壓VFBV_{FB}VFB?由 VOUT 經過電阻分壓網絡直接得到
那么如果我們自己控制 FB
引腳的電壓VFBV_{FB}VFB?,是不是就能調整輸出電壓了呢?
卓晴老師在其文章中引用了XL4015-ADJ 5A 大電流DC-DC原理圖分享一文中的原理圖,這里借用一下:
從上圖可以看到,I2I_2I2?、I3I_3I3?流入 VFB 節點,I1I_1I1?流出 VFB 節點,他們的大小分別是:
I1=VFBR1I2=VOUT?VFBR2I3=VG?VD?VFBR3\begin{aligned} I_1 &= \frac{V_{FB}}{R_1} \\ I_2 &= \frac{V_{OUT} - V_{FB}}{R_2} \\ I_3 &= \frac{V_G - V_D - V_{FB}}{R_3} \end{aligned} I1?I2?I3??=R1?VFB??=R2?VOUT??VFB??=R3?VG??VD??VFB???
其中:
VGV_GVG? —— DAC (或其它,如濾波后的PWM信號)輸出的直流電壓
VDV_DVD? —— 二極管(一般是肖特基二極管,因為壓降低)的壓降
根據基爾霍夫電流定律,在任意時刻,流入電路中某一節點(或閉合面)的電流之和等于流出該節點(或閉合面)的電流之和,因此:
I1=I2+I3\begin{aligned} I_1 = I_2 + I_3 \end{aligned} I1?=I2?+I3??
聯立以上四式,得:
VOUT=VFB×(1+R2R1)+(VFB+VD?VG)×R2R3V_{OUT} = V_{FB} \times \left(1 + \frac{R_2}{R_1}\right) + (V_{FB} + V_D - V_G ) \times \frac{R_2}{R_3} VOUT?=VFB?×(1+R1?R2??)+(VFB?+VD??VG?)×R3?R2??
現在我們在選定 R1R_1R1? 、 R2R_2R2? 和 R3R_3R3? 三個阻值后,就可以通過調整 VGV_GVG? 的電壓來調整 VOUTV_{OUT}VOUT? 了!
1.4 其它
在此我有個疑問,為什么不直接將DAC接入到FB引腳呢?
!!!以下內容來源于DeepSeek,供大家參考:
2 設計選型
2.1 背景:數控電源DIY項目
在選擇設計指標前,有必要說一下要實現的DIY項目。
這個DIY項目的最終目標是實現一個迷你數控電源,其和調壓相關的實現如下:
- 電壓誘騙
數控電源的電源輸入來自快充充電器,通過PD
協議芯片STUSB4500
,誘騙出5V、9V、12V或20V電壓。如果快充頭支持PPS協議,那么可以在 5V——20V 以 0.05V 的步進自由選擇數控電源的輸入電壓(因為STUSB4500
只支持這些,而非快充協議限制)。 - 電壓轉換
作為一個數控電源,應該可以以較高精度的步進調整輸出電壓,為此支持兩種電壓輸出方式:
方式1: 通過PPS
協議直接誘騙出需要的電壓。
(優點:電路簡單、效率高。缺點:最低輸出5V,調整步進精度0.05V)
方式2: 由PD3.0
或PPS
協議誘騙出一特定電壓后,輸入到數控BUCK
電路,調整為最終需要的電壓。
(優點:可以輸出低于5V的電壓、調整步進精度高。缺點:由于BUCK壓差的限制,不能輸出過高的電壓;輸出紋波大)
.
為了實現上述功能,將使用兩個負載開關芯片LM73100
(也是理想二極管芯片)實現二選一輸出。 - 計量
使用INA233
計量芯片實現對輸出的電壓、電流、功率和能量進行計量。 - 保護功能
使用TPS25974
電子保險絲實現過流、過壓、短路等接口保護。
2.2 設計指標
基于上述前提,可以定出對BUCK調壓電路基本的設計指標
- 輸入電壓:5V——20V(由PD誘騙芯片決定,
STUSB4500
最高支持20V) - 輸出電壓:0V——12V(需要更高電壓時,由PD誘騙后通過快充頭直出)
- 輸出電流:5A(由PD誘騙芯片決定,
STUSB4500
最高支持5A) - 輸出紋波:100mV(僅BUCK輸出,不包含后級eFuse的大電容)
- 調壓精度:10mV
2.3 BUCK選型
基于以上指標,選擇了德州儀器的 TPS56637
。
3 硬件設計
3.1 原理圖 & 參數設計
DATASHEET的參考設計:
參考以上設計,繪制我們的原理圖
那么主要選擇的參數就是 R22R_{22}R22? 、 R23R_{23}R23? 和 R25R_{25}R25? 了。
根據上面的公式:
VOUT=VFB×(1+R23R22)+(VFB+VD?VG)×R23R25V_{OUT} = V_{FB} \times \left(1 + \frac{R_{23}}{R_{22}}\right) + (V_{FB} + V_D - V_G ) \times \frac{R_{23}}{R_{25}} VOUT?=VFB?×(1+R22?R23??)+(VFB?+VD??VG?)×R25?R23??
其中,已知參數是:
VGV_{G}VG?是DAC輸出的電壓,范圍是 0V — 3.3V;
VDV_{D}VD?是肖特基二極管上的壓降,1N5817WS
的壓降是 0.45V;
R22R_{22}R22?初選為10kΩ,R23R_{23}R23?選為220kΩ,R25R_{25}R25?選為36kΩ。
VOUT=0.6×(1+22010)+(1.05?VG)×22036V_{OUT} = 0.6 \times \left(1 + \frac{220}{10}\right) + (1.05 - V_G ) \times \frac{220}{36} VOUT?=0.6×(1+10220?)+(1.05?VG?)×36220?
在VGV_{G}VG?輸出 0V 時,VOUT=20.21VV_{OUT} = 20.21VVOUT?=20.21V;
在VGV_{G}VG?輸出 3.3V 時,VOUT=0.05VV_{OUT} = 0.05VVOUT?=0.05V;
12bit DAC的輸出范圍碼字為0 — 4096,對應 0.05V 和 20.21V,那么一個碼子對應的電壓值為0.005V,即理論調壓精度為5mV。
但是BUCK芯片是有壓差要求的,且 TPS56637
最高輸出電壓為13V,因此DAC的最低輸出電壓VGMAX=1.18VV_{G_{MAX}} = 1.18VVGMAX??=1.18V。
3.2 軟件效率優化
在我們這個應用中,因為輸入電壓來源于快充充電器,所以可以獲取到范圍內的所有電壓值。
那是否會有一種控制算法
根據輸出電壓值,先粗調一個輸入電壓值,再通過BUCK精調,保證BUCK工作在最高效率下呢?
題主認為這種方式肯定是必須且有成效的,但是這部分還沒有完成,完成了會貼出來,并附上測試結果。
3.3 PCB & 渲染圖
根據上述的原理圖layout,BUCK電路對應下圖中紅框的位置。
4 測試
4.1 測試環境
上圖中將BUCK的 MODE
引腳接地,從而使BUCK進入 ECO模式,在輕載下獲得更高的效率
在實際應用中,MODE
引腳由MCU的GPIO控制(但是這塊板的MCU剛剛炸掉,所以就簡單粗暴的短接到GND了)
4.2 簡單測試
DAC電壓為3.197V時,BUCK輸出電壓1.941V
DAC電壓為0V時,BUCK輸出電壓為13.97V
4.3 進一步的測試待更新…
總之先簡單的驗證一下這個電路能用吧,具體效果怎么樣后面再更新
后面的打算換一款板子,把MCU焊好之后再測試。
5 本系列其它文章(或更新計劃)
如果已經更新,下面會出現超鏈接
硬件:
- MCU —— STM32G431CBU6
- 調壓BUCK電路 —— 基于TPS56637(本文)
- 功率計電路 —— 基于INA233
- 理想二極管開關電路 —— 基于LM73100
- 電子保險絲電路 —— 基于TPS25974
- PD3.0(PPS) SINK電路 —— 基于STUSB4500
- 旋轉編碼器 & 蜂鳴器電路 —— 基于EC11和SS8050
.軟件:
- STUSB4500 —— BSP程序開發
- INA233 —— BSP程序開發
- EC11編碼器 &蜂鳴器 —— BSP程序開發
- LVGL —— 圖形庫移植與應用開發
- FreeRTOS —— 移植與應用開發
.其它:
- 外殼設計及加工
- 元器件及結構件的選擇
.相關文章:
- PPS(PD3.0)快充SINK模塊 — 基于STUSB4500
6 參考資料
[1] 數控降壓電源模塊DCDC| 5A,LCD顯示 —— 卓晴
[2] XL4015-ADJ 5A 大電流DC-DC原理圖分享 —— 蘇守坤
[3] TPS56637 DATASHEET