【Arduino學習筆記06】上拉電阻和下拉電阻

爲何要用上拉電阻和下拉電阻?——避免輸入引腳處於「懸空」狀態

下圖是一個沒有使用上拉電阻/下拉電阻的電路圖:ui

 

在按鍵沒有按下時,要讀取的輸入引腳沒有鏈接到任何東西,這種狀態就稱爲「懸空」spa

因爲附近引腳的電氣噪聲,從處於「懸空」狀態的輸入引腳讀取到的數值會在高電平和低電平之間來回波動,獲得一個不肯定的值。3d

 

若是用串口監視器將 在沒有使用上拉/下拉電阻的狀況下 從一個數字引腳讀取的輸入打印出來,會獲得圖示的結果:code

能夠看到此時讀取到的輸入並非一個肯定的值。blog

 

若是換成從模擬引腳讀取輸入能夠更明顯地看到輸入電壓值的波動狀況:class

 

 只有輸入時要考慮上拉電阻和下拉電阻的問題,輸出時不用考慮。原理

 

上拉電阻

上拉電阻:將輸入引腳經過一個10kΩ的電阻上拉到電源上im

 

電路原理圖:db

 

  • 開關斷開:輸入引腳經過一個10kΩ的電阻鏈接到VCC,引腳讀到的是邏輯高電平
  • 開關閉合:輸入引腳被短路,VCC直接鏈接到地,引腳讀到的是邏輯低電平

 

在串口監視器中打印出的結果爲:img

 

使用Arduino I/O口內部上拉功能:

ATmega328P 每一個I/O端口都內置了20kΩ上拉電阻(包括數字引腳和模擬輸入引腳)(注意:沒有內置下拉電阻)。

 

電路鏈接:

將按鈕的一端接到GND,另外一端接到輸入引腳(這裏是D2),如圖所示:

 

 代碼:

void setup{
    ...
    pinMode(2,INPUT_PULLUP);
    ...
}

 

下拉電阻

下拉電阻:將輸入引腳經過一個10kΩ的電阻下拉到地

 

電路原理圖:

 

  • 開關斷開:輸入引腳經過一個10kΩ的電阻鏈接到地,引腳讀到的是邏輯低電平
  • 開關閉合:輸入引腳直接鏈接到電源,引腳讀到的是邏輯高電平
相關文章
相關標籤/搜索