文章程式碼顯示

2017年10月31日 星期二

《進階※電子電路篇》寫程式Arduino教學 - 01:BJT電晶體 飽合區 截止區 到底該怎用?

由於 Arduino 這類的開發版,雖然我們時常用它來驅動 LED 或是一些外部的感測器模組,但一般而言為控制器在電路中的角色是當作 "控制器" 而不是 "驅動器" 來使用。

所以在面對大電流驅動的需求時,並不能讓 I/O port 有大電流(ex: > 50mA)流過,這時候我們必須把電路分為兩大區塊,分別為 "驅動電源區(大電流)" 以及 "控制區" 

控制區自然是由 Arduino 來當作主角。而驅動電源區的作用則讓外部的元件構成一個獨立的電流路徑,這樣子才能讓大電流不流經開發版(微控制器)。

舉一個實際的例子,假設你現在坐在一台坦克車裡,你扮演的是 "砲手" 的角色。所以你會在密密麻麻的儀表中找到一個按鈕(發射鈕),並且讓砲彈從砲管中發射出去(而不是讓砲管穿過你再飛出去!?),此時 Arduino 就是按鈕的角色;砲彈與砲管則屬於驅動電源的角色。

在入門篇的章節我們學會直接使用 pin 腳( I/O port) 搭配 digitalWrite 指令來點亮 LED 燈,還記得當時有一張圖片是這樣子的


很顯然的,流經 LED 的電流也會流經 Arduino 內部形成一個迴路。此處會這樣應用是因為 LED 燈所需要的驅動電流較小(約 20mA), 還在可以接受的範圍內。

但如果我們今天要驅動的是一個大電流( 如 25mA 以上)的元件,就不適合使用這種方法,其必須牽扯到版子本身 source current (或 sink current) 的能力,待後續章節再進行補充。

驅動大電流的應用需要額外的電子元件來進行配合,常見的是 MOSFET 、 BJT 、 光耦合器

通常 MOSFET 較後兩者昂貴,且應用的優勢在較為特殊的領域才得以彰顯(例如 High switching frequency 、 Low conduction resistance ... 等等) 一般用來作為切換式電源、馬達控制等高級應用,故不在此章的範圍內。

BJT 是電子電路中很基礎也很古老東西,本身是一個"(電)流控元件" ,其依照元件的操作區域特性可以分為放大區(工作區)、飽合區、截止區 三種。

所謂 "放大區" 指的是 BJT 工作在此區域具有將訊號放大的能力(無論直流、小訊號)。就像是腳踏車的齒輪般,經由適當的齒輪箱設計可以 "用很小的力來變成很大的力" ;而 BJT 就像一個齒輪箱,將 "小電流" 放大為 "大電流" 。

BJT 元件有一個固定的符號如下,箭頭的方向表示電流的流向。並且元件由三隻腳組成,分別是 B、C、E 所以就有了 IB, IC, IE 三個不同的電流。

常用的 BJT 以 NPN 型 如 8050 、 2N2222、2N5551、C9013。 

可參考此連結以及此連結


開啟文件後我們會發現有一大堆的技術規格以及曲線圖,並且會發現其值基本上都不是一個定值,而是一個範圍或用曲線來表示,這是因為該元件在出廠時會進行一些參數測試,而這些參數測試都是在一些特定條件下進行的(文件中將會標示),由於每個人在使用這個元件時的應用情況都不同,所以需要依據自己的使用狀況,並且配合文件上面給的參數自行去推敲。



上圖為 BJT 使用上最關鍵的圖,稱為靜態特性曲線 Static Characteristic (又稱為輸出特性曲線)。 上圖中的 Figure 1 直接表明了三個工作區的特性 (白底部分皆為工作區)





上圖中的左右兩圖,事實上是可以對照起來的(黃點),並且主要是在說明 "工作區" 的關鍵參數 " beta(hfe) 或稱 DC Current Gain" 。這個參數就是所謂的"放大倍率",能夠藉由控制 IB 的大小來間接改變 IC(IE) 的大小。 



上圖說明著障壁電壓 VBE ,以及工作在飽和區時 VCE(sat) 的值。

相信大家對這些圖或以上講的這些都很陌生,若不是本科系的要真正搞懂這些圖,需要下很大一番功夫。所以我們只取一些關鍵參數,並且將其假設為定值(或經典值)。這時可能有人會認為,這樣不就跟實際使用上不一樣了嗎?

事實上我以前也有過這樣的困惑,但以下幾點說服了我使用經典值來進行快速設計

1. 經典值可以很方便且有效的簡化設計過程

2. 非專業的類比電路設計人員,並不需要進行精確的設計。且在數位電路中,我們較常把它操作在飽和區與截止區當做電子開關使用

3. 理論値終究是理論值,在實際使用上會有很多外在因素影響。縱使我們搞懂了整份 datasheet 並且依照數學計算來進行精確設計,在成品出來時往往還是會存在偏差(當然會比經典値來的精確許多就是)

綜合以上因素,我們進行以下關鍵參數的假設,並且將上述那些看似很複雜的都打掉重來








首先還是畫出 BJT 的符號並且對應到實際可以看出這是個有三隻腳的元件,並且將這三隻腳稱為 Emitter、Base、Collector。而這個半導體元件具有許多特性,做為快速應用設計我們目前只需要知道兩個條件即可

1.  B 腳與 E 腳之間會存在一個固定的電壓差,我們記為 VBE 並令其為 0.7 伏特(也就是一個二極體的壓降)。 此壓差是因為該元件在製造的時候所產生的固有特性。

