單片機小白學步系列(二十二) IO口:蜂鳴器的使用/三極管的工作原理

2014-11-22更新:感謝Ireland同學的提醒,修改了PNP型三極管驅動電路,蜂鳴器從三極管的發射極改到了集電極,這樣效果會更好,電路也更合理。同時增加了備註4。

======================================

這一篇繼續上一篇的內容,我們來做實驗四:按鍵控制有源蜂鳴器,按下按鍵蜂鳴器響,釋放按鍵不響。

蜂鳴器

實驗四之前簡單介紹下蜂鳴器。蜂鳴器有兩種,無源蜂鳴器和有源蜂鳴器,一般用於發出報警的聲音。聲音是由震動產生的,大家都見過喇叭,喇叭裏面有磁鐵和線圈。給線圈通上不斷變化的電壓,在磁鐵產生的磁場中就會運動。於是和線圈固定在一起的振膜就會震動,於是就能聽見聲音了,而無源蜂鳴器和喇叭效果基本一樣。和無源蜂鳴器不同的是,有源蜂鳴器內部就有發聲電路,通上電壓合適的直流電就會發出叫聲。另外,有源蜂鳴器有正負極之分。圖中是常用的一種工作電壓爲5V的有源蜂鳴器,正面標有加號的一側引腳爲正極,如果器件是全新的沒有剪過引腳,正極引腳比負極長。

IMG_2291_1.jpg
IMG_2295_1.jpg

驅動電路

從上面的介紹來看,有源蜂鳴器和LED一樣,只要通電就能工作(如果沒有特殊說明,後面蜂鳴器就是指有源蜂鳴器)。但是爲什麼要單獨作爲一個實驗呢?

前面我們說了,單片機IO口能通過的電流是有限的,過大的電流可能會燒壞管腳,或者不能正常工作。蜂鳴器和LED相比最主要的區別,就是蜂鳴器比LED需要的電流大很多,電壓一般也會高一些。

爲了讓單片機驅動蜂鳴器,也就是控制蜂鳴器工作,我們需要使用一些特別的電路。不知道大家是否瞭解繼電器,繼電器的特點就是用小電流低電壓,控制大電流高電壓電路。但是一般的繼電器控制端需要的電流,對於單片機來說還是太大了,而且繼電器價格比較高,能控制很大的電流,用在這裏大材小用了。而這裏我們要用的器件是三極管。

三極管基本介紹

三極管的作用主要是放大電流。和名字一樣,三極管有三個管腳:發射極、基極、集電極,分別簡寫爲E、B、C。有兩種類型,PNP型和NPN型,兩種類型的三極管工作時電流方向恰好相反,電路符號也不相同,如圖所示。發射極上的箭頭正是表示工作時電流方向的。

三極管有很多參數,實際的三極管也有很多種,封裝也各種各樣。下圖是常見的TO-92封裝的直插式小功率三極管。注意,這種外形只是封裝,並不是三極管專用,也有其他器件會用這樣的封裝,具體要看上面標示的器件型號,例如圖中的S9012表示它是9012三極管。像圖中一樣管腳朝下放置,半圓柱的平面正對自己,從左往右三個管腳分別是E、B、C。

IMG_2296_1.jpg

三極管作爲電子開關使用

三極管有三種工作狀態,截止區、放大區、飽和區。在放大區,可以放大電信號,我們用的擴音器等設備就可以通過三極管實現。在單片機中我們主要利用三極管的截止區和飽和區,作電子開關使用,常用下面這樣的電路圖。

2078bdd8-d0b9-43e1-adc5-ed3a89b4367e

左圖和右圖分別是NPN、PNP型三極管的電路圖。R1、S1和R2、S2相當於單片機IO口,三極管集電極接蜂鳴器。NPN型電路控制蜂鳴器高電平有效,即IO口輸出高電平的時候,蜂鳴器就會響。PNP型反之。爲了方便觀察,我接的是LED,和蜂鳴器是一樣的道理,可以看到圖中LED就點亮了。注意三極管的管腳位置不可接反,要驅動的負載即圖中的LED也不能接反。

常用PNP三極管有9012、8550等,NPN三極管有9013,8050等。

三極管的原理和很詳細的工作情況分析,需要不少的計算過程,有興趣的讀者可以查看模擬電路相關的書籍資料。文章末尾也會簡單分析三極管工作機制,有興趣的同學可以看看。如果覺得難以理解,學習單片機過程中,可以不做深入研究。

電路設計

程序的實現和點亮LED差不多,不過要看你的電路確定是高電平還是低電平有效。按照前面的三極管電路,我們可以用9012實現蜂鳴器驅動電路,低電平有效,電路圖如下,注意蜂鳴器的正負極不能接反。

bbd49924-47b1-4ec4-9ba4-3831adecd804

