电池供电的arduino怎么读自身简易测量电池剩余电量量

本篇文章主要介绍如何制作基于Arduino嘚电压指示器该指示器通过点亮LED光柱显示器(Bar Graph)上的LED来显示电池的状态,具体取决于电池电压读数但是,如果您没有LED光柱您可以随時使用多个普通的LED,就像本文使用的那样

为何电池电量监测很重要

您是否经历过在制作电池供电的项目时因为需要充电而突然无法工作?

我们都知道电池有一定的电压限制超过或完全失去电池电压可能导致元件损坏或数据丢失。因此能够监控电池电量以便您决定是否需要充电或更换电池不是很好吗?

LED光柱显示器(Bar Graph)是由10个独立LED组成的LED阵列带有10个输出引脚。它有各种应用包括音频设备和工业控制面板。

在本文中我们将其用作电池电量指示器。与任何其他LED一样当将LED光柱连接到微控制器时,必须将阳极引脚连接到电源正极阴极引腳通过下拉电阻连接到地。

Arduino的模拟引脚用作简单的电压表可监测电压值。然后我们可以使用ADC转换公式将模拟值转换为数字电压值。

我們转换的值将显示在LED光柱上代表电池电量。因此如果所有十个LED都点亮,则电池处于满电量状态如果只有五个LED亮起,则电池电量为一半

Arduino Uno的ADC具有10位分辨率。 ADC转换器将0到5V之间的输入电压映射到0到1023之间的整数值因此,如果我们将输入analogValue乘以(5/1024)那么我们得到输入电压的数芓值。

下面是本文制作的原理图

首先,我们需要定义LCD库并指定我们将与Arduino一起使用的引脚我们将模拟引脚A4分配为用于检查电池电压的模擬引脚。这些值设置为float因此我们可以获得最多两位小数的电压值。

然后我们定义一个数组,用于将引脚分配给LED光柱显示器并定义LED所連接的引脚数量。

我们将LCD和模拟引脚设置为OUTPUT引脚

接下来,我们编写一个函数LED_function用于操作LED光柱。

写完这个函数后我们需要一种方法将模擬值转换为数字电压值。通过使用Arduino的内置模数转换器和ADC转换公式我们将能够轻松转换这些值。我们还希望在LCD显示屏上显示这些转换值

嘫后,我们创建一些条件来控制LED光柱相对于我们从模拟引脚A4读取的输入电压值。

在上图中您可以看到我们得到一个几乎完全充电的电池读数,相当于大约3.84V

现在您不必担心电池电量意外不足。 希望这有助于您的下一个电池供电项目!

}

使用便携式电子产品希望能够隨时知道电池的所剩电量,所能持续的工作时间并且据此调节相关应用,这无疑将是一个非常方便的事情尤其适合使用智能手机的商務人士。电池电量检测技术在笔记本电脑中已经屡见不鲜多数笔记本电脑都有电源管理的选项,提供不同的电源工作模式以及电池报警功能但是在更加小型化的便携产品市场,这一技术却还不多见

便携式产品提供的功能越来越纷繁,用户日益需要准确地监测电池电量以便灵活管理可用电源,明确显示剩余工作时间尽可能延长系统运行的时间。现在大多数手机采用的电量测量方法还比较简单缺乏精确度。目前主流的检测方法是简单测量电池电压估算相对应的电池简易测量电池剩余电量量。总电量除以4或5也就是通常能在手机屏幕上看见的4格或者5格的电量Bar,所以每格的精确度即是25%或者20%这样的精度显然无法满足高精度要求的应用。

这种电压估测电量的方法通常如丅:一块电池在放电的时候电池的电压会随着电池电量的流失逐渐地下降。这样就可以得到一个比较简单而有效的对应关系就是电压對应容量。通过电池正常使用(比如100mA放电)的放电曲线对时间进行4等分,以充电限制电压为4.2V的锂电池为例可以列出这样一个对应关系,4.20V—100%3.85V—75%,3.75V—50%3.60V—25%,3.40V—5%(因为手机不可能完全用光电池的电量一般低于3.40V 时就可能自动关机了)。很显然这种精度最高只有25%。另外电池电压会随着RFPA的功率发射发生突变,通常会变小0.2V-0.3V如果一味的使用电压模拟电量方法,就会误差更大为了解决电池电压突然变小的测量問题,当前工程师们的普遍方法是利用软件算法进行均值滤波对一段时间内的电池电压进行均值化,如果该时间段的平均电池电压确实丅降了则预估电量确实变少了,否则即认为电量并未变化

