題:
GPIO:為什麼將按鈕接地而不是+ 3.3v?
howard10
2013-09-09 20:56:07 UTC
view on stackexchange narkive permalink

在大多數示例中,我都看到了將按鈕連接到GPIO輸入的過程,該按鈕已佈線,因此當閉合時,該引腳和地之間會形成電路,從而在該引腳上產生低電平輸入。上拉電阻用於將輸入值默認設置為高。然後,按下按鈕時,Pi上的代碼可以檢測到低電平。

我一直在將按鈕連接到+ 3.3v,因此信號很高,因為這似乎更有意義,並且可以使代碼保持邏輯性,但是大多數人肯定有理由偏愛接地。有什麼優勢?

注意:當我說“上拉電阻器”時,我指的是物理外部電阻器或內部上拉電阻器,已通過代碼配置。
六 答案:
Piotr Kula
2013-09-09 21:25:59 UTC
view on stackexchange narkive permalink

之所以偏愛將按鈕和邏輯連接到GND(然後在互聯網上進行複制)的主要原因之一是由於功率優化。

  • 將帶有電阻的LOW引腳拉至GND成本為0瓦。
  • 將帶有電阻的高電平引腳拉至+ Vcc會消耗功率。

在復雜的電路或依賴電池的電路上,此功率非常寶貴。

其他原因包括EMF生成較低。在無線設備上,將邏輯電平拉高會在極其敏感的RF接收器上引起不必要的串擾。在此類收發器上,有一個用於過濾噪聲的GND平面,這是所有邏輯都下拉到的地方。然後,處理器使用GND平面來過濾開關噪聲。

