在一些使用Arduino製作的項目中,我們(men) 會(hui) 時常用到鋰電池組,為(wei) 了防止鋰電池過放電導致電池損壞,監測電壓是很有必要的。
鋰電池
關(guan) 於(yu) 鋰電池的知識可查閱:鋰電池的相關(guan) 知識 這篇文章。
Arduino監測電池電壓
使用Arduino監測電池電壓的方式有很多,比如聲音提醒、燈光提醒、欠電停止等等。本文介紹相對簡單的一種方式,燈光提醒。使用燈光監測電池電壓的思路是,通過一個(ge) Arduino的模擬輸入腳實時采集電池電壓,當采集的電壓低於(yu) 某一閾值時,燈光點亮,提示電池電壓低。
Arduino與電池的電路連接

Arduino監測電池電壓
上圖中,我們(men) 設定Arduino采集電池電壓的腳為(wei) A4,電路中使用兩(liang) 個(ge) 電阻,組成分壓電路,因為(wei) Arduino 隻能測量0-5V的電壓 。 A4的輸入電壓值采用以下公式計算:
Vout =(Vin×R2)/(R1 + R2) ,對應上圖R2為(wei) 1K,R1為(wei) 2K,計算A4值為(wei) 4V。
然後通過analogRead()函數采集 A4 的值,我們(men) 知道Arduino控製器有多個(ge) 10位數模轉換通道。這意味著Arduino可以將0-5V的電壓輸入信號映射到數值0-1023。換句話說,我們(men) 可以將5V信號等分成1024份,0伏特的輸入信號對應著數值0,而5伏特的輸入信號對應著1023。因此,當A4模擬輸入引腳的輸入電壓為(wei) 4V時,該引腳的數值為(wei) 819。(計算:4V / 5V = 0.8, 1024 X 0.8=819.2,實際讀取值應該在818~819之間)
要實現電壓監測,光使用 analogRead()函數讀取A4值還不夠,我們(men) 需要將這個(ge) 讀取值轉換為(wei) 實際電壓值,因此可以使用以下公式進行轉換:
電池電壓值 V = A4讀取值 * (5.00 / 1023.00) * 乘數
這個(ge) 乘數值可以使用上麵提供的方法在理論上計算,或者如果有一組已知的電壓值,您可以實際計算它。條件允許的情況下,最好采用遵循了後一種選擇,因為(wei) 它更準確。在本例中這個(ge) 乘數的值是2.9。
Arduino監測電池電壓代碼
#define ledB 10 int sensorValue = analogRead(A3); float voltage = sensorValue * (5.00 / 1023.00) * 2.9; Serial.println(voltage); if (voltage < 11) { digitalWrite(ledB, HIGH); } else { digitalWrite(ledB, LOW); }
通過以上代碼,當監測到的電池電壓低於(yu) 11V時,LED被點亮,否則LED常滅。以此實現簡單的電池電量監測,達到避免電池的過放電的目的。