电池有一定的电压限制,如果电压在充电或放电时超出规定的限制,电池的使用寿命就会受到影响或降低。每当我们在项目中使用电池供电时,有时我们需要检查电池的电压电量,确定是否需要充电或更换。本篇文章将帮助您如何使用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);
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)
将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.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 = 0.50)
{
led_function(2);
}
else if (input_voltage = 1.00)
{
led_function(3);
}
else if (input_voltage = 1.50)
{
led_function(4);
}
else if (input_voltage = 2.00)
{
led_function(5);
}
else if (input_voltage = 2.50)
{
led_function(6);
}
else if (input_voltage = 3.00)
{
led_function(7);
}
else if (input_voltage = 3.50)
{
led_function(8);
}
else if (input_voltage = 4.00)
{
led_function(9);
}
else if (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光柱显示器件。
如何通过人工智能改变音乐和人与世界之间的联系
如何做RAM和ROM完整性检查
茂捷M6362A替换昂宝OB2362A,茂捷M5579A/B替换昂宝OB2269
台湾旺玖BL8810完全替代GL823K|USB 2.0单LUN读卡器控制器
巨头争霸,量子计算性能甩最快超算一大截!
基于用Arduino开发板电池电压监测方案
后疫情时代,江波龙技术研发成就品质
魅族18系列首销1分钟销售额破亿
阿里云与易绘公司合作“管网数字孪生”技术,实时监测液位运行
手持式土壤重金属检测仪介绍
一款极具吸引力且经济高效的替代产品——单芯片雷达感知解决方案
拉绳开关有哪些应用领域
通话未来:悟空智能电话机器人 AI引领全新电话行业
BoseSoundSportFree耳机体验 各方面都很优秀的三好学生
为什么在SoC设计中有了CPU还需要DMA呢?
轨至轨DAC输出缓冲器LTC2655
Gemini和ChatGPT有什么不同,Gemini将超越ChatGPT?
四方光电瞄准新能源汽车气体传感器赛道
研究人员发明使用智能手机应用程序将手语翻译语音的智能手套
三极管:NPN和PNP有什么不同点