2.  Beta 稱為放大倍率,此為這個元件的關鍵參數,也就是我們一直在講的"放大"。假設此値為 150 則意味著該元件可以將 IB 放大 150 倍 變成 IC

所以有 IC = beta * IB 的數學式(僅在工作區成立)

有了以上這兩個條件,我們就可以簡單的說明 BJT 操作在工作區時,如何放大電流



一個實際的接線圖如上圖所示,我們將 Arduino 的 pin 端口連接一個電阻 RB 至 BJT 的 Base 腳;E 腳直接接地(連接至 Arduino 的 GND);C 腳則假設有一個負載電阻 RL 並且與外部電源 10 伏特相連。

在此我們先假設負載電阻 RL 固定(也就是待驅動的元件不變,這也較符合我們實際應用的情況),所以整個電路只有兩個地方我們可以進行改變,分別是 pin13 的 HIGH/LOW 以及 RB 的電阻值。

假設將 pin13 設為 HIGH 得到 5V 的電壓,觀察電路就會發現 5V 串連一個電阻 RB 並且經過 VBE 降壓後接地,如此一來我們就可以計算出 IB 的大小

由上圖中的狀況 1,2,3 我們可以知道,調整 RB 的阻值就可以改變 IB 的大小(藉由簡單的歐姆定律),並且得到對應放大後的 IC


我們可以將這樣的過程理解為,調整 RB 阻值相當於調整 IB,而調整 IB 又等同在調整水龍頭轉開的角度,如此一來就可以控制流過的水流(電流)要多大了。

這就是以小電流來控制大電流

由工作區的狀況 1,2,3 來看,當 RB 越小時 IB 越大,而 IC 又是 IB 的 150 倍

在狀況 3 中我們透過將 RB 縮小到 470 歐姆,得到了 1371mA 的 IC

問題來了,那麼我們是不是可以藉由不斷的縮小 RB 來達到很大的 IC 呢?

事實上是不行的,因為 BJT 的放大區(功作區)具有極限放大的電流最高只能到達飽和電流 IC(sat) 並且 BJT 進入飽和區模式

另一個角度思考,我們可以去計算 VBE 是否小於 0.2V 來判斷 BJT 是否處於飽和區

更進階的判斷方法則是判斷 VBE, VBC 是否都是順偏。但後者需要較為複雜的計算,在此略過




要得到飽和電流 IC(sat) 我們可以利用逆推法來計算,令飽和電壓 VCE(sat) 為 0.2 V ,也就是說當 BJT 飽合時,VCE 會固定為 VCE(sat) = 0.2V

如此一來可以推導出飽和電流 IC(sat) 為 0.98A = 980mA 。也就是說當 VCC 及 RL 不變的情況(VCC : 10V, RL = 10 Ohm)下, IC 最多最多就只能到 980mA




在前述中,我們我們假設 狀況 3 位在工作區,透過工作區的電流放大公式 IC 達到 1371mA。

但事實上,由細算得之這樣的 VCC 以及 RL ,其飽和電流為 980mA ,所以我們得到 "假設BJT位在工作區"是個錯誤假設, BJT 應該是工作於 "飽和區"才對。

順帶一提,由飽和區的飽和電壓為 0.2V 來說,可以近似於 0V 。而 0V 的概念就等同於"短路"或稱為"導通",所以飽和區與截止區的應用又常被說成開關應用。

截止區部分我們將不多加解釋,因為我們只要設定 pin13 為 LOW,自然沒有 IB ,也沒有 IC ,就沒什麼數學式好計算的了。

以上結果以電路模擬軟體 PSIM 經過模擬驗證




補充:

我們可以進一步的發現,"在工作區內", IC 的大小只受到 IB 控制,也就是說其電流量無論 RL大小都是 IB 的 150 倍

在電路學中我們又可以將其等效看成一個恆流源(恆定電流)。以下為模擬結果,RB 設定為 3kohm ,分別變動 RL 為 10ohm 、 20ohm 及 30ohm



最後,下圖補充當 RB 固定,負載電阻 RL 變動時工作點的移動情形。




註: 如果是要驅動繼電器可參見《進階※電子電路篇》寫程式Arduino教學 - 02:線性 光耦合 PC817 該怎用? CTR?


後記(20181102)

總結,在計算 BJT 到底工作在什麼區時可以掌握以下步驟

1. VBE 直接帶入 0.7V 計算出 IB
2. 認為(假設) BJT 位於 "工作區" ,計算出 VCE
3. 若 VCE > 0.2 V ,則代表 BJT 的確工作於 "工作區" ,結束
4. 否則 (若 VCE < 0.2 V),則代表 BJT 工作於 "飽和區" , IC 須重新計算(此時 VCE 直接帶入 0.2 V)


Hint : 在做電路設計時,一般而言我們都假設 BJT 的 Beta 為 100 ,但不會去計較具體需要多少。如果一個電路一定要 Beta = 123 才能正常工作,那這是一個失敗的設計,因為你永遠找不到一個如此精準的 BJT

推薦好用的 MOSFET 型號

見此連結




延伸參考
電晶體開關電路,八張圖「徹底」搞定!
電晶體的三種工作模式
哪种三极管驱动电路好?
三極體基極下拉電阻接地的作用是什麼
泄放電阻泄放些啥?——典型電阻電路12
How to Use A Transistor as a Switch

我的 Youtube 頻道,一定要訂閱
我將定期推出程式語言的新手教學影片


↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引