圖中P1.0上接的LED還放在那(當然也可以去掉),P2.0上接了按鍵開關,P2.1上連接了三極管驅動的蜂鳴器。

我用麪包板搭建的電路。

12cbb9b4-a87c-4ad2-8601-58b9fd2ba540

備註:三極管在這裏起到開關的狀態,建議優先考慮使用PNP型三極管電路。因爲三極管的作用是放大電流,對於同一個三極管而言,如果要輸出更大的電流,一般就要在基極輸入更大電流。而使用PNP型電路時,IO口輸出低電平有效,對於單片機來說是灌電流,此時基極能提供的電流更大,從而提供更大電流以驅動蜂鳴器。我在實際測試時,如果使用NPN型三極管9013,可以驅動LED,但不足以驅動蜂鳴器,除非自己給IO口再外接一個上拉電阻。

程序實現

首先是定義LED、按鍵、蜂鳴器三個IO口

sbit LED = P1^0;

sbit KEY = P2^0;

sbit BUZZER = P2^1;

然後先設置KEY=1,然後在主循環中處理即可。這裏我用的是PNP驅動,蜂鳴器和LED一樣,是低電平有效。

void main()

{

    KEY = 1;

    while(1) {

        LED = KEY;

        BUZZER = KEY;

    }

}

搭建完電路並燒寫好程序,按下按鍵,LED會被點亮,同時蜂鳴器就能發出聲音了。

三極管工作機制簡要分析

三極管的特性分析比較複雜,這裏我通過仿真進行簡單介紹,三極管的原理和更多的深入知識,可以查閱相關模擬電路書籍。下圖是我用Multisim軟件仿真的電路(如果有興趣自己仿真,請自行安裝學習Multisim軟件)。

圖中左邊的VCC通過可調電阻Rp分壓,接到三極管基極,右邊VCC通過一個電阻接到三極管集電極,三極管發射極接地。兩個綠色箭頭是Multisim中的探針,可以在黃色的框中顯示導線上通過的電流大小,以及導線上的電壓(也就是相對於GND的電壓)。

我們把這個電路看成兩個電流通路,分別是由紫色和橙色箭頭標註。調節Rp到合適的位置,就會有電流通過基極,大小爲Ib,也就是紫色通路的電流。由於三極管的特性,Ic即橙色通路的電流也會根據Ib而變化。從圖中也可以看出來,左右兩個探針顯示的直流電流I(dc)分別爲1.71nA和172nA(即Ib和Ic)。

1.png

如果調節Rp,如圖Ib=3.33uA,此時Ic=333uA。多調整幾次並觀察結果,可以發現在一定範圍內,始終近似有Ic=100*Ib(在模擬電路中,常直接用等號代表約等於,誤差在所難免)。這正是三極管的放大特性。如果在基極接的是話筒,在集電極接喇叭,就可以放大聲音信號了。當然實際電路還需要添加一些器件。而這裏的100就是圖中三極管的放大倍率,是三極管很重要的一個參數(所謂參數,就像電阻的阻值一樣的道理)。

如果調節Rp,使基極電流Ib很大,例如圖中Ib=1mA,此時Ic只有4.95mA,而不是100mA,不滿足前面的條件了。前面說的是在一定範圍內,Ic=100*Ib,也就是兩者成正比,叫做三極管的線性區,也叫放大區。而如果基極和發射極之間電壓太大,超過一定範圍,就進入了三極管的飽和區,Ic的值比較大;反之,如果電壓太小就會進入截止區,在截止區,Ic很小,幾乎爲0。正是利用這個特性,我們可以把單片機IO口接在基極,而在三極管集電極連接蜂鳴器,從而進行控制。

備註1:仿真電路有很大的侷限性,只能在一定程度上模擬實際電路。實際電路很複雜,例如導線有電阻,但是仿真軟件的設計很難考慮這麼多因素,還有一些目前仍然未知的問題也不能考慮到。所以仿真結果只能作爲參考。例如上面這個電路,我發現即使不斷調節Rp,讓滑片直接移動到5V的那一端,基極電壓卻仍然沒有達到5V,和實際電路中並不相符。

備註2:前面說單片機IO口使用了電子開關,就類似於上面的三極管電路,不過單片機中實際用的一般是MOS管。

備註3:爲了讓三極管工作在放大區,常常使用電阻使基極和發射極之間電壓保持在一定的範圍內。這個過程叫做靜態工作點的設置。設置好靜態工作點,然後在其上疊加需要放大的幅度較小的交流信號(如果直接加交流信號,不會工作在放大區)。

備註4:三極管作爲電子開關時,雖然不工作在放大區,但是仍然起到了電流放大的作用,只是不滿足線性區的放大倍數關係。上圖中的Rp如果換成一個固定電阻和一個阻值隨溫度變化的熱敏電阻,三極管放大倍數足夠大的情況下,就可以做成熱敏開關,可以根據溫度控制LED的開關,而電子開關也因此得名。

