首先,讓我們考慮雙路(單刀雙擲)開關的情況:
當開關接通時,微控制器輸入將連接到+3.3V,意味著高電平。當開關關閉時,微控制器輸入將連接到0V,表示低電平。但是如果我們只有一個按鈕呢?
當按下按鈕時,微控制器輸入將連接到0V,表示低電平。然而,當按鈕未被按下時,微控制器輸入實際上沒有連接到任何東西:
這就好像什么都沒有連接一樣:
這種情況下的輸入電平是多少?高還是低?因為它沒有真正連接到任何東西,所以輸入可以是任何東西,這取決于環境中的靜電或電磁輻射。它可能只是接收無線電波(像天線一樣),然后在弱定義的高和低狀態之間來回轉換。微控制器輸入沒有明確定義,可以是任意值(隨機)的這種狀態稱為浮動。
上拉和下拉電阻
為了解決這個問題,需要在輸入端增加一個上拉電阻或下拉電阻(上拉電阻如下圖所示):
當按鈕未按下時,上拉電阻會將微控制器輸入拉高至+3.3V,提供一個明確定義的高電平。當按下按鈕時,微控制器輸入將直接連接(短路)到地(0V),提供明確定義的低電平。在這種情況下,會有一些電流流過上拉電阻,但由于電阻值相對較高,所以電流量很小。
您可能會注意到,電阻符號看起來像一個小彈簧,這正是它在本例中的作用。我們都使用過自動關閉的門,比如公共設施中常見的門——除非你主動把門打開,否則會有一個機制將它再次關閉。如果沒有自動關閉機制(現在想象門沒有閂鎖機制),門會被風吹動或被進出的人移動,它不會默認到任何特定的位置。上拉(或下拉)電阻類似于這些門上的自動關閉機制,它在不被主動驅動時將輸入保持在特定電平。因此,上拉電阻就像自動關閉的門上的彈簧——除非有足夠強壯的人過來把門推開,否則門將默認處于關閉位置。
顯然,情況可以反過來,按鈕可以連接到+3.3V(高電平),而下拉電阻可以用來保持輸入為低電平,否則:
然而,上拉電阻配置更常用。
開漏輸出
一些微控制器輸出可以設置為開漏(或者只能設置為開漏)。開漏輸出只能被驅動為低電平,而不能被驅動為高電平;輸出為低電平或浮動。實質上,輸出只是簡單地連接到晶體管的漏極引腳(因此稱為開漏)。
當控制線被驅動為高電平時,晶體管將輸出短路至地(0V),將其拉低。當控制線被驅動為低電平時,晶體管為高阻態,輸出懸空。
一些通信方案,例如I2C和CAN,使用這種布置來允許多個設備通過相同的通信線路進行通信,而沒有短路的可能性(沖突,其中一個設備試圖將線路驅動為高,而另一個設備試圖將線路驅動為低);這種情況下,上拉電阻用于在線路未被有效拉低時保持高電平。
審核編輯:黃飛
-
微控制器
+關注
關注
48文章
7658瀏覽量
152183 -
電阻
+關注
關注
86文章
5563瀏覽量
172799 -
上拉電阻
+關注
關注
5文章
363瀏覽量
30742 -
下拉電阻
+關注
關注
4文章
147瀏覽量
20595 -
晶體管
+關注
關注
77文章
9778瀏覽量
138972
發布評論請先 登錄
相關推薦
評論