電池有一定的電壓限制,如果電壓在充電或放電時超出規定的限制,電池的使用壽命就會受到影響或降低。每當我們在項目中使用電池供電時,有時我們需要檢查電池的電壓電量,確定是否需要充電或更換。本篇文章將幫助您如何使用Arduino開發板監測電池電壓。該電池電壓指示器可以指示電池狀態,并且能夠根據電池的不同電壓在10段LED光柱上點亮LED。它還將一個LCD連接到Arduino開發板,并在LCD上顯示電池電壓。
所需的材料
● Arduino UNO開發板
● 10段LED光柱顯示器件
● LCD液晶顯示模塊(16 * 2)
● 10K的電位器
● 電阻(10個100ohm; 330ohm)
● 電池(將要被測試)
● 連接導線
● 適用于Arduino的12v適配器
電路原理圖

使用Arduino和LED光柱顯示器件的電池電壓指示器電路圖
LED光柱顯示
LED光柱顯示器件采用工業標準尺寸,并且功耗低。光柱根據發光強度進行分類。該產品本身仍然符合RoHS標準。它具有高達2.6V的正向電壓。每段功耗為65mW。 LED光柱顯示的工作溫度為-40℃至80℃。LED光柱顯示器件有很多的應用,如音頻設備、儀表板和數字讀出顯示器等。
以下是LED光柱顯示器件的引腳圖:

以下是LED光柱顯示器件的引腳配置:

Arduino電池電壓監測程序
在本文的末尾處給出了完整的Arduino代碼。這里我們簡單解釋代碼的一些重要部分。
在這里,我們定義LCD庫并指定用于Arduino的LCD引腳。模擬輸入取自A4引腳,用于檢查電池電壓。我們將該值設置為Float,以使電壓達到兩位小數。
#include
const int rs = 12, en = 13, d4 = A0, d5 = A1, d6 = A2, d7 = A3;
LiquidCrystal lcd(rs, en, d0, d1, d2, d3);
float analogValue;
float input_voltage;
以下數組用于將引腳分配給LED光柱顯示器件。
int ledPins[] = {
2, 3, 4, 5, 6, 7, 8, 9, 10, 11
}; // an array of pin numbers to which LEDs are attached
int pinCount = 10; // the number of pins (i.e. the length of the array)
將LCD和模擬引腳(A0、A1、A2、A3)設置為OUTPUT引腳。
void setup()
{
Serial.begin(9600); //opens serial port, sets data rate to 9600 bps
lcd.begin(16, 2); //// set up the LCD's number of columns and rows:
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,INPUT);
lcd.print("Voltage Level");
}
這里,我們編寫一個函數,以一種簡單的方式使用LED光柱顯示器件,您甚至也可以通過逐一編程來點亮LED,但代碼會變得冗長。
void LED_function(int stage)
{
for (int j=2; j<=11; j++)
{
digitalWrite(j,LOW);
}
for (int i=1, l=2; i<=stage; i++,l++)
{
digitalWrite(l,HIGH);
//delay(30);
}
}
在這一部分中,我們使用模擬引腳讀取電壓值。然后,我們使用模數轉換公式將模擬值轉換為數字電壓值,并在LCD上進一步顯示。
//Conversion formula for voltage
analogValue = analogRead (A4);
Serial.println(analogValue);
delay (1000);
input_voltage = (analogValue * 5.0) / 1024.0;
lcd.setCursor(0, 1);
lcd.print("Voltage= ");
lcd.print(input_voltage);
Serial.println(input_voltage);
delay(100);
根據輸入電壓的值,我們給出了一些條件來控制LED光柱顯示器件。您可以在代碼中查看以下條件:
if (input_voltage < 0.50 && input_voltage >= 0.00 )
{
digitalWrite(2, HIGH);
delay (30);
digitalWrite(2, LOW);
delay (30); // when the voltage is zero or low the 1st LED will indicate by blinking
}
else if (input_voltage < 1.00 && input_voltage >= 0.50)
{
LED_function(2);
}
else if (input_voltage < 1.50 && input_voltage >= 1.00)
{
LED_function(3);
}
else if (input_voltage < 2.00 && input_voltage >= 1.50)
{
LED_function(4);
}
else if (input_voltage < 2.50 && input_voltage >= 2.00)
{
LED_function(5);
}
else if (input_voltage < 3.00 && input_voltage >= 2.50)
{
LED_function(6);
}
else if (input_voltage < 3.50 && input_voltage >= 3.00)
{
LED_function(7);
}
else if (input_voltage < 4.00 && input_voltage >= 3.50)
{
LED_function(8);
}
else if (input_voltage < 4.50 && input_voltage >= 4.00)
{
LED_function(9);
}
else if (input_voltage < 5.00 && input_voltage >= 4.50)
{
LED_function(10);
}
}
電池電壓指示器的工作
電池電壓指示器只需讀取Arduino的模擬引腳的值,并使用模數轉換(ADC)公式將其轉換為數字值即可。 Arduino Uno的ADC具有10位分辨率(所以整數值從0 - 2 ^ 10 = 1024)。 這意味著它將0到5伏的輸入電壓映射到0到1023之間的整數值。所以如果我們將輸入模擬電壓anlogValue乘以(5/1024),那么我們就可以得到輸入電壓的數字值。 在這里,我們學習了如何在Arduino中使用ADC輸入。 然后使用該數字值相應地點亮LED光柱顯示器件。
編輯:hfy
-
lcd
+關注
關注
36文章
4616瀏覽量
177261 -
液晶顯示
+關注
關注
6文章
604瀏覽量
41565 -
電池電壓
+關注
關注
0文章
215瀏覽量
12289 -
Arduino
+關注
關注
190文章
6526瀏覽量
196950
發布評論請先 登錄
MCU 開發板大比拼:STM32、ESP32、Arduino、樹莓派誰更強?
STM32 Nucleo-144開發板技術解析與應用指南
?STM32 Nucleo-64開發板技術解析與應用指南
【干貨分享】在 RA-Eco-RA6M4開發板上實現 ADC 電壓的 LabVIEW 數據采集
如何用Arduino Nano/UNO R3開發板給另一個Arduino IDE不能下載的Arduino Nano/UNO R3開發板重新燒錄引導程序bootlaoder
如何選擇合適的芯科科技Wi-Fi開發板
基于米爾全志T536開發板的多協議物聯網關的方案測試
有ARM,NPU,FPGA三種核心的開發板 — 米爾安路飛龍派開發板
【新品】遠距離圖傳數傳模塊開發板、藍牙模塊開發板、無線模塊開發板
【免費試用】開發板評測大賽開啟!OH 、RISC-V、Rockchip頂級開發板等你試用~
基于米爾全志T536開發板的視頻識別應用方案
如何在米爾-STM32MP257開發板上實現環境監測系統
OpenCV行人檢測應用方案--基于米爾全志T527開發板
基于用Arduino開發板電池電壓監測方案
評論