今天我們一起學習降壓型開關電源。
為什么需要開關電源
在之前的?線性穩壓器教程?中,我們學習了 L7805 等線性穩壓器的使用。它們使用起來很簡單,但是效率低下。
例如,如果您嘗試用 26 伏電壓為線性穩壓器供電,并且輸出電壓為 5 伏 電流為 3 安培,則最終會產生 63 瓦的熱量。如此巨大的能量浪費是不可接受的。
對于大功率項目,你希望使用所謂的開關電源。有各種不同類型的開關電源,可以讓你將一種電壓轉換為另一種電壓。
本文主要討論降壓型(Buck or Step-down)開關電源。它是一種可以將較高電壓降低到較低電壓的電源。
原理
讓我們先從一個簡單的電路開始。電路由一個 10 伏的直流電源串聯一個開關組成。
開關是什么并不重要。它可以是雙極性晶體管,MOS 管,甚至可以是瘋狂推動機械開關的瘋子。
?
出于效率原因,開關應該使用場效應(MOS)管。但現在我們在電路中還是用通用開關符號。接下來讓我們用占空比為 50% 的脈沖寬度調制(PWM)信號來控制開關的斷開和閉合。
這會給我們輸出一個一個占空比為 50% 的方波,一半時間為 10 伏,一半時間為 0 伏,這樣平均電壓就是 5 伏。
現在讓我們添加一個 LC 低通濾波器。電感抵抗電流的突變,電容抵抗電壓的突變。綜合效果是我們的 LC 低通濾波器抹平了方波,我們在輸出上獲得了 5 伏的相對穩定的直流電。
但是上面這個電路有個問題。假設開關已閉合,我們的電源正在輸送一些電流。這意味著電流正流過這個電感器。
現在讓我們斷開開關。由于電感中的電流不能立即改變,這意味開關斷開的一小段時間內仍然有電流流過電感。
但是電感左側沒有接任何器件,所以在這里積累大量帶負電荷的電子(電子的流動的方向是和傳統電流方向相反的)。從而產生一個巨大的負電壓毛刺。
這種電壓毛刺可以達到數百甚至數千伏。
如此巨大的負電壓毛刺足以燒毀連接在此處的任何開關。如果您想了解有關這種現象的更多信息,請查看我另一篇文章:電感毛刺。在那篇文章中,提到了一個解決辦法,就是添加一個二極管。二極管就位后,現在無論何時斷開開關,電流都可以在一個完整的路徑中流動,并且開關后的電壓幾乎不會低于零,因為二極管的存在,電感左側電壓最多比接地低 0.7 伏(二極管壓降電壓),肖特基二極管會更低。
下圖是經典的降壓型開關電源電路,你可以使用這個基本電路以比線性穩壓器(Linear Voltage Regulator)更有效的方式將高電壓直流電降低到電壓較低的直流電。
使用 Arduino 搭建
我們使用 Arduino 搭建一個降壓型直流電源(Buck Converter)。這個電路僅用來學習降壓型開關電源的作用,不具有實際用途。Arduino 可以輸出方波(PWM), 我們可以利用它輸出的方波作為控制信號,在面包上搭建一個簡單的降壓型開關電源。
無反饋
我們使用 P溝道場效應管 IRF9540 來開關主電源,這里我使用可調電源輸出的 12 伏電壓。因為 Arduino 的驅動能力不足,不足以直接驅動 IRF9540, 我們使用一個 NPN 型BJT 晶體管 S8050 來驅動 IRF9540。我們編程讓 Arduino 輸出 31 k 赫茲的控制方波。旋轉電位器可以改變輸出方波的占空比。這樣,當 Arduino D3 腳輸出高電平時,三接管導通,拉低 N 溝道場管的門級(G),場管導通;當 D3 輸出低電平時,三極管斷開,場管門級為高電平,場管關斷。
電位器一個引腳接在 Arduino 的 5V 引腳上,一個引腳接地,這樣電位器中間引腳可以輸出 0~5伏電壓。
A0 引腳: 接可調電位器的中間引腳。用于調節方波的占空比。
D3 引腳:輸出 31k 赫茲的控制方波,用于控制開關 IRF9540 的關斷。
?
/* * 這是用 arduino 制作的降壓型開關電源的示例代碼。 * 我們使用 Aruino Uno. Nano 也是可以的。 * D3 引腳輸出控制方波 * No feedback is connected here. */ int potentiometer = A0; // 接可調電阻中間引腳 int PWM = 3; void setup() { pinMode(potentiometer, INPUT); pinMode(PWM, OUTPUT); // 引腳3和11, 輸出PWM 方波 頻率:31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000001; } void loop() { float voltage = analogRead(potentiometer); int VALUE = map(voltage, 0, 1024, 0, 254); analogWrite(PWM, VALUE); }
?
我們在面包板上組裝好電路,使用一個 12 伏的燈泡作為負載。示波器探頭 CH1 接在 Arduino 輸出的控制方波上,CH2 接在電壓輸出端。調節電位器可以調節輸出電壓,可以看到燈泡也隨著變亮。
這個電路可以在負載不變的情況下維持穩定的電壓。但是如果負載變了,輸出電流就會改變,進而導致輸出電壓改變。如果想要在負載改變的情況下,維持電壓不變,需要有一個反饋系統,該系統將監測輸出電壓,如果輸出電壓變低,則可以增加輸出方波的占空比,如果輸出電壓變高,則可以減小輸出電壓的占空比,進而維持輸出電壓不變。
有反饋
我們給我們的開關電源加一個反饋系統,以實現在負載改變的情況下,維持輸出電壓不變。我們使用 Arduino 監控輸出電壓,如果低了,我們就增加方波占空比,進而拉高輸出電壓;如果輸出電壓高了,我們減小占空比,進而減小輸出電壓。因為電路輸出電壓的范圍為 0~12 伏,而 Arduino ADC 的最大輸入電壓為 5 伏,不能直接檢測輸出電壓。我們需要將輸出電壓降到 5 伏以下,我們使用一個簡單的電阻分壓電路實現。
帶反饋的完整的電路如下:
A0 引腳: 接可調電位器的中間引腳。用于調節方波的占空比。
A1 引腳:接反饋電阻,用于監控輸出電壓。
D3 引腳:輸出 31k 赫茲的控制方波,用于控制開關 IRF9540 的關斷。
帶反饋的降壓型開關電源代碼如下:
?
/* * 這是用 arduino 制作的降壓型開關電源的示例代碼。 * 我們使用 Aruino Uno. 用 Nano 也是可以的。 * A0 引腳: 接可調電位器的中間引腳。用于調節方波的占空比。 * A1 引腳:接反饋電阻。 * D3 引腳:輸出 31k 赫茲的控制方波。 */ int potentiometer = A0; // 接可調電阻中間引腳 int feedback = A1; int PWM = 3; int VALUE = 0; void setup() { pinMode(potentiometer, INPUT); pinMode(feedback, INPUT); pinMode(PWM, OUTPUT); // 引腳3和11, 輸出PWM 方波 頻率:31372.55 Hz TCCR2B = TCCR2B & B11111000 | B00000001; } void loop() { float voltage = analogRead(potentiometer); float output = analogRead(feedback); if (output > voltage) { // 輸出電壓大了,減小占空比 VALUE = VALUE - 1; VALUE = constrain(VALUE, 1, 254); } else if (output < voltage) {// 輸出電壓小了,增大占空比 VALUE = VALUE + 1; VALUE = constrain(VALUE, 1, 254); } analogWrite(PWM, VALUE); }
?
一站式解決方案
上面的降壓型開關電源,羅里吧嗦,又是方波,又是反饋,挺麻煩的。市面上有多種降壓型開關電源芯片,提供一站式解決方案。。比如 LM2576T-ADJ 這款芯片,使用反饋電阻可以在負載變化的情況下,保證輸出電壓不變。
輸入可以在 40 伏的范圍內。不要施加更高的電壓,否則可能會燒毀 LM2576T-ADJ 組件。在這種情況下,我們不需要外部開關,因為 LM2576T-ADJ 里面已經有了。將電壓反饋引腳連接到輸出分壓器后,LM2576T-ADJ 將根據輸出電壓的高低改變輸出控制方波的占空比以保持輸出電壓恒定。在這種情況下,使用肖特基二極管,因為它具有低正向壓降電壓。
焊起來
像這種大電流,而且有的器件要求盡量靠近芯片引腳的東西,我們就不要在面包板上搞了。我們使用洞洞板搞。
首先在把 LM2576T-ADJ 焊接在洞洞板的中間,在它周圍留下大量的空間,以安裝其他器件。
輸入端的濾波電解電容焊接在芯片的一兩厘米內。
同樣的方法焊接輸出端的二極管、電感,保持元件連線盡可能短:
再焊上輸出濾波電容:
當焊接反饋電阻時,盡量使返回芯片的導線盡可能短。
電路板底部的布局比頂部更重要。注意我的地線是一條直線,那兩個藍色的是 100 nF 濾波電容,輸入輸出各一個:
最后的效果:
跑起來
一切準備就緒就緒。我將用 10 伏電壓作為我的開關電源的輸入電壓。我將使用我的可調節電子負載來查看它如何提供不同大小的電流。
如果你在家中這樣做,你可以使用 5歐姆 10瓦的功率電阻器作為負載。
?
首先,讓我們檢查一下輸出電壓是我們想要的。他是完美的 5 伏直流電!
現在,讓我們來看看電路中的這個節點,它被稱為開關節點, 也就是 LM2576-ADJ 的 2腳:
您可以看到我們熟悉的 0 到 10伏方波,開關頻率為 50.65 kHz。但是你可以看到占空比為 59.5 %,而不是理論上的 50%,此時的負載電流為 1 安培。
如果我將負載增加到 2 安培,占空比增加到 63 %。在3 安培時, 功率損失更大,控制器必須將占空比更改為 67% 才能夠維持穩定的 5 伏輸出:
還記得我之前說過我們得到了一個完美的 5 伏直流電嗎?那并不是真實的情況。讓我們將示波器的耦合更改為交流耦合并放大波形。可以看到在輸出上有一個小的交流分量,因為我們的低通濾波器并不完美。我們稱其為電源的輸出紋波。在 1 安培負載下,我們有大約 10 毫伏的紋波和噪聲。
如果我將負載電流增加到 3 安培,紋波變得更加嘈雜,達到了 16.7 mV:
如果我將輸入電壓增加到 26 伏,紋波波形會變大,達到了 33 mV。
理想情況下,我們希望這種紋波盡可能小。對于大多數應用,低于 100 毫伏的峰峰值就可以了。但一般來說,您不想用開關電源為無線電接收器等敏感電路供電。
現在讓我們計算我們制作的的這個電源的效率。并將其與線性穩壓器進行比較。
從 26 伏的輸入,我的臺式電源向直流轉換器提供 0.6889 安培。
我的萬用表測量輸出為 4.905 伏.
我將負載正好設置為 3 安培。如果你在家中使用電阻器作為負載進行操作,請確保使用萬用表準確測量輸出電流。
將數據帶入公式計算,我們發現我們的電源效率為 82%,非常好!這就是人們為什么通常將開關電源用于高于 1 安培的電流。
評論
查看更多