單片機小白學步(22) IO口:蜂鳴器的使用/三極管的工作原理
這一篇繼續(xù)上一篇的內(nèi)容,我們來做實驗四:按鍵控制有源蜂鳴器,按下按鍵蜂鳴器響,釋放按鍵不響。
本文引用地址:http://butianyuan.cn/article/201611/318511.htm蜂鳴器
實驗四之前簡單介紹下蜂鳴器。蜂鳴器有兩種,無源蜂鳴器和有源蜂鳴器,一般用于發(fā)出報警的聲音。聲音是由震動產(chǎn)生的,大家都見過喇叭,喇叭里面有磁鐵和線圈。給線圈通上不斷變化的電壓,在磁鐵產(chǎn)生的磁場中就會運動。于是和線圈固定在一起的振膜就會震動,于是就能聽見聲音了,而無源蜂鳴器和喇叭效果基本一樣。和無源蜂鳴器不同的是,有源蜂鳴器內(nèi)部就有發(fā)聲電路,通上電壓合適的直流電就會發(fā)出叫聲。另外,有源蜂鳴器有正負極之分。圖中是常用的一種工作電壓為5V的有源蜂鳴器,正面標有加號的一側(cè)引腳為正極,如果器件是全新的沒有剪過引腳,正極引腳比負極長。
驅(qū)動電路
從上面的介紹來看,有源蜂鳴器和LED一樣,只要通電就能工作(如果沒有特殊說明,后面蜂鳴器就是指有源蜂鳴器)。但是為什么要單獨作為一個實驗呢?
前面我們說了,單片機IO口能通過的電流是有限的,過大的電流可能會燒壞管腳,或者不能正常工作。蜂鳴器和LED相比最主要的區(qū)別,就是蜂鳴器比LED需要的電流大很多,電壓一般也會高一些。
為了讓單片機驅(qū)動蜂鳴器,也就是控制蜂鳴器工作,我們需要使用一些特別的電路。不知道大家是否了解繼電器,繼電器的特點就是用小電流低電壓,控制大電流高電壓電路。但是一般的繼電器控制端需要的電流,對于單片機來說還是太大了,而且繼電器價格比較高,能控制很大的電流,用在這里大材小用了。而這里我們要用的器件是三極管。
三極管基本介紹
三極管的作用主要是放大電流。和名字一樣,三極管有三個管腳:發(fā)射極、基極、集電極,分別簡寫為E、B、C。有兩種類型,PNP型和NPN型,兩種類型的三極管工作時電流方向恰好相反,電路符號也不相同,如圖所示。發(fā)射極上的箭頭正是表示工作時電流方向的。
三極管有很多參數(shù),實際的三極管也有很多種,封裝也各種各樣。下圖是常見的TO-92封裝的直插式小功率三極管。注意,這種外形只是封裝,并不是三極管專用,也有其他器件會用這樣的封裝,具體要看上面標示的器件型號,例如圖中的S9012表示它是9012三極管。像圖中一樣管腳朝下放置,半圓柱的平面正對自己,從左往右三個管腳分別是E、B、C。
三極管作為電子開關(guān)使用
三極管有三種工作狀態(tài),截止區(qū)、放大區(qū)、飽和區(qū)。在放大區(qū),可以放大電信號,我們用的擴音器等設(shè)備就可以通過三極管實現(xiàn)。在單片機中我們主要利用三極管的截止區(qū)和飽和區(qū),作電子開關(guān)使用,常用下面這樣的電路圖。
左圖和右圖分別是NPN、PNP型三極管的電路圖。R1、S1和R2、S2相當于單片機IO口,三極管集電極接蜂鳴器。NPN型電路控制蜂鳴器高電平有效,即IO口輸出高電平的時候,蜂鳴器就會響。PNP型反之。為了方便觀察,我接的是LED,和蜂鳴器是一樣的道理,可以看到圖中LED就點亮了。注意三極管的管腳位置不可接反,要驅(qū)動的負載即圖中的LED也不能接反。
常用PNP三極管有9012、8550等,NPN三極管有9013,8050等。
三極管的原理和很詳細的工作情況分析,需要不少的計算過程,有興趣的讀者可以查看模擬電路相關(guān)的書籍資料。文章末尾也會簡單分析三極管工作機制,有興趣的同學可以看看。如果覺得難以理解,學習單片機過程中,可以不做深入研究。
電路設(shè)計
程序的實現(xiàn)和點亮LED差不多,不過要看你的電路確定是高電平還是低電平有效。按照前面的三極管電路,我們可以用9012實現(xiàn)蜂鳴器驅(qū)動電路,低電平有效,電路圖如下,注意蜂鳴器的正負極不能接反。
圖中P1.0上接的LED還放在那(當然也可以去掉),P2.0上接了按鍵開關(guān),P2.1上連接了三極管驅(qū)動的蜂鳴器。
我用面包板搭建的電路。
備注:三極管在這里起到開關(guān)的狀態(tài),建議優(yōu)先考慮使用PNP型三極管電路。因為三極管的作用是放大電流,對于同一個三極管而言,如果要輸出更大的電流,一般就要在基極輸入更大電流。而使用PNP型電路時,IO口輸出低電平有效,對于單片機來說是灌電流,此時基極能提供的電流更大,從而提供更大電流以驅(qū)動蜂鳴器。我在實際測試時,如果使用NPN型三極管9013,可以驅(qū)動LED,但不足以驅(qū)動蜂鳴器,除非自己給IO口再外接一個上拉電阻。
程序?qū)崿F(xiàn)
首先是定義LED、按鍵、蜂鳴器三個IO口
sbit LED = P1^0;
sbit KEY = P2^0;
sbit BUZZER = P2^1;
然后先設(shè)置KEY=1,然后在主循環(huán)中處理即可。這里我用的是PNP驅(qū)動,蜂鳴器和LED一樣,是低電平有效。
void main()
{
KEY = 1;
while(1) {
LED = KEY;
BUZZER = KEY;
}
}
搭建完電路并燒寫好程序,按下按鍵,LED會被點亮,同時蜂鳴器就能發(fā)出聲音了。
三極管工作機制簡要分析
三極管的特性分析比較復雜,這里我通過仿真進行簡單介紹,三極管的原理和更多的深入知識,可以查閱相關(guān)模擬電路書籍。下圖是我用Multisim軟件仿真的電路(如果有興趣自己仿真,請自行安裝學習Multisim軟件)。
圖中左邊的VCC通過可調(diào)電阻Rp分壓,接到三極管基極,右邊VCC通過一個電阻接到三極管集電極,三極管發(fā)射極接地。兩個綠色箭頭是Multisim中的探針,可以在黃色的框中顯示導線上通過的電流大小,以及導線上的電壓(也就是相對于GND的電壓)。
我們把這個電路看成兩個電流通路,分別是由紫色和橙色箭頭標注。調(diào)節(jié)Rp到合適的位置,就會有電流通過基極,大小為Ib,也就是紫色通路的電流。由于三極管的特性,Ic即橙色通路的電流也會根據(jù)Ib而變化。從圖中也可以看出來,左右兩個探針顯示的直流電流I(dc)分別為1.71nA和172nA(即Ib和Ic)。
如果調(diào)節(jié)Rp,如圖Ib=3.33uA,此時Ic=333uA。多調(diào)整幾次并觀察結(jié)果,可以發(fā)現(xiàn)在一定范圍內(nèi),始終近似有Ic=100*Ib(在模擬電路中,常直接用等號代表約等于,誤差在所難免)。這正是三極管的放大特性。如果在基極接的是話筒,在集電極接喇叭,就可以放大聲音信號了。當然實際電路還需要添加一些器件。而這里的100就是圖中三極管的放大倍率,是三極管很重要的一個參數(shù)(所謂參數(shù),就像電阻的阻值一樣的道理)。
如果調(diào)節(jié)Rp,使基極電流Ib很大,例如圖中Ib=1mA,此時Ic只有4.95mA,而不是100mA,不滿足前面的條件了。前面說的是在一定范圍內(nèi),Ic=100*Ib,也就是兩者成正比,叫做三極管的線性區(qū),也叫放大區(qū)。而如果基極和發(fā)射極之間電壓太大,超過一定范圍,就進入了三極管的飽和區(qū),Ic的值比較大;反之,如果電壓太小就會進入截止區(qū),在截止區(qū),Ic很小,幾乎為0。正是利用這個特性,我們可以把單片機IO口接在基極,而在三極管集電極連接蜂鳴器,從而進行控制。
備注1:仿真電路有很大的局限性,只能在一定程度上模擬實際電路。實際電路很復雜,例如導線有電阻,但是仿真軟件的設(shè)計很難考慮這么多因素,還有一些目前仍然未知的問題也不能考慮到。所以仿真結(jié)果只能作為參考。例如上面這個電路,我發(fā)現(xiàn)即使不斷調(diào)節(jié)Rp,讓滑片直接移動到5V的那一端,基極電壓卻仍然沒有達到5V,和實際電路中并不相符。
備注2:前面說單片機IO口使用了電子開關(guān),就類似于上面的三極管電路,不過單片機中實際用的一般是MOS管。
備注3:為了讓三極管工作在放大區(qū),常常使用電阻使基極和發(fā)射極之間電壓保持在一定的范圍內(nèi)。這個過程叫做靜態(tài)工作點的設(shè)置。設(shè)置好靜態(tài)工作點,然后在其上疊加需要放大的幅度較小的交流信號(如果直接加交流信號,不會工作在放大區(qū))。
備注4:三極管作為電子開關(guān)時,雖然不工作在放大區(qū),但是仍然起到了電流放大的作用,只是不滿足線性區(qū)的放大倍數(shù)關(guān)系。上圖中的Rp如果換成一個固定電阻和一個阻值隨溫度變化的熱敏電阻,三極管放大倍數(shù)足夠大的情況下,就可以做成熱敏開關(guān),可以根據(jù)溫度控制LED的開關(guān),而電子開關(guān)也因此得名。
=======================================================
評論