有挺多朋友還搞不清灌電流和拉電流的概念,下面就此解釋一下,希望看過本文后不再就此困擾。
一個重要的前提:灌電流和拉電流是針對端口而言的。
名詞解釋——灌:注入、填充,由外向內(nèi)、由虛而實(shí)??柿?,來一大杯鮮榨橙汁,一飲而盡,飽了,這叫“灌”。
灌電流(sink current) ,對一個端口而言,如果電流方向是向其內(nèi)部流動的則是“灌電流”,比如一個IO通過一個電阻和一個LED連接至VCC,當(dāng)該IO輸出為邏輯0時能不能點(diǎn)亮LED,去查該器件手冊中sink current參數(shù)。
名詞解釋——拉:流出、排空,由內(nèi)向外,由實(shí)而虛。一大杯鮮橙汁喝了,過會兒,憋的慌,趕緊找衛(wèi)生間,一陣“大雨”,舒坦了,這叫“拉”。
拉電流(sourcing current),對一個端口而言,如果電流方向是向其外部流動的則是“拉電流”,比如一個IO通過一個電阻和一個LED連至GND,當(dāng)該IO輸出為邏輯1時能不能點(diǎn)亮LED,去查該器件手冊中sourcing current參數(shù)。
單片機(jī)輸出低電平時,將允許外部器件,向單片機(jī)引腳內(nèi)灌入電流,這個電流,稱為“灌電流”,外部電路稱為“灌電流負(fù)載”(sink current)
單片機(jī)輸出高電平時,則允許外部器件,從單片機(jī)的引腳,拉出電流,這個電流,稱為“拉電流”,外部電路稱為“拉電流負(fù)載“(source current)
這些電流一般是多少?最大限度是多少? 這就是常見的單片機(jī)輸出驅(qū)動能力的問題。
分析一下 TTL 的輸入特性,就可以發(fā)現(xiàn),51 單片機(jī)基本上就沒有什么驅(qū)動能力。
它的引腳,甚至不能帶動當(dāng)時的 LED 進(jìn)行正常發(fā)光。
記得是在 AT89C51 單片機(jī)流行起來之后,做而論道才發(fā)現(xiàn):單片機(jī)引腳的能力大為增強(qiáng),可以直接帶動 LED 發(fā)光了。
看看下圖,圖中的 D1、D2 就可以不經(jīng)其它驅(qū)動器件,直接由單片機(jī)的引腳控制發(fā)光顯示。
雖然引腳已經(jīng)可以直接驅(qū)動 LED 發(fā)光,但是且慢,先別太高興,還是看看 AT89C51 單片機(jī)引腳的輸出能力吧。
從 AT89C51 單片機(jī)的 PDF 手冊文件中可以看到,穩(wěn)態(tài)輸出時,“灌電流”的上限為:
Maximum IOL per port pin: 10 mA;
Maximum IOL per 8-bit port:Port 0: 26 mA,Ports 1, 2, 3: 15 mA;
Maximum total I for all output pins: 71 mA.
這里是說:
每個單個的引腳,輸出低電平的時候,允許外部電路,向引腳灌入的最大電流為 10 mA;
每個 8 位的接口(P1、P2 以及 P3),允許向引腳灌入的總電流最大為 15 mA,而 P0 的能力強(qiáng)一些,允許向引腳灌入的最大總電流為 26 mA;
全部的四個接口所允許的灌電流之和,最大為 71 mA。
單片機(jī)驅(qū)動蜂鳴器
這里驅(qū)動蜂鳴器電阻為14k 如果電壓為3V的時候需要電流為21ma,但是單片機(jī)提供的電流最大也就10ma左右,所以需要三極管來放大電流
如圖P26高電平的時候蜂鳴器工作,P26低電平的時候斷開。 蜂鳴器工作電壓3V,所以取RES2為2v / 21ma為100歐左右。先需要21ma二極管的放大倍數(shù)將近100倍,所以基極電流最小為0.21ma,現(xiàn)E點(diǎn)電壓為3v所以R=U/A 電阻最大需要取2V/0.21ma=10000K 如果電阻取100歐那基極電流就是20ma,單片機(jī)驅(qū)動不了。最大為10ma可知電阻的最小為200歐姆,放大2倍則蜂鳴器就可以工作了。。(在飽和,放大的臨界狀態(tài)所以可以使用 IB=β*IC,)
而當(dāng)這些引腳“輸出高電平”的時候,單片機(jī)的“拉電流”能力呢? 有10 mA的驅(qū)動能力。
結(jié)論就是:單片機(jī)輸出低電平的時候,驅(qū)動能力尚可,而輸出高電平的時候,就沒有輸出電流的能力。
這個結(jié)論是依照手冊中給出的數(shù)據(jù)做出來的。
51 單片機(jī)的這些特性,是源于引腳的內(nèi)部結(jié)構(gòu),引腳內(nèi)部結(jié)構(gòu)圖這里就不畫了,很多書中都有。
在芯片的內(nèi)部,引腳和地之間,有個三極管,所以引腳具有下拉的能力,輸出低電平的時候,允許灌入 10mA 的電流;而引腳和正電源之間,有個幾百K的“內(nèi)部上拉電阻”,所以,引腳在高電平的時候,能夠輸出的拉電流很小。特別是 P0 口,其內(nèi)部根本就沒有上拉電阻,所以 P0 口根本就沒有高電平輸出電流的能力。
哦,明白了,外接電路如果是“拉電流負(fù)載”,要求單片機(jī)輸出高電平時發(fā)揮作用,那就必須用“上拉電阻”來協(xié)助,產(chǎn)生負(fù)載所需的電流。
下面做而論道就專門說說上拉電阻存在的問題。
如果在一個 8 位的接口,安裝了 8 個 1K 的上拉電阻,當(dāng)單片機(jī)都輸出低電平的時候,就有 40mA 的電流灌入這個 8 位的接口!
如果四個 8 位接口,都加上 1K 的上拉電阻,最大有可能出現(xiàn) 32 × 5 = 160mA 的電流,都流入到單片機(jī)中!
這個數(shù)值已經(jīng)超過了單片機(jī)手冊上給出的上限。如果此時單片機(jī)工作不穩(wěn)定,就是理所當(dāng)然的了。
而且這些電流,都是在負(fù)載處于無效的狀態(tài)下出現(xiàn)的,它們都是完全沒有用處的電流,只是產(chǎn)生發(fā)熱、耗電大、電池消耗快...等后果。
,特別是現(xiàn)在,都在提倡節(jié)能減排,低碳...。
那么,把上拉電阻加大些,可以嗎?
回答是:不行的,因?yàn)樾枰鼮槔娏髫?fù)載提供電流。對于 LED,如果加大電阻,將使電流過小,發(fā)光暗淡,就失去發(fā)光二極管的作用了。
對于 D1,是灌電流負(fù)載,單片機(jī)輸出低電平的時候,R1、D1 通路上會有灌電流;輸出高電平的時候,那就什么電流都沒有,此時就不產(chǎn)生額外的耗電。
綜上所述,灌電流負(fù)載,是合理的;而“拉電流負(fù)載”和“上拉電阻”會產(chǎn)生很大的無效電流,這種電路不合理。
有些網(wǎng)友對上拉電阻情有獨(dú)鐘,有用沒用的,都想在引腳上安裝個上拉電阻,甚至還能說出些理由:穩(wěn)定性啦、速度啦...。
其實(shí),“上拉電阻”和“拉電流負(fù)載”電路,是會對單片機(jī)系統(tǒng)造成不良后果的。
做而論道看過很多關(guān)于單片機(jī)引腳以及上拉電阻方面的書籍、參考資料,基本上它們對于使用上拉電阻的弊病都沒有進(jìn)行仔細(xì)的討論。
在此,做而論道鄭重向大家提出建議:設(shè)計(jì)單片機(jī)的負(fù)載電路,應(yīng)該采用“灌電流負(fù)載”的電路形式,以避免無謂的電流消耗。
上拉電阻,僅僅是在 P0 口才考慮加不加的問題:當(dāng)用 P0 口做為輸入口的時候,需要加上、當(dāng)用 P0 口輸出高電平驅(qū)動 MOS 型負(fù)載的時候,也需要加上,其它的時候,P0 口也不用加入上拉電阻。
在其它接口(P1、P2 和 P3),都不應(yīng)該加上拉電阻,特別是輸出低電平有效的時候,外接器件就有上拉的作用。
烜芯微專業(yè)制造二極管,三極管,MOS管,橋堆等20年,工廠直銷省20%,4000家電路電器生產(chǎn)企業(yè)選用,專業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以點(diǎn)擊右邊的工程師,或者點(diǎn)擊銷售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹
烜芯微專業(yè)制造二極管,三極管,MOS管,橋堆等20年,工廠直銷省20%,4000家電路電器生產(chǎn)企業(yè)選用,專業(yè)的工程師幫您穩(wěn)定好每一批產(chǎn)品,如果您有遇到什么需要幫助解決的,可以點(diǎn)擊右邊的工程師,或者點(diǎn)擊銷售經(jīng)理給您精準(zhǔn)的報(bào)價(jià)以及產(chǎn)品介紹