介紹
模數轉換器 (ADC) 用於將模擬信號轉換為數字形式。ESP8266 有一個內置的 10 位 ADC,只有一個 ADC 通道,即它只有一個 ADC 輸入引腳來從外部設備讀取模擬電壓。
NodeMCU 套件上的 ESP8266 ADC 引腳
NodeMCU ADC 引腳
ESP8266 上的 ADC 通道與電池電壓復用。因此,我們可以將其設置為測量板載系統電壓或外部電壓。讀取外部電壓時,ADC 引腳的輸入電壓範圍為 0–1.0V。
ADC 模式的設置,即測量系統電壓還是外部電壓,在固件的“esp_init_data_default.bin”(0-127 字節)的第 107 字節中可用。
(0 - 127 字節)的第 107 個esp_init_data_default.bin
字節是“vdd33_const”。它必須設置為 0xFF 即 255 才能讀取系統電壓,即 ESP8266 的 VDD 引腳上的電壓。
並且要讀取 ADC 引腳上的外部電壓,必須將其設置為 ESP8266 的 VDD 引腳上的電源電壓。ESP8266 的工作電源電壓範圍在 1.8V 到 3.6V 之間,“vdd33_const”的單位是 0.1V,因此“vdd33_const”的取值範圍是 18 到 36。
有關“vdd33_const”的更多信息,請參閱本文檔末尾隨附的 ESP8266 數據表的 ADC 部分。
請注意,下圖所示的 NodeMCU 開發套件有一個板載寄存器分壓器網絡,可從 3.3V 向 ESP8266 的 ADC 引腳提供 1.0V 電壓。因此,我們可以為以下 NodeMCU 開發套件使用 0–3.3V 範圍的 ADC 輸入電壓。由於 ADC 具有 10 位分辨率,因此開發套件上的 ADC 輸入電壓 0-3.3V 將為 0-1023 值範圍。
NodeMCU ADC 功能
analogRead(A0)
該函數用於讀取施加在模塊 ADC 引腳上的外部電壓。
ESP.getVcc()
該函數用於讀取 NodeMCU 模塊 VCC 電壓。ADC 引腳必須保持懸空。
請注意,在讀取 VCC 電源電壓之前,應將 ADC 模式更改為讀取系統電壓。
要更改 ADC 模式ADC_MODE(mode)
,請在草圖的 #include 行之後使用。
模式是ADC_TOUT
(對於外部電壓),ADC_VCC
(對於系統電壓)。默認情況下,它讀取外部電壓。
例子
讓我們寫一個 Arduino 草圖來讀取 NodeMCU ADC 引腳上的模擬電壓。在這裡,我們使用電位器在開發套件的 ADC 引腳上提供 0-3.3V 的可變電壓。如下圖所示連接鍋。
用於讀取外部電壓的 Arduino Sketch
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("ADC Value: ");Serial.println(analogRead(A0));
delay(300);
}
輸出窗口
下圖顯示了 Arduino IDE 串行監視器上的輸出
用於讀取系統電壓的 Arduino Sketch
ADC_MODE(ADC_VCC);
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.print("System voltage(mV): ");Serial.println(ESP.getVcc());
delay(300);
}
輸出窗口
下圖顯示了 Arduino IDE 的串口監視器輸出
在這裡我們發現測量的值與實際值略有偏差。對於外部電壓,我們得到 0-3.3V 的 5-1007 ADC 值變化,應用於開發套件上的 ADC 引腳。對於系統電壓(模塊上的電壓),我們得到高達 2790 mV,即大約 2.8V。這顯示出與實際(即 3.3V)相比大約 0.5V 的差異。
ESP8266 Github 頁面上的#2672和#3168給出了外部電壓測量的問題。關於系統電壓讀數的問題在 ESP8266 Github 頁面的#721中給出。
根據 ESP8266 的數據表,通過 ADC 測量電源電壓時,TOUT(ESP8266 的 ADC 引腳)引腳必須懸空(懸空)。但是在 NodeMCU 開發套件/模塊上,它連接到電阻分壓器網絡(100Kohm 和 220Kohm),以支持外部電壓範圍(0-3.3V),如下圖所示。
現在,如果我們移除 n/w 電阻分壓器,並使 ADC 引腳 (TOUT) 懸空,那麼我們可以獲得更好的結果精度,如下面的系統電壓讀數輸出窗口圖像所示,接近 3.3V。
資料來源:https://www.electronicwings.com/nodemcu/nodemcu-adc-with-arduino-ide
沒有留言:
張貼留言