說(shuō)到上下拉電阻的作用,在課本中學(xué)習(xí)時(shí)經(jīng)常會(huì)看OD OC門、增強(qiáng)輸出驅(qū)動(dòng)能力、維持確定的高低電平狀態(tài)、抗外界干擾......
之前始終對(duì)維持確定的高低電平狀態(tài)沒有足夠深的理解,既然單片機(jī)自身是有輸出高低電平的能力,為什么還需要在外部上下拉,這不是浪費(fèi)能量嗎?
直到自己做項(xiàng)目遇到了奇奇怪怪的現(xiàn)象,并且最終解決了問題,才算是真正體會(huì)到了上下拉電阻的必要性。
原來(lái)的電路方案如上圖,左邊板卡中的MCU使用兩個(gè)通用IO口控制右邊的按鍵板,按鍵板控制機(jī)器的啟動(dòng)和關(guān)閉,其中用LED1和LED2兩種顏色的燈來(lái)指示機(jī)器開關(guān)機(jī)狀態(tài)。指示燈的要求是機(jī)器通電LED1亮,開機(jī)LED1滅LED2亮,關(guān)機(jī)LED1重新亮LED2滅。
非常簡(jiǎn)單的一個(gè)單片機(jī)控制方案,裝上機(jī)器之后卻出了問題:220V通電后1~2s的時(shí)間內(nèi)兩顆LED燈是同時(shí)點(diǎn)亮的,隨后LED2才滅。
一開始始終想不通,LED2程序都沒有給高電平,他怎么會(huì)亮。后來(lái)才想起來(lái),從單片機(jī)啟動(dòng)到程序運(yùn)行是有一段時(shí)間的,而這個(gè)時(shí)間IO口的狀態(tài)是默認(rèn)狀態(tài),查詢單片機(jī)手冊(cè),發(fā)現(xiàn)默認(rèn)狀態(tài)是有內(nèi)部上拉。內(nèi)部上拉電阻阻值是10k。
這么一來(lái),就說(shuō)得通了,設(shè)計(jì)右邊板卡的工程師三極管下拉電阻其實(shí)是為了管子的開關(guān)特性考慮,而左邊板卡又沒有加上下拉。右邊板卡的三極管基極下拉電阻是20k,單片機(jī)內(nèi)部上拉電阻為10k,3.3V的供電電源,三極管基極電壓就能達(dá)到2.2V,足夠?qū)⑷龢O管導(dǎo)通,因此就出現(xiàn)了兩顆LED都點(diǎn)亮的現(xiàn)象。
隨后把R1和R2的阻值都改為了1k,通電后發(fā)現(xiàn)再?zèng)]有LED同時(shí)點(diǎn)亮的情況。但是很不巧,又出現(xiàn)了一個(gè)問題,機(jī)器關(guān)機(jī)時(shí)需要LED1再次亮起,LED2滅掉,但狀態(tài)切換后LED1又出現(xiàn)了一個(gè)閃滅的現(xiàn)象。原來(lái)是單片機(jī)的程序中寫了機(jī)器關(guān)掉之后會(huì)有一個(gè)自身的復(fù)位,而單片機(jī)在復(fù)位的時(shí)候引腳也是默認(rèn)狀態(tài)!所以復(fù)位的時(shí)候本來(lái)是需要LED1常亮的,結(jié)果因?yàn)殡娮韪男×怂珠W滅。
當(dāng)然把R1又改回20k就能達(dá)到要求了。但這畢竟只是止血措施,否則項(xiàng)目改版的成本會(huì)增加不少,而且單片機(jī)引腳的上下拉本也不是右邊板卡的責(zé)任范圍。
如上圖電路應(yīng)該是本設(shè)計(jì)比較好的方案,經(jīng)過了這個(gè)電路的問題分析和改進(jìn),才算是深入理解了為什么上下拉電阻能夠維持IO口的穩(wěn)定狀態(tài)。現(xiàn)在,不論是單片機(jī)啟動(dòng)時(shí)IO口的默認(rèn)狀態(tài),還是復(fù)位時(shí)的重置,都不會(huì)對(duì)LED的狀態(tài)產(chǎn)生影響,因?yàn)樵趩纹瑱C(jī)狀態(tài)沒定時(shí)有上下拉電阻來(lái)給。而右邊板卡設(shè)計(jì)時(shí)使用的基極下拉電阻正常使用和選擇阻值也不會(huì)有影響。
-
led
+關(guān)注
關(guān)注
240文章
23134瀏覽量
658405 -
單片機(jī)
+關(guān)注
關(guān)注
6032文章
44514瀏覽量
632944 -
下拉電阻
+關(guān)注
關(guān)注
4文章
147瀏覽量
20496 -
IO口
+關(guān)注
關(guān)注
3文章
169瀏覽量
23994
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論