Arduino UNO 具有多通道 10-bit 類比轉換數位功能(analog to digital converter 簡稱: ADC)。範圍介於 0 ~ 工作電壓 (5V 或是 3.3V),而 10 bit 意味著是解析度。和大部分的 ADC 功能晶片一樣,都會需要參考基準電壓。以 UNO 板來說,沒有特別指定就會以輸入電壓為準 (AVCC / 5V)。所以 每單位是 5V / 1024 = 0.0049V(4.9mV)。
既然運算時會用到 參考基準電壓 做為基礎,所以這個電壓值會影響到後面運算結果,例如: 5.1V 和 5.5V 的運算結果肯定會不一樣 。如果您對輸出精準度非常在意,就會需要使用 UNO 板上的 AREF 外接準確的電壓值做為參考電壓,例如: 完美的 5.0V 或是 完美的 3.3V。不過,這裡先敘述基本概念。往後如果有機會再做延伸。
做個簡單測試:
用一條導線連接 A0 與 3V3
程式碼:
const int analogPin = A0;
int value;
void setup() {
Serial.begin(9600);
}
void loop() {
value = analogRead(analogPin);
Serial.print("val:");
Serial.println(value);
delay(1000);
}
開啟 Tool / Serial Montior 看會出現甚麼數值
這個數值是原生數位資料,代表3.3V呈現出來的資料。那如果是接 5V 是多少數值?
(切記! 不要連接超過 5V以上的電壓)
如果要轉換成實質電壓,可以套這個公式:
5.0 * value/1023
所以,可以將上一個程式改成
const int analogPin = A0;
int value;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
value = analogRead(analogPin);
Serial.print("Value:");
Serial.println(value);
Serial.print("Voltage:");
Serial.print((5.0 * value)/1023);
Serial.println(" V");
Serial.println("");
delay(1000);
}
輸出顯示
量測電壓 可以在 電阻分壓電路 (Voltage Divider Calculator) 上可以做更多的應用,例如: NTC 感測器可以量測溫度,CDS 光敏電阻 可以量測光線明暗度,或是直接量測電池電壓.... 等。
原始碼連結: