在一些使用Arduino制作的項(xiàng)目中,我們會(huì)時(shí)常用到鋰電池組,為了防止鋰電池過放電導(dǎo)致電池?fù)p壞,監(jiān)測電壓是很有必要的。
鋰電池
關(guān)于鋰電池的知識(shí)可查閱:鋰電池的相關(guān)知識(shí) 這篇文章。
Arduino監(jiān)測電池電壓
使用Arduino監(jiān)測電池電壓的方式有很多,比如聲音提醒、燈光提醒、欠電停止等等。本文介紹相對簡單的一種方式,燈光提醒。使用燈光監(jiān)測電池電壓的思路是,通過一個(gè)Arduino的模擬輸入腳實(shí)時(shí)采集電池電壓,當(dāng)采集的電壓低于某一閾值時(shí),燈光點(diǎn)亮,提示電池電壓低。
Arduino與電池的電路連接

Arduino監(jiān)測電池電壓
上圖中,我們設(shè)定Arduino采集電池電壓的腳為A4,電路中使用兩個(gè)電阻,組成分壓電路,因?yàn)锳rduino 只能測量0-5V的電壓 。 A4的輸入電壓值采用以下公式計(jì)算:
Vout =(Vin×R2)/(R1 + R2) ,對應(yīng)上圖R2為1K,R1為2K,計(jì)算A4值為4V。
然后通過analogRead()函數(shù)采集 A4 的值,我們知道Arduino控制器有多個(gè)10位數(shù)模轉(zhuǎn)換通道。這意味著Arduino可以將0-5V的電壓輸入信號(hào)映射到數(shù)值0-1023。換句話說,我們可以將5V信號(hào)等分成1024份,0伏特的輸入信號(hào)對應(yīng)著數(shù)值0,而5伏特的輸入信號(hào)對應(yīng)著1023。因此,當(dāng)A4模擬輸入引腳的輸入電壓為4V時(shí),該引腳的數(shù)值為819。(計(jì)算:4V / 5V = 0.8, 1024 X 0.8=819.2,實(shí)際讀取值應(yīng)該在818~819之間)
要實(shí)現(xiàn)電壓監(jiān)測,光使用 analogRead()函數(shù)讀取A4值還不夠,我們需要將這個(gè)讀取值轉(zhuǎn)換為實(shí)際電壓值,因此可以使用以下公式進(jìn)行轉(zhuǎn)換:
電池電壓值 V = A4讀取值 * (5.00 / 1023.00) * 乘數(shù)
這個(gè)乘數(shù)值可以使用上面提供的方法在理論上計(jì)算,或者如果有一組已知的電壓值,您可以實(shí)際計(jì)算它。條件允許的情況下,最好采用遵循了后一種選擇,因?yàn)樗鼫?zhǔn)確。在本例中這個(gè)乘數(shù)的值是2.9。
Arduino監(jiān)測電池電壓代碼
#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); }
通過以上代碼,當(dāng)監(jiān)測到的電池電壓低于11V時(shí),LED被點(diǎn)亮,否則LED常滅。以此實(shí)現(xiàn)簡單的電池電量監(jiān)測,達(dá)到避免電池的過放電的目的。