前幾天發了一篇文章:
《巧用1個GPIO控制2個LED顯示4種狀態》(點擊閱讀)
同步發在公眾號「晶片之家」上,引起了大家的熱烈討論。當時沒有帶具體的實驗現象,有點小遺憾。
清華大學的卓老師看到之後,做了具體的實驗分析。不僅重點分析了串並聯兩種實現方式,還對串聯方式時兩個LED存在微亮的問題提出了解決方案。
文章講解得非常到位,有理有據,實在是「實踐出真知的典範」。
下面分享給大家,通過實驗看用1個GPIO控制2個LED顯示4種狀態的實驗現象,原文如下:
在下面的麵包板上,演示了使用一條IO控制線控制兩個LED分別點亮和熄滅的四種狀態。
▲ 一個個單片機IO埠分別控制兩個LED為了理解其中的工作原理,則需要熟悉LED的兩個工作特性:
正如發光二極體名字所說,LED只能向二極體那樣單向導電發光。如果施加電壓極性反了,LED則不工作。
導通閾值特性是指,只要施加的正向電壓超過一定閾值之後,LED才能夠導通。這一點可以從下面這支紅色LED的正向V-A特性曲線看出。
▲ 紅色LED的V-A特性上面曲線表明,只有當正向電壓超過大約1.6V之後,電流才會出現快速增加。在此之前,正嚮導通電流很小。
不同顏色的LED由於所使用的半導體材料不同,導通閾值電壓會有所區別。比如下面這支黃色LED的正嚮導通電壓超過了1.7V。
▲ 黃色LED的V-A曲線如果LED發射光譜中包括更短的光譜成分,則相應的導通閾值會更高。下面的綠色和藍色LED的正嚮導通電壓的閾值都已經超過了2.5V了。
▲ 綠色LEDV-A特性曲線將不同LED的V-A特性曲線繪製在一起,可以凸顯出不同LED的閾值電壓的差異。值得說明的是,當電壓小於閾值電壓的時候,LED並不是不導電,只是電流極小。比如在2.5V,雖然還沒有超過藍色LED的閾值電壓,但在LED燈芯處還是能夠隱約看到發光。
一旦電壓超過閾值電壓,LED正嚮導通電流便會迅速增加到1mA以上。之後雖然電流增加很快,但在導通電流2 ~ 10mA之內,LED都顯示為點亮狀態,亮度倒是看起來差不多。
▲ 不同顏色LED的伏安特性合理應用LED的單向導電和導通閾值特性,便可以在一條單片機IO口的四種工作狀態下,來控制兩個LED的點亮和熄滅了。
比如利用LED管的單向導通特性,將兩個LED正反向並聯在一起,分別連接在分壓電阻中心和單片機的IO口上,就可以實現單個IO口控制兩個LED的目標。在下圖中,顯示了在一個工作在5V電壓下的單片機IO控制兩個LED(紅色,黃色)的四種狀態。
▲ 兩個LED正反並聯連接在MCU的IO口與分壓電阻中點當IO口為高阻狀態,兩個LED都熄滅;當IO埠為高電平時,紅色LED點亮;當IO埠為低電平的時候,黃色LED點亮;當IO輸出方波信號時(通常要求頻率大於100Hz),兩個LED交替點亮,根據人眼色視覺暫留特性,看起來兩個LED都點亮了。
下面動圖顯示了IO口的四種狀態對應兩個LED的點亮與熄滅。
▲ 對應兩個LED四個狀態的IO輸出波形上面的LED並聯方案是利用了LED的單向導通特性。如果考慮到LED的閾值特性,這種方案就會受到一定限制。比如,控制的LED綠色或者藍色時,由於它們的導通閾值電壓超過了2.5V,因此綠色和藍色LED就很難被點亮。
下面動圖顯示,綠色和藍色LED只能發出微弱的光線。
▲ 對於兩個LED四種狀態的IO波形如果當單片機和LED的供電電壓為3.3V時,情況將會更加嚴重。比如在3.3V供電情況下,使用並聯LED方案,對於紅色的LED還可以勉強工作,但對於綠色和藍色LED則無法點亮了。
▲ 對於兩個LED四種狀態的IO波形在前面推文中則介紹了另外一種方案,即LED串聯方案,可以解決藍色和綠色LED閾值電壓高的問題。
下圖顯示了LED串聯方案電路示意圖:
▲ 兩個LED串聯控制方案當IO埠為高阻時,由於兩個LED的導通閾值電壓之和大於電源電壓(+5V),它們都不導通;當IO埠為低電平時;上面的綠色LED點亮;當IO埠為高電平時,下面的藍色LED點亮;當輸出高頻方波信號時,兩個LED都被點亮。
下面動圖顯示了麵包板上綠色和藍色串聯工作狀態下,並一條IO埠控制的情況:
串聯LED控制模式只能應用於兩個LED的電壓加起來超過電路電源電壓的情況。比如藍色、綠色LED,工作在3.3V,5V電壓下都是可以的。
如果將兩個LED更換成紅色(1.6V)和綠色(2.5V),使用串聯模式,則只能應用在電源電壓小於4.1V的情況下,比如3.3V的單片機電路中。如果在5V電路中,則會出現兩個LED無法同時熄滅的情況。
下面就顯示了一個紅色,一個綠色LED工作在5V電源電壓下,當IO為高阻時,它們實際上無法熄滅。
▲ 對應兩個LED四種狀態IO波形在5V電壓下,那麼對於紅色、綠色LED使用前面並聯LED方案行不行呢?
通過實驗會發現,也出現了問題。由於綠色LED在2.5V下無法點亮,因此並聯方案也無法工作。如下圖所示:
▲ 對應兩個LED四種狀態IO波形那麼問題來了,在5V電壓下,該使用什麼方案,才能夠利用單片機一個IO口的四種模式,來分別控制一個綠色LED和一個紅色LED的點亮和熄滅呢?就像下面這個動圖裡所示的那樣。
▲ 對於兩個LED四種狀態的IO波形如果你對並聯LED和串聯LED工作原理已經理解了,我想此時,你的腦子裡已經有了答案了。如果你有了想法,就將答案寫在後面的留言中吧。(答案就在上圖中)
對串聯方案的補充說明
使用另外一個二極體對串聯的兩個LED進行並聯,消除無法完全關閉的問題。
▲ 改進的方案▲ 在沒有旁濾二極體的時候,紅色、黃色LED無法截止▲ 有著旁濾的二極體是,紅色黃色LED可以有效截止了▲ 增加旁濾二極體的時候,可以有效解決無法截止的問題