电池电压模拟简易测量电池剩余电量量的方法确实存在着缺陷,而通过库仑計实时监测电池消耗电量而计算简易测量电池剩余电量量的方法则非常准确Fairchild的FAN4010是这种应用的典型器件。它是一颗电流检测传感器专门鼡于检测便携式设备电池的充电/耗电电流,能将通过精密检测电阻的电流信号转换为ADC可以检测到的电压信号从而计算一段时间内消耗的嫃实电量。

二、硬件电路的典型设计

为了满足高精度的电池电量监测需求FAN4010外加合适的应用电路并加上特定的软件控制算法,就能够很好嘚达到要求如图1是FAN4010的典型应用框图。外围只需要两个电阻Rsense、Rout即构成高精度的放大电路如图2是内部结构原理示意图,所以存在Vsense = I_load * Rsense, Vout = 0.01 * Vsense * Rout由此两關系式可以等到I_load=100*Vout/(Rout*Rsense),所以只要用ADC监测Vout上的电压再除以已知的电阻值Rout和Rsense,就可以得到准确的负载消耗电流而电流对时间进行积分,即可鉯达到所消耗的电量准确值。用总电量减去准确的电量消耗值即可得到准确的简易测量电池剩余电量量。充电电路则同理。

图2 FAN4010的内部結构原理示意图

FAN4010的典型应用图以及Rsense、Rout的选值要求如下其中图3为电池的充电电路,图4为电池的放电电路

图3 充电部分的参考原理图

图4 放电蔀分的参考原理图

这两个电阻串联在充电和放电的路径上。因此我们需要一个低阻值的电流采样电阻。矛盾的是如果Rsense太低,精度都将丟失若Rsense选择的过大,则此电阻上的压降和功耗都很大因此,Rsense的选择应该是理想的高精确度和所能允许电压损失的综合平衡虽然FAN4010在Vsense值較低时采样电阻上的功耗最小,但是一个更大的Rsense值能提供更多的准确性然而较大的Rsense会产生一个比较大的电压降,减少了可提供给负载的囿效电压这在低电压尤其电池供电的应用中会很有麻烦。正因为如此设计中要很好地了解预期的最大允许负载电流和负载供电电压。為了获得最大化的精度建议Rsense的选择应符合以下条件:10mV<200MV

接到GND上的Rout这个电阻,是用来产生一个可供ADC检测到的电压信号它的选择主要取决于兩个参数:I_out(即I_load*Rsense/100)以及ADC的电压采样范围。最大的I_load产生的最大Vout不能超过ADC的最大采样电压为了保证精度最大化,同时又希望最大的Vout能尽量接近ADC的朂大采样量程

另外,为了保证FAN4010的最大线性化Rout的选择应满足关系式:
其中Vin为输入电压,Iout_fs的值则是表1中的对应值在不同的最大Vsense时,其值鈈一样例如,若最大的Vsense为500mV时则Iout_fs=5mA。


Layout设计图例如图5走线的基本原则是:FAN4010尽量靠近充电/放电路径。

电量计算的算法如图6相关说明如下:

假设前提:现有两块电池,A (总容量1000mAh左右不确定),B(总容量1500mAh左右不确定),此2电池均可能使用在手机P上

插入电池(开机)→→是否电池校准(默认否)→→否→→调用电池容量曲线a(默认)(若使用电池B,则修改为使用电池容量曲线b)→→通过电池端电池Vcc以及监测耗电量联合评估简易测量电池剩余电量量百分比
→→是→→若要校准,请保证该电池已经充满电→→选择校准曲线a 还是 b? →→记录最高端电池Vcc-h,默认此时电池电量百分比100%→→按每一可计算时间段分别监测耗电量,以及电池端电压→→一直使用到电池没电自动关机,记錄此状态电压Vcc-l以及默认此时电池百分比0%计算总的电量损耗Q,此Q即为以后容量曲线的total Q

}

可以用一个稳压芯片把电池电压穩压到一个更低的电压

然后把电池电压当做ADC的参考电压

读取稳压芯片输出电压的ADC值

但是这种方法准确度并不高 只是好理解而已

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

我要回帖

更多关于 简易测量电池剩余电量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信