很多初學單片機的網(wǎng)友都問過我,關(guān)于如何確定數(shù)碼管的限流電阻問題。我想這是對電路不理解造成的。因此在這就用最通俗的方法說說基礎的電子知識。
首先就說說三極管,實際上只要你了解了三極管的特性對你使用單片機就順手很多了。大家其實也都知道三極管具有放大作用,但如何去真正理解它卻是你以后會不會使用大部分電子電路和IC的關(guān)鍵。
我們一般所說的普通三極管是具有電流放大作用的器件。其它的三極管也都是在這個原理基礎上功能延伸。三極管的符號如下圖左邊,我們就以NPN型三極管為例來說說它的工作原理。
它就是一個以b(基極)電流Ib來驅(qū)動流過CE的電流Ic的器件,它的工作原理很像一個可控制的閥門。
左邊細管子里藍色的小水流沖動杠桿使大水管的閥門開大,就可允許較大紅色的水流通過這個閥門。當藍色水流越大,也就使大管中紅色的水流更大。如果放大倍數(shù)是100,那么當藍色小水流為1千克/小時,那么就允許大管子流過100千克/小時的水。三極管的原理也跟這個一樣,放大倍數(shù)為100時,當Ib(基極電流)為1mA時,就允許100mA的電流通過Ice。我這么說大家能理解嗎?
這個原理大家可能也都知道,但是把它用在電路里的狀況能理解,那單片機的運用就少了一大障礙了。最常用的連接如下圖。
我們來分析一下這個電路,如果它的放大倍數(shù)是100,基極電壓我們不計?;鶚O電流就是10V÷10K=1mA,集電極電流就應該是100mA。根據(jù)歐姆定律,這樣Rc上的電壓就是0.1A×50Ω=5V。那么剩下的5V就吃在了三極管的C、E極上了。好!現(xiàn)在我們假如讓Rb為1K,那么基極電流就是10V÷1K=10mA,這樣按照放大倍數(shù)100算,Ic就是不是就為1000mA也就是1A了呢?假如真的為1安,那么Rc上的電壓為1A×50Ω=50V。啊?50V!都超過電源電壓了,三極管都成發(fā)電機了嗎?其實不是這樣的。見下圖:
我們還是用水管內(nèi)流水來比喻電流,當這個控制電流為10mA時使主水管上的閥開大到能流過1A的電流,但是不是就能有1A的電流流過呢?不是的,因為上面還有個電阻,它就相當于是個固定開度的閥門,它串在這個主水管的上面,當下面那個可控制的閥開度到大于上面那個固定電阻的開度時,水流就不會再增大而是等于通過上面那個固定閥開度的水流了,因此,下面的三極管再開大開度也沒有用了。因此我們可以計算出那個固定電阻的最大電流10V÷50Ω=0.2A也就是200mA。就是說在電路中三極管基極電流增大集電極的電流也增大,當基極電流Ib增大到2mA時,集電極電流就增大到了200mA。當基極電流再增大時,集電極電流已不會再增大,就在200mA不動了。此時上面那個電阻也就是起限流作用了。下面我們來理解單片機內(nèi)的IO的狀況:
在單片機內(nèi)有P1-P3的24個IO口的電路都如上圖那樣。平常我們用電子電路的目的是最終讓目標器件工作,例如讓發(fā)光二極管亮起來,讓電機正常轉(zhuǎn)起來,從根本上說就是讓這些器件獲得一定的電流讓它做功。例如要讓發(fā)光二極管亮一般就需要1mA以上的電流。但是,單片機是智能芯片,它可以通過檢測各IO口的電壓值來做出邏輯分析和判斷,并能輸出高或低電壓作為結(jié)果信號,因此可以看出,單片機的各IO口注重的是所產(chǎn)生的電壓而不是流過R和三極管的電流。那么單片機內(nèi)IO口的電壓和電流的關(guān)系又是怎么樣的呢?我們還是用水管流水的例子來說明。
假設我們讓R的這個閥開的較大,讓下面那個控制閥全關(guān),這時如圖1所示可以看出P點的壓力就是水箱的壓力。當我們將下面的控制閥全開,如圖2所示,則水將以很大的水流流過管線,而此時P點的壓力為0。這個原理和電子電路很相似。通過三極管的關(guān)閉或開大來使輸出點P測得的邏輯量為1(電源電壓)或0(0電位)。但這個過程有一個問題,就是當需要P點輸出為0時,三極管將開得很大,流過的電流很大,單片機上有32個IO口,這樣消耗的電能就很多。有沒有辦法改進呢?有!見下圖:
見圖3,如果我們將上面那個閥門R關(guān)得很小,將下面的控制閥全關(guān),這時P點的壓力仍舊會是水箱的壓力,和上面圖1是一樣的。但當我們將控制閥開大時,如圖4,P點的壓力雖然也同樣為0,但這時通過的水流就大大減少了。這樣我們既能輸出1或者0。但消耗的水卻很少。單片機里的電路正是這樣做的,它上面的電阻R大約為50K,最大電流是5V÷50K=0.1mA。也就是說,當P輸出1時,不消耗電流,當P輸出0時消耗的電流為0.1mA。正因為它的上拉電阻R很大,因此對于初學者來說,要它直接驅(qū)動發(fā)光管或其它的負載就要有一定的方法技巧了。這里我再和大家一起分析一下IO口外接負載時的各種情況。
我們先來看看接TTL器件的情況,當P1.0接到74HC373的一個輸入腳上時,因為TTL器件的輸入阻抗很高,大約幾百K到M歐姆級。這就相當于P1.0接了個500K(我們假設為500K)的電阻到地。這樣當三極管導通時,P1.0點為低電平,0.1mA的電流經(jīng)Rc然后流過三極管一地,Ri上沒有電流流過。而當三極管截止后,電流就由Rc流過再通過Ri流到地。由于電阻分壓的作用,在Rc和Ri上各有部分電壓,P1.0點的電壓為Rc和Ri的分壓??傠娏鳎?V÷(5