=======================================================

《單片機小白學步》系列教程(原名《單片機入門指南》)介紹

本系列教程從最基本的入門知識開始,逐步深入介紹單片機系統設計,內容包括:
1、入門篇:單片機等基本概念、各種電子設計基本知識
2、思想篇:單片機/計算機系統設計的工程思想
3、學習篇:單片機學習過程、方法和技巧,以51單片機爲例介紹,並推廣到其他單片機
4、應用篇:遵循規範的工程方法,設計單片機系統實例(計劃設計的系統有:計算器、電子錶、密碼鎖、簡易手機,具體看有沒有時間再確定)
5、原理篇:從模擬電路、數字電路開始,逐步深入介紹單片機/計算機系統原理,並自行設計簡易的CPU(由於個人水平有限,這部分沒有把握寫好,具體內容視情況而定)

教程特點

1、技術知識點全面,從入門到精通

包含了各種基本知識,尤其是對單片機基本概念的介紹、爲什麼要用單片機等,在很多同類書籍教程中都被忽略了。同時也包含了一些深入的知識,包括原理篇考慮對單片機的基本原理進行介紹,有助於深入理解單片機。

本系列教程以51單片機爲例進行介紹。通過51介紹完單片機的基本知識,我會再把430進行簡要介紹,尤其是對比兩者之間的優缺點,讓大家很快感受到430的巨大優勢,而學習51正好爲快速瞭解430打下了堅實的基礎。

2、除了單片機知識,還有思想、方法、技巧的介紹

本系列教程中,介紹單片機各種模塊編程知識的主要是學習篇,而學習篇只是整個教程的一部分。在學習篇中我會貫穿各種方法技巧,如何理解一些模塊功能,怎麼看時序圖,嚴格遵守工程思想進行編程,程序發生了錯誤怎麼調試等等。而在思想篇中會總體介紹很多重要的思想,爲後面的學習做好準備工作。

3、知識先後順序的設計

單片機學習過程中,涉及大量的知識,而且很多知識之間相互依賴,關聯很強。

本系列教程對知識的先後順序進行比較明確的規劃,盡最大可能符合人的認知過程。但是實際規劃時發現,無論怎麼調整知識的順序,總有一些知識之間相互依賴,關係複雜。例如開始講IO口的時候肯定會提到寄存器,而寄存器這個詞的理解,需要深厚的背景知識。但是這些背景知識在沒有進行實踐的時候也很難理解。

初學者常常就會在這樣的地方感覺疑惑不解,不知所措。而每次遇到類似這樣的知識,我會向初學者指出,應該如何對待。這個知識是應該自己去學習補充,還是等到學完原理篇再做理解,而現在又應該怎麼去看待這個名詞。

另外,在整個教程的學習前,需要掌握一定的C語言等基礎知識,具體可參考教程第〇篇《序》中的相關說明
http://www.hainter.com/mcu-primer-0

4、語言通俗易懂

本系列教程力求語言通俗易懂,而不會用一堆新手不懂的詞語去解釋另一個不懂的詞語。但是受限於個人語言表達能力,可能有些地方表述的比較繁瑣,或者不清楚,希望大家能夠幫忙指出。

《單片機小白學步》交流羣

歡迎單片機愛好者加入《單片機小白學步》交流羣。此羣目標:

1、較高質量的單片機等技術的學習交流羣
2、爲《單片機小白學步》讀者及時提供更新通知
3、結交愛好思考學習,對技術感興趣,志同道合的朋友

加羣原則是寧可少加人,也要保證質量(不懂技術沒關係,關鍵是有一顆不怕困難、熱愛學習的心)。有空的時候我會重點在裏面回答一些技術問題。也鼓勵大家相互討論和促進~羣裏主要話題爲單片機相關,但是也可以討論各種想法等內容,愛學習愛思考的也可以加。羣號:124083011,請正確回答問題後進入,也希望幫忙推薦周圍合適的人加羣。

其他問題

如果覺得我寫的對你有幫助,歡迎多多反饋,包括寫的不正確、不合理、不太明白都可以指出來,這樣方便我對其進行完善。

更多可參見:《如何以學習單片機爲契機,逐步成爲優秀的工程師》
http://www.hainter.com/mcu-engineer

本系列教程首發於我的個人主頁,歡迎訪問(由於是國外服務器,速度稍微有點慢):
http://www.hainter.com/category/hacker/mcu-primer

同時會將其轉發到CSDN、電子發燒友等站點,歡迎關注。
CSDN專欄網址 http://blog.csdn.net/column/details/mcu-introduction.html
電子發燒友論壇 http://bbs.elecfans.com/zhuti_mcu_1.html

版權聲明:本文由jzj1993原創,請自覺尊重知識成果,轉載註明來源! 原文鏈接:http://www.hainter.com/mcu-primer-22

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章