0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >电源管理 > 基于用Arduino开发板电池电压监测方案

基于用Arduino开发板电池电压监测方案

来源: elecfans
2021-02-04
类别:电源管理
eye 10
文章创建人 拍明

原标题:基于用Arduino开发板电池电压监测方案

  电池有一定的电压限制,如果电压在充电或放电时超出规定的限制,电池的使用寿命就会受到影响或降低。每当我们在项目中使用电池供电时,有时我们需要检查电池的电压电量,确定是否需要充电或更换。本篇文章将帮助您如何使用Arduino开发板监测电池电压。该电池电压指示器可以指示电池状态,并且能够根据电池的不同电压在10段LED光柱上点亮LED。它还将一个LCD连接到Arduino开发板,并在LCD上显示电池电压。

  所需的材料

  ●ArduinoUNO开发板

  ●10段LED光柱显示器件

  ●LCD液晶显示模块(16*2)

  ●10K的电位器

  ●电阻(10个100ohm;330ohm)

  ●电池(将要被测试)

  ●连接导线

  ●适用于Arduino的12v适配器

  电路原理图

  

pIYBAF_5J8iAHecUAALHykgfMTM990.png


  使用Arduino和LED光柱显示器件的电池电压指示器电路图

  LED光柱显示

  LED光柱显示器件采用工业标准尺寸,并且功耗低。光柱根据发光强度进行分类。该产品本身仍然符合RoHS标准。它具有高达2.6V的正向电压。每段功耗为65mW。LED光柱显示的工作温度为-40℃至80℃。LED光柱显示器件有很多的应用,如音频设备、仪表板和数字读出显示器等。

  以下是LED光柱显示器件的引脚图:

  

pIYBAF_5J9SABPDwAABTf3-8T08708.png


  以下是LED光柱显示器件的引脚配置:

  

image.png


  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);

  }

  }

  电池电压指示器的工作

  

image.png


  电池电压指示器只需读取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)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案