單片機(jī)IO引腳驅(qū)動(dòng)能力提升篇
早期的51單片機(jī),驅(qū)動(dòng)能力很低。P1、P2和P3口只能驅(qū)動(dòng)3個(gè)LSTTL輸入端,P0口可驅(qū)動(dòng)8個(gè)。如果想要驅(qū)動(dòng)更多的器件,就要用到“總線驅(qū)動(dòng)芯片”。經(jīng)常用的就是74LS244(單向)和74LS245(雙向)。
現(xiàn)在常用的 AT89C51 單片機(jī)引腳的輸出能力已經(jīng)大多了,從 PDF 手冊(cè)文件中可查出:
單片機(jī)輸出低電平的時(shí)候,單個(gè)的引腳,向引腳灌入的最大電流為 10 mA;
一個(gè) 8 位的接口(P1、P2 以及 P3),灌入的總電流最大為 15 mA,P0 允許灌入的最大總電流為 26 mA;
全部的四個(gè)接口所允許的灌電流之和,最大為 71 mA。
但是當(dāng)引腳輸出高電平的時(shí)候,它們的“拉電流”能力可就差多了,竟然還不到 1 mA。
單片機(jī)的輸出特性和很多常用的LS系列TTL器件的輸出特性是相同的,都有灌電流較大的特點(diǎn)。
實(shí)際上,現(xiàn)在常用的單片機(jī)IO引腳驅(qū)動(dòng)能力,就和早期的單片機(jī)增加了“總線驅(qū)動(dòng)芯片”的效果基本是相同的?,F(xiàn)在的單片機(jī)輸出低電平的時(shí)候,就已經(jīng)可以直接驅(qū)動(dòng)LED發(fā)光了。
上述的數(shù)值,也并非是不可逾越的破壞性極限數(shù)值。當(dāng)略超過(guò)這些數(shù)值范圍的時(shí)候,單片機(jī)IO引腳的電壓,就會(huì)發(fā)生變化,造成“高電平不高”、“低電平不低”,這就會(huì)縮小外接器件的噪聲容限。如果環(huán)境再稍有干擾,外接器件就無(wú)法正確判定單片機(jī)送來(lái)的高、低電平,將會(huì)胡亂動(dòng)作。
==================================
為了合理利用IO引腳的低電平能力強(qiáng)的特點(diǎn),在外接耗電較大的器件(如LED數(shù)碼顯示器、繼電器等)的時(shí)候,應(yīng)該優(yōu)先選用低電平輸出來(lái)驅(qū)動(dòng)外部器件。使用IO口輸出高電平驅(qū)動(dòng)負(fù)載,就是一個(gè)錯(cuò)誤的選擇。
下圖是一個(gè)直接利用單片機(jī)IO引腳驅(qū)動(dòng)LED的電路。
圖中P0口使用低電平驅(qū)動(dòng)方式,只要加上約1K的限流電阻即可,甚至不需要常見(jiàn)的P0口上拉電阻。發(fā)光的段,每個(gè)引腳灌電流約為3mA,不發(fā)光的段,電流為0。即使各個(gè)段全都發(fā)光,電流也不超過(guò)P0所容許的電流,這是一個(gè)合理的驅(qū)動(dòng)方式。
圖中P3口使用了高電平驅(qū)動(dòng)方式,這就必須加上上拉電阻來(lái)幫助IO接口輸出電流。電阻也采用了1K,發(fā)光的段,LED上的電流約為3mA,不發(fā)光的段,電流則為5mA,灌入了單片機(jī)的IO引腳。
這種電路,給單片機(jī)IO引腳帶來(lái)了很大的電流,一個(gè)8位的接口最大有可能被灌入40mA的電流,遠(yuǎn)遠(yuǎn)超過(guò)了容許的數(shù)值。上拉電阻能夠增加大量不需要的電流,不僅會(huì)造成單片機(jī)工作不穩(wěn)定,還會(huì)導(dǎo)致電源效率的嚴(yán)重下降,發(fā)熱,紋波增大。這說(shuō)明,高電平輸出、加上拉電阻,就是一個(gè)不合理的驅(qū)動(dòng)方式。
如果只是一個(gè)引腳的電流取值稍大一些,還算可以;但是綜合考慮一個(gè)8位的接口,則每個(gè)引腳的電流就不要大于2~3mA。這樣來(lái)看,上拉電阻最小應(yīng)該在1.8K~2.5K之間,不宜再小,以免總電流超過(guò)接口所容許的電流。
在網(wǎng)上看到一篇“51單片機(jī)P0口上拉電阻的深入研究”的文章,對(duì)上拉電阻的最小選擇,寫(xiě)的很低,甚至說(shuō)可以選200歐姆!呵呵,這會(huì)燒毀單片機(jī)引腳的。
==================================
驅(qū)動(dòng)更大電流的負(fù)載,可以使用三極管來(lái)擴(kuò)充電流,也可使用集成芯片ULN2003(或ULN2008),另外也可使用專用的驅(qū)動(dòng)器件L298、各種型號(hào)的IGBT等等。
集成芯片的引腳比較密集,維修檢查較困難,更換的時(shí)候更是不便。做而論道比較喜歡使用三極管,它的耐壓和電流承受能力都遠(yuǎn)遠(yuǎn)超過(guò)集成芯片,在PCB上布線也很靈活方便。
8550(PNP)和8050(NPN):它們是一組可以配對(duì)使用的三極管,特點(diǎn)是集電極允許的電流很大,Icm竟然能達(dá)到1500mA!而且還不需要使用散熱片。它們的集電極反向擊穿電壓BVceo為25V,Pcm為0.5W。
2N5401(PNP)和2N5551(NPN):它們也是一組可以配對(duì)使用的三極管,它們的特點(diǎn)是耐壓比較高,集電極反向擊穿電壓BVceo可達(dá)160V!它們的最大集電極電流Icm為0.6A,Pcm為0.6W。
不同廠家的產(chǎn)品,參數(shù)會(huì)稍有不同。
==================================
下面以常見(jiàn)的繼電器為負(fù)載繼續(xù)說(shuō)明驅(qū)動(dòng)方法。繼電器線圈的驅(qū)動(dòng)電流往往要有40mA以上,單片機(jī)的引腳肯定是不能承受了,必須用三極管來(lái)擴(kuò)充輸出能力。
+5V的大電流負(fù)載,用8550(PNP型)驅(qū)動(dòng)電路可見(jiàn)下圖。
P3.7輸出低電平的時(shí)候,在R1中形成Ib約有2mA,經(jīng)過(guò)8550的放大,Ic足夠驅(qū)動(dòng)繼電器了。
用這個(gè)電路,不僅可以驅(qū)動(dòng)繼電器,也驅(qū)動(dòng)蜂鳴器、揚(yáng)聲器、多個(gè)LED等等,甚至驅(qū)動(dòng)小型的直流電機(jī),也是可以的。一般來(lái)說(shuō),電機(jī)的工作電流要大一些,只要不超過(guò)8550可以輸出的最大電流是1500mA即可。驅(qū)動(dòng)電機(jī)時(shí),圖中電阻R1的取值應(yīng)該再小一些。
==================================
用這個(gè)電路,可以各種大電流負(fù)載,但是做而論道為什么單單要用繼電器,來(lái)說(shuō)明問(wèn)題呢?
因?yàn)樵诰W(wǎng)上,發(fā)現(xiàn)很多不適當(dāng)?shù)睦^電器驅(qū)動(dòng)電路,這些電路都是一個(gè)特點(diǎn),即使用了射極輸出電路結(jié)構(gòu)。射極輸出電路要求輸入的動(dòng)態(tài)范圍要大,而且輸出的電壓范圍永遠(yuǎn)比輸入小0.7V。射極輸出電路就不能有效的利用+5V的電源,實(shí)際上,加到繼電器上的電壓,不足+4V,除非是使用4V的繼電器,否則這就是不穩(wěn)定的隱患。
做而論道給出的電路是共射極結(jié)構(gòu),有電壓放大能力,所以對(duì)輸入的要求較低,輸出動(dòng)態(tài)范圍大。
==================================
對(duì)于大于+5V的負(fù)載,如+12V,上面的電路就不行了。
如果只是簡(jiǎn)單的把電源由+5V改為+12V,那么單片機(jī)輸出的高、低電平,還是只有0~5V的變化幅度,這對(duì)8550射極的+12V來(lái)說(shuō),都是低電平。8550將不能截止。
對(duì)于大于+5V的負(fù)載,只能使用NPN型的8050三極管來(lái)驅(qū)動(dòng),先以單片機(jī)輸出高電平來(lái)驅(qū)動(dòng)。電路如下:
==================================
在上述電路中,上拉電阻R2也會(huì)帶來(lái)無(wú)謂的電流,其害處前面已經(jīng)討論過(guò)。
更重要的缺點(diǎn)是:在開(kāi)機(jī)單片機(jī)復(fù)位后,自然輸出的高電平,會(huì)使繼電器吸合,或者是使電機(jī)轉(zhuǎn)動(dòng)。(使用ULN2003等芯片擴(kuò)充輸出電流的時(shí)候,也存在這個(gè)問(wèn)題。)
雖然編程的時(shí)候,可以先進(jìn)行接口的初始化,令其馬上就輸出0。但是每次開(kāi)機(jī),還是會(huì)有瞬間的大電流沖擊,這往往是不允許的。
改進(jìn)一下,可以再加上個(gè)8550,進(jìn)行倒相,這就可以讓單片機(jī)用輸出低電平來(lái)驅(qū)動(dòng)負(fù)載。
上圖中倒相用的8550,也可以使用“光耦”器件,這樣一來(lái),又增加了電氣隔離的功能,這就是最完美的單片機(jī)輸出驅(qū)動(dòng)電路。電路見(jiàn)下圖。
圖中的4N25經(jīng)過(guò)實(shí)際測(cè)量,當(dāng)LED的電流大于等于4.5mA時(shí),輸出端的光電管即可為Q4提供足夠的基極電流。所以圖中的R3,可以使用810~1K的電阻。
==================================
上述的各個(gè)電路,都是以擴(kuò)充單片機(jī)的輸出電流為主題。其實(shí),很多數(shù)字IC的輸出端,都存在擴(kuò)充電流輸出能力的問(wèn)題,這里給出的電路,是普遍適用的。
這里介紹的8050/8550可以輸出1500mA的電流,如果要求更大的輸出電流,一種方法更換三極管,另外也可以使用專用大功率驅(qū)動(dòng)器件,如L298,固態(tài)繼電器,IGBT等等