基于用Arduino开发板电池电压监测方案
原标题:基于用Arduino开发板电池电压监测方案
电池有一定的电压限制,如果电压在充电或放电时超出规定的限制,电池的使用寿命就会受到影响或降低。每当我们在项目中使用电池供电时,有时我们需要检查电池的电压电量,确定是否需要充电或更换。本篇文章将帮助您如何使用Arduino开发板监测电池电压。该电池电压指示器可以指示电池状态,并且能够根据电池的不同电压在10段LED光柱上点亮LED。它还将一个LCD连接到Arduino开发板,并在LCD上显示电池电压。
所需的材料
●ArduinoUNO开发板
●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
constintrs=12,en=13,d4=A0,d5=A1,d6=A2,d7=A3;
LiquidCrystallcd(rs,en,d0,d1,d2,d3);
constintanalogPin=A4;
floatanalogValue;
floatinput_voltage;
以下数组用于将引脚分配给LED光柱显示器件。
intledPins[]={
2,3,4,5,6,7,8,9,10,11
};//anarrayofpinnumberstowhichLEDsareattached
intpinCount=10;//thenumberofpins(i.e.thelengthofthearray)
将LCD和模拟引脚(A0、A1、A2、A3)设置为OUTPUT引脚。
voidsetup()
{
Serial.begin(9600);//opensserialport,setsdatarateto9600bps
lcd.begin(16,2);////setuptheLCD'snumberofcolumnsandrows:
pinMode(A0,OUTPUT);
pinMode(A1,OUTPUT);
pinMode(A2,OUTPUT);
pinMode(A3,OUTPUT);
pinMode(A4,INPUT);
lcd.print("VoltageLevel");
}
这里,我们编写一个函数,以一种简单的方式使用LED光柱显示器件,您甚至也可以通过逐一编程来点亮LED,但代码会变得冗长。
voidLED_function(intstage)
{
for(intj=2;j<=11; j++)
{
digitalWrite(j,LOW);
}
for(inti=1,l=2;i<=stage; i++,l++)
{
digitalWrite(l,HIGH);
//delay(30);
}
}
在这一部分中,我们使用模拟引脚读取电压值。然后,我们使用模数转换公式将模拟值转换为数字电压值,并在LCD上进一步显示。
//Conversionformulaforvoltage
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);//whenthevoltageiszeroorlowthe1stLEDwillindicatebyblinking
}
elseif(input_voltage< 1.00 && input_voltage >=0.50)
{
LED_function(2);
}
elseif(input_voltage< 1.50 && input_voltage >=1.00)
{
LED_function(3);
}
elseif(input_voltage< 2.00 && input_voltage >=1.50)
{
LED_function(4);
}
elseif(input_voltage< 2.50 && input_voltage >=2.00)
{
LED_function(5);
}
elseif(input_voltage< 3.00 && input_voltage >=2.50)
{
LED_function(6);
}
elseif(input_voltage< 3.50 && input_voltage >=3.00)
{
LED_function(7);
}
elseif(input_voltage< 4.00 && input_voltage >=3.50)
{
LED_function(8);
}
elseif(input_voltage< 4.50 && input_voltage >=4.00)
{
LED_function(9);
}
elseif(input_voltage< 5.00 && input_voltage >=4.50)
{
LED_function(10);
}
}
电池电压指示器的工作
电池电压指示器只需读取Arduino的模拟引脚的值,并使用模数转换(ADC)公式将其转换为数字值即可。ArduinoUno的ADC具有10位分辨率(所以整数值从0-2^10=1024)。这意味着它将0到5伏的输入电压映射到0到1023之间的整数值。所以如果我们将输入模拟电压anlogValue乘以(5/1024),那么我们就可以得到输入电压的数字值。在这里,我们学习了如何在Arduino中使用ADC输入。然后使用该数字值相应地点亮LED光柱显示器件。
责任编辑:David
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。