0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Arduino和LED条形图的电池电压指示器

科技观察员 来源:circuitdigest 作者:潘卡伊·卡特里 2022-11-18 16:43 次阅读

电池具有一定的电压限制,如果在充电或放电时电压超过规定的限制,电池的使用寿命会受到影响或缩短。每当我们使用电池供电的项目时,有时我们需要检查电池电压水平,是否需要充电或更换。该电路将帮助您监控电池的电压。此Arduino 电池电压指示器根据电池电压,通过在10 段 LED 条形图上发光 LED 来指示电池状态。它还在连接到Arduino的LCD上显示您的电池电压。

所需材料

Arduino UNO

10 段 LED 条形图

液晶屏 (16*2)

电位器-10k

电阻器 (100欧姆-10;330欧姆)

电池(待测试)

连接线

适用于 Arduino 的 12v 适配器

电路图

poYBAGN3RRKAPJ6TAAIPxYYJouE562.png

LED 条形图

LED 条形图采用工业标准尺寸,功耗低。条形按发光强度分类。产品本身仍符合 RoHS 标准。它具有高达 2.6v 的正向电压。每段功耗为65mW。LED 条形图的工作温度为 -40°C 至 80°C。LED条形图有许多应用,如音频设备,仪表板和数字读数显示。

引脚图

poYBAGN3RbGAAOtdAAAfvGDAtho958.png

Pin Configuration

poYBAGN3RbKAId9rAACK9RjJKWc883.png

用于电池电压监控的 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);
const int analogPin = A4;
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)
将液晶屏和模拟针脚(A0、A1、A2、A3)设置为输出针脚。

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条形图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);
}
}

电池电压指示器的工作原理

poYBAGN3RbWAQC6qAACtjWAMIZo756.jpg

电池电压指示器只需从Arduino模拟引脚读取值,并使用模数转换(ADC)公式将其转换为数字值。Arduino Uno ADC具有 10 位分辨率(因此整数值从 0 - 2^10 = 1024 个值)。这意味着它将 0 到 5 伏之间的输入电压映射到 0 到 1023 之间的整数值。因此,如果我们将输入 anlogValue 乘以 (5/1024),则得到输入电压的数字值。

#include


const int rs = 12, en = 13, d0 = A0, d1 = A1, d2 = A2, d3 = A3;

LiquidCrystal lcd(rs, en, d0, d1, d2, d3);

const int analogPin = A4;

float analogValue;

float input_voltage;



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)



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






}

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

}



}

void loop()

{

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


if (input_voltage < 0.50 && input_voltage >= 0.00 )

{

digitalWrite(2, HIGH);

delay (30);

digitalWrite(2, LOW);

delay (30);

}

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

}


}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    240

    文章

    23134

    浏览量

    658398
  • 指示器
    +关注

    关注

    0

    文章

    249

    浏览量

    38255
  • Arduino
    +关注

    关注

    187

    文章

    6464

    浏览量

    186636
收藏 人收藏

    评论

    相关推荐

    电池充电放电指示器电路

    电池充电,放电指示器电路
    发表于 03-21 09:25 1750次阅读
    <b class='flag-5'>电池</b>充电放电<b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    电池电平指示器电路

    电池电平指示器电路
    发表于 03-21 09:25 828次阅读
    <b class='flag-5'>电池</b>电平<b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    固态电池电压指示器电路

    固态电池电压指示器电路
    发表于 03-21 09:29 869次阅读
    固态<b class='flag-5'>电池</b><b class='flag-5'>电压</b><b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    可视电压指示器电路

    可视电压指示器电路
    发表于 04-01 08:44 974次阅读
    可视<b class='flag-5'>电压</b><b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    电池失效指示器电路

    电池失效指示器电路
    发表于 04-17 11:25 716次阅读
    <b class='flag-5'>电池</b>失效<b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    电池电压指示器电路

    电池电压指示器电路
    发表于 05-06 12:42 1163次阅读
    <b class='flag-5'>电池</b><b class='flag-5'>电压</b><b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    12V汽车电池电压指示器电路

    12V汽车电池电压指示器电路
    发表于 05-28 12:14 2054次阅读
    12V汽车<b class='flag-5'>电池</b><b class='flag-5'>电压</b><b class='flag-5'>指示器</b>电路<b class='flag-5'>图</b>

    电池电压指示器电路

    电池电压正常的情况下,发光二极管不亮。在电池电压下降时,发光二极管开始闪烁,直到电池电压低时它
    发表于 10-19 10:24 8942次阅读
    <b class='flag-5'>电池</b>低<b class='flag-5'>电压</b><b class='flag-5'>指示器</b>电路

    KN-1000B系列的指示器特点及型号说明

    KN-1000B系列的指示器的特点:通过16位ADC实现高精度显示、条形图有101个LED灯(绿色),可显示4位数字、多种功能:高/低峰值监测、传感断线报警输出、输入校正、数字输入(
    发表于 09-28 17:14 8次下载
    KN-1000B系列的<b class='flag-5'>指示器</b>特点及型号说明

    基于微控制8线I/O端口实现8段条形图LED显示设计

    带有数字显示的仪器设计也许会受益于一个提供显示参数的模拟版的副显示条形图显示提供了一种很容易解释的图形指示器,该
    的头像 发表于 07-29 09:13 3271次阅读
    基于微控制<b class='flag-5'>器</b>8线I/O端口实现8段<b class='flag-5'>条形图</b><b class='flag-5'>LED</b>显示设计

    msgeq7的条形图

    电子发烧友网站提供《msgeq7的条形图.zip》资料免费下载
    发表于 07-07 14:35 7次下载
    msgeq7的<b class='flag-5'>条形图</b>

    LED条形图的简单电压指示器

    电子发烧友网站提供《带LED条形图的简单电压指示器.zip》资料免费下载
    发表于 08-05 10:28 4次下载
    带<b class='flag-5'>LED</b><b class='flag-5'>条形图</b>的简单<b class='flag-5'>电压</b><b class='flag-5'>指示器</b>

    使用Arduino的OLED电池电量指示器

    电子发烧友网站提供《使用Arduino的OLED电池电量指示器.zip》资料免费下载
    发表于 10-31 11:03 1次下载
    使用<b class='flag-5'>Arduino</b>的OLED<b class='flag-5'>电池</b>电量<b class='flag-5'>指示器</b>

    LED条形图VU峰值计

    条形图LED峰值计。电源从9到20V。输入-35至+ 35V的音频。Trimpot将调整触发电平。
    发表于 01-05 16:00 0次下载

    LED条形图和键盘

    电子发烧友网站提供《LED条形图和键盘.zip》资料免费下载
    发表于 06-28 14:55 0次下载
    <b class='flag-5'>LED</b><b class='flag-5'>条形图</b>和键盘