用電阻上拉或下拉會消耗多少功率?電流流向Pi上的一個非常高的阻抗輸入,這將把任何電流減小到亞微安培,即功率的微瓦。
好的,但是請告訴我我是否錯。拉一個引腳,這是`0v = 0watts的用法,但是拉一個引腳,它是>> 0watts的信號-任何種類,微,毫,毫微,都沒有關係。如前所述,電池電量每納瓦都會有所幫助。但是,正如已經在這裡回答的那樣……在USB上它什麼也沒有。我錯了嗎?
不一定是真的。數字輸入對地的阻抗很高-是。但是它們不僅僅是電阻。它們是通常用於FET的輸入門,並且這些門是不理想的。它們具有洩漏電流,並且這些洩漏電流可以沿任一方向進入或流出。因此,您的下拉電阻很可能消耗一瓦或兩個微瓦,與上拉電阻一樣多。
如果您必須設計一個使用2AA電池運行的嵌入式設備,並且客戶要求它至少運行12個月。而且您必須下拉/上GPIO。您將使用哪一種來節省最多的電量。 (我們在這裡談論微觀管理)
不會有什麼不同。由於洩漏電流可以在任一方向上流動(並且很可能會流動),因此您在CMOS系統中選擇上拉或下拉時不會做對或錯。 “ http://www.ti.com/lit/an/szza036b/szza036b.pdf”在靜態直流狀態下,aCMOS輸入僅吸收或提供少量的洩漏電流(幾微安)。水槽或水源-可以是水槽。我之所以提出這一點,僅是因為我相信您的答案具有誤導性-以下@AdamDavis'答案更為正確。
我認為我的回答不會完全引起誤解,也許就像亞當所做的那樣缺乏擴展性。我承認我可能在電池方面有很多關注,但是根據經驗,我相信我寫的東西比誤導更真實。但是我不是電氣工程師,而是一名實用的黑客。
電源端肯定是不正確的-亞當的回答解釋說,這通常是歷史性的,並且在其上接地的拖曳電線(就潛在的設備損壞而言)比在其上施加任何電壓的電線更為安全。我是一位電子工程師,在您所談到的“必須運行一年”的場景中具有豐富的經驗。我向您保證,我並不想炫耀或貶低您(顯然,您在許多主題上都有大量的知識)-但是,拉高或拉低具有功耗的含義是不正確的。
我不得不像這樣設計一個低功耗設備。我只需要得出結論,就是在製造具有各種配置的各種原型時進行的測試。讓事情停下來為我節省了力量。我不知道這可能是特定於一種IC的,也許是環境的。我現在無法更改答案。您似乎知道堆棧交換,而且我學會了不親自投票,特別是如果有專業意見的時候。 :)
太酷了-這種討論足以滿足好奇心。很高興您能真誠地接受它-我是該網站的新手,但熱衷於此,因為它在共享和學習之間提供了很好的平衡。非常有興趣的是下拉電阻會降低您的功耗-但這是另一回事。
對於它的價值,我對此進行了一些測量-並且下拉式取勝(針對功耗)僅是公正的。 10k上拉至3.3V = 9fW(是飛瓦)-10k上拉至地面= 5fW。當然,這甚至沒有節省一些電池電量。
我所做的任何事情都可能以某種其他方式對內部電路產生影響,也許還有其他影響。但是是的..這些數字通常不會幫助您計算,因為電池自行放電的速度將比節省電量的速度更快:)這對我來說是一個奇怪的情況,因為它獲得了很多支持並被接受....和但是您只是證明了這一點,並且我尊重您的測試,因為它不能像亞當·戴維斯·戴維(Adam Davis)那樣正確地回答問題。
Adam Davis
2013-09-09 23:20:13 UTC
view on stackexchange narkive permalink

電氣工程師通常使用電阻將輸入拉高並使用開關將其接地,這有很多複雜的歷史原因。

但是這些原因與Raspberry Pi的業餘愛好並不特別相關。

如果要生產商用產品,或者希望您的設計稍好一些,出於以下實際原因,您將選擇帶接地開關的上拉電阻:

p>
  • 長的接地線比連接到電源的電線具有更低的EMI / EMC輻射風險
  • 接地線,找到要連接的接地點比電源線更容易
  • 如果通常與電路相距一定距離的開關或佈線受損,並且使電線或內部開關部件與外殼或用戶短路,則不會造成傷害-全部接地!
  • li>
Milliways
2013-09-10 10:10:17 UTC
view on stackexchange narkive permalink

嚴格不需要上拉電阻,BMC GPIO具有內部上拉電阻,儘管沒有害處,但當將其編程為輸入時會激活這些上拉電阻。

將GPIO引腳直接連接到3V3或GND。 GPIO是雙向的,如果將其編程為輸入,則不會造成任何問題。另一方面,如果將其編程為輸出會導致消耗過多的電流。

好的(安全)設計將使用與按鈕串聯的串聯電阻(1kΩ)來限制電流。出於亞當·戴維斯(Adam Davis)的原因,最好將按鈕接地,並在GPIO引腳附近放置保護電阻。

唯一的問題是,在引導階段1-3期間,這些引腳處於浮動狀態(GPU到CPU的切換),然後在Linux內核引導期間的階段4上,這些PIN設置為正確的狀態。這可能導致門等待邏輯的嚴重問題。因此,建議還是將它們拉低,以免啟動期間的浮動時間使您的電路陷入混亂!
John La Rooy
2013-09-09 21:03:14 UTC
view on stackexchange narkive permalink

我認為在RPi上沒有理由比另一種偏愛。大多數人可能只是在復製或移植他們在其他地方看到的電路。

在連接電路(使用電線或PCB)時,最好選擇較方便的那個並將其翻譯成您所希望的正確含義。軟件。

Peter Green
2015-11-19 09:46:26 UTC
view on stackexchange narkive permalink

在TTL的舊時代,拉低引腳的電流要比拉高引腳的電流大得多。因此,上拉電阻器可能比下拉電阻器具有更高的電阻(從而減少了功耗)。現代CMOS無關緊要,但是舊習慣會死掉。

tavis
2014-08-07 23:45:29 UTC
view on stackexchange narkive permalink

使用內部上拉電阻將引腳接地,意味著您使用的部件更少。您只需要一個按鈕;不需要外部電阻來限制電流。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...