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

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

3天内不再提示

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

电子设计 来源:一板网 作者:风筝 2021-01-09 11:51 次阅读

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

所需的材料

● Arduino UNO开发板

● 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光柱显示器件的引脚配置:

pIYBAF_5J-GACTzPAAD-VgCUaPc293.png


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.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
    lcd
    +关注

    关注

    34

    文章

    4278

    浏览量

    164097
  • 液晶显示
    +关注

    关注

    6

    文章

    574

    浏览量

    39880
  • 电池电压
    +关注

    关注

    0

    文章

    161

    浏览量

    11395
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184832
收藏 人收藏

    评论

    相关推荐

    如何用Arduino开发STM32G070?

    如何用Arduino开发STM32G070,各位大神有相关教程吗。我如何在Arduino开发板管理器中添加STM32G070开发板,如何把
    发表于 04-07 08:22

    Arduino IDE打开开发板管理器搜索Arduino SAM的开发板不能找到怎么解决?

    Arduino IDE打开开发板管理器搜索Arduino SAM的开发板不能找到怎么解决 可能被墙 也没有其他源可以替换 或者手动安装这个开发板
    发表于 11-10 08:29

    arduino开发板12v输入可以吗?

    arduino开发板12v输入可以吗,开发板5v输出端可能哟300mA的电流,请问板子上的1117能承受那么大的功率吗
    发表于 11-08 07:51

    声控遥控汽车需要什么Arduino开发板

    声控遥控汽车需要什么Arduino开发板
    发表于 11-01 06:21

    #fpga开发板 Lattic-mipi开发板

    FPGA开发板
    明德扬科技
    发布于 :2023年10月25日 18:01:23

    arduino哪个开发板可以做图像识别?

    arduino哪个开发板可以做图像识别
    发表于 09-22 06:49

    合宙Air001开发板——支持Arduino开发,国产MCU新热潮

    包装炸裂、价格便宜、支持Arduino开发——点燃国产MCU新热潮的合宙Air001,开发板补货终于到了!!!合宙Air001开发板、芯片、DAPLink,多样超值套餐可选,08月31
    的头像 发表于 08-01 00:12 3236次阅读
    合宙Air001<b class='flag-5'>开发板</b>——支持<b class='flag-5'>Arduino</b><b class='flag-5'>开发</b>,国产MCU新热潮

    【FireBeetle 2 ESP32-S3开发板体验】001:开箱+搭建Arduino开发环境

    本次试用中选比较突然,试用小哥通知我发货时,我已经安排出差计划。原本担心在我出差后到货没人接收,最终在我出门前1小时开发套件送到手里,这里感谢一下顺丰快递。下图就是开发板硬件。图1、开发套件 本
    发表于 07-29 22:22

    【FireBeetle 2 ESP32-S3开发板测评】Arduino IDE快速开发体验

    【FireBeetle 2 ESP32-S3开发板测评】Arduino IDE快速开发体验
    的头像 发表于 07-23 09:03 1637次阅读
    【FireBeetle 2  ESP32-S3<b class='flag-5'>开发板</b>测评】<b class='flag-5'>Arduino</b> IDE快速<b class='flag-5'>开发</b>体验

    【IoT毕设】机智云物联网平台+arduino开发板+呼吸检测系统

    ,则称为逆压电效应。 2 系统设计 本设计利用压电薄膜传感器采集人体呼吸信号,经过电荷放大模块以及Arduino开发板,将最终得到的电压值显示在LCD屏上;并通过LabVIEW显示波形变化,可以完成
    发表于 06-26 18:55

    Arduino开发板,制作一个简易的修正弦波逆变器

    Arduino开发板
    YS YYDS
    发布于 :2023年06月25日 00:04:27

    这么漂亮的Arduino开发板你见过吗?

    摘要:找到几块基于Arduino UNO形状的开发板,一起来欣赏下。
    的头像 发表于 06-06 09:52 1120次阅读
    这么漂亮的<b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>你见过吗?

    求激光雕刻机Arduino IDE开发板源码

    想自己DIY激光雕刻机一直搞不到Arduino开发板程序开发源码,求大神指点谢谢
    发表于 06-04 18:00

    Arduino开发板使用NRF24L01进行无线通信

    如何使用NRF24L01收发器模块在两个Arduino开发板之间进行无线通信。为了说明无线通信,我们将举两个例子,第一个是 从一个Arduino开发板向另一个发送简单的“Hello
    发表于 05-30 10:22 2次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>开发板</b>使用NRF24L01进行无线通信

    【沁恒CH32V208开发板试用】2-ARDUINO

    【沁恒CH32V208开发板试用】2-ARDUINO 天问Block一站式的开发工具,通过简单易用的图形化模式和代码模式编程,让单片机开发变得简单和高效。天问Block主要包括项目创建
    发表于 05-28 15:46