一、關于LED燈與單片機的連接
上節的圖中,LED與電阻串聯,LED燈負極接到單片機IO,電阻另一引腳接VCC,編程后通過proteus仿真,可以得到想要的結果,沒毛病?
但是,why? 有沒有其他的連接方式,LED燈正極接單片機IO,負極串聯電阻到GND,這樣貌似也可以,可是實際應用中,這種方式得出的結果是:“靠!不靈” ,這里就引入新的問題——單片機的驅動能力!
這我想應該很好理解,人的忍耐度有限,何況是這小小的單片機?
請看下圖的兩種連接方式
第(1)種方式,單片機IO輸出低電平時,LED燈亮,電流方形如圖中的紅色箭頭;
第(2)種方式,理想狀態下是單片機輸出高電平,點亮LED,電流方向如圖箭頭,可是理想雖豐滿,現實很骨感,對于8051單片機,這種方式或許點不亮LED燈,這里就引入了此文要描述的問題——單片機IO驅動能力!
二、驅動能力比了解的兩個概念——灌電流和拉電流
1、灌電流:圖中第(1)個連接方式中,單片機輸出低電平時,電流方向由外部進入單片機,稱為灌電流,電流由外部電源提供。
2、拉電流:圖中第(2)個連接方式中,單片機輸出高電平時,電流方向由單片機輸出到外部,稱為拉電流,電流由單片機提供,我理解為“外部元件從單片機取電”。
了解這兩個概念后,很有必要先來了解單片機IO口的內部結構,以80C51單片機P1口為例,如圖:
姑且先關心圖中的T和上拉電阻,為了更好理解,將T簡化為開關來描述,如下圖
(1)單片機輸出0時,T閉合連接到GND,這時IO相當于接GND。
(2)單片機輸出1時,T斷開,這時VCC通過電阻R連接到IO。
于是前面的兩種連接方式簡化為下圖
A、第(1)圖為灌電流連接方式,T閉合時形成直流通路,LED滿足電流的要求,LED燈亮,電流方向如圖標識,I = VCC -Vled / R1 。
B、第(2)圖為拉電流連接方式,T斷開時,R、R2和D2串聯,形成直流通路,I = VCC - Vled / R+R2 , R是單片機內部上拉電阻,阻值幾百上千K,顯而易見地,電流I就很小很小了,達不到點亮LED燈。
分析至此,也可能只是一廂情愿,靈不靈得看看關鍵的東西,datasheet,萬惡的英文,如圖:
(1)單片機輸入低電平時,允許外部最大灌入電流15mA
(2)單片機8位端口同時輸出低電平時,最大電流之和為 26mA
(3)所有IO同時輸出低電平時,最大電流之和為71mA
可見,灌電流方式可接幾個LED燈,就可以計算了,而單片機輸出高電平時,如下圖
什么 鬼,幾乎沒驅動能力,可見單片機內部上拉電阻得多大?
綜上,建議設計電路時,先看datasheet,計算過驅動能力后,再去畫電路圖,再去編程,再去調試,問題應該不大了。
三、或許這是一種正確的LED燈連接方式
單片機驅動一兩個LED燈可以勝任,當需要驅動多個時,必須外部加驅動,以提供外部電流需要的電流,常用的方式是外部電路加驅動芯片,74HC373,非門,三態門,BJT等均可,下面舉例用三極管驅動LED燈的電路,如圖。
單片機只控制三級管的通斷,不需要提供驅動電流,輸出高電平時三極管導通,形成直流通路,LED燈點亮;單片機輸出低電平時,三極管截止,可理解為斷路,LED滅。這樣接多個LED,也沒問題了。
然而,掙一份工資可沒那么容易,小編是一枚從事醫療器械行業的苦逼工程師,近幾年國家對產品注冊進行了強制性,十分嚴格地控制,其中一道坎——EMC。
上圖中的方式應用在產品中,系統上電時,LED燈閃了一下,這這…… 這可不是做實驗,產品絕對不允許這種現象。究其原因,在上電瞬間,單片機IO輸出不可能立即達到程序中初始化的值,另外電源的沖擊,PCB板上其他信號的干擾等,引起三極管瞬間導通一下,LED燈就閃了一下;另外,對系統打ESD或EFT時,LED燈也被干亮了,結果是——不合格,最后更改如下圖,解決問題
加入電容C,吸收尖峰電壓,PASS……
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“機電號”用戶上傳并發布,本平臺僅提供信息存儲服務
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of JDZJ Hao, which is a social media platform and only provides information storage services.
