miui11查看电量计反馈的实际电池电量与电池容量的区别51是什么意思

电池电量计库仑计,用max17040这颗电量IC去计量电池电量这种方法比较合理。想起比较遥远的年代做samsung s5pc110/sp5v210的时候,计量电量用一个AD口加两个分压电阻就做了低电量的时候系统┅直判断不准确,“低电关机”提示一会有一会没有,客户那个郁闷呀“到底是有电还是没电?”

如下图,通过两个分压电阻和┅个AD脚去侦测VCC(电池)电压。

电量计MAX17040他通过芯片去测量电池电量,芯片本身集成的电路比较复杂同时可以通过软件上的一些去实现一些处理,是测量出的电量更加准确还有一个好处,就是他之接输出数字量通过IIC直接读取,我们在电路设计、程序处理上更加的统一化

如下图所示,MAX17040和电池盒主控的关系一个AD脚接到电池VBAT+,检测到的电量信息通过IIC传到主控。

下面是电路图电路接口比较简单,VBAT+接到max17040嘚CELL,IIC接到主控的IIC2接口这个我们在程序中要配置。看这个器件比较简单吧

看下max17040的内部结构,其实这也是一个AD转换的过程单独一颗芯片詓实现,这样看起来比较专业些CELL接口,其实就是一个ADC转换的引脚我们可以看到芯片内部有自己的时钟(time base),IIC控制器之类的,通过CELL采集到嘚模拟量转换成数字量,传输给主控

通过上面的介绍Max17040的硬件、原理我们基本上都了解了,比较简单下面我们就重点去分析下驱动程序。

电量计的工作流程比较简单max17040通过CELL ADC转换引脚,把电池的相关信息实时读取,存入max17040相应的寄存器驱动申请一个定时器,记时结束通过IIC去读取电池状态信息,和老的电池信息对比如果用变化上报,然后重新计时;这样循环操作,流程如下所示:

三、MAX17040这个电量计驱动峩们主要用到以下知识点

1、IIC的注册(这个在TP、CAMERA中都有分析);

2、 中定时器的使用;

4、linux定时器调度队列;

5、max17040测到电量后如何上传到系统(这個电池系统中有简要的分析);

6、AC、USB充电状态的上报,这个和电池电量是一种方法

7、电池曲线的测量与加入;

IIC这个总线,在工作中用的仳较多TP、CAMERA、电量计、充电IC、音频芯片、电源管理芯片、基本所有的传感器,所以这大家要仔细看下后面有时间的话单独列一片介绍下IIC,从单片机时代都用的比较多看来条总线的生命力很强,像一样很难被同类的东西替代到,至少现在应该是这样的

看下他结构体的初始化与驱动的申请,这个比较统一这里就不想想解释了。

(1)、IIC驱动的注册:

下图就是我们IIC驱动注册生成的文件;

定时器就是定一個时间, 比如:申请一个10秒定时器,linux系统开始计时到10秒,请示器清零重新计时并发出信号告知系统计时完成系统接到这个信号,做相应嘚处理;

任务结构体的初始化完成后接下来要将任务安排进工作队列。 可采用多种方法来完成这一操作 首先,利用 queue_work 简单地将任务安排進工作队列(这将任务绑定到当前的 CPU) 或者,可以通过 queue_work_on 来指定处理程序在哪个 CPU 上运行 两个附加的函数为延迟任务提供相同的功能(其結构体装入结构体 work_struct 之中,并有一个 计时器用于任务延迟 )

4、linux定时器调度队列

3 通过定时器调度队列;

5、max17040测到电量后如何上传到系统(这个電池系统中有简要的分析);

(1)、保存老的电池信息,如电量、AC、USB是否插入

(2)、读取电池新的状态信息

(3)、如果电池信息有变化僦上报系统

(4)、如果用PM2301充电IC,USB充电功能不用

这个是由于我们的系统耗电比较大用USB充电时,电流过小所以出现越充越少的现象,所以這个功能给去掉了

(5)、如果有DC插入,则跟新充电状态

6、AC、USB充电状态怎么更新到应用

7、电池曲线的测量与加入

电池曲线就是电池的冲放电信息,就是用专业的设备对电池连续充放电几天,测出一个比较平均的值然后转换成针对电量IC(如我们用的max17040)的数字量,填入一個数组中如下图所示:

上面我们简单了解驱动中用到的主要知识点,后面我们把这些点串起来驱动还是从probe说起;

(3)、获取电池信息;

通过传递下来的参数,来读取结构体中相应的状态这个函数实现比较简单。

(9)、通过定时器调度队列;

如:把电池电量信息上报:峩们在max17040_work队列调度函数中 如果有电池信息、状态变化,则上用power_supply_changed上报

第1部分:测量和测量精度

电池量表(通常称为气体或燃料量表)从电池获取数据以确定其中剩余多少电量对于量表的测量精度,不应曲解计量精度量表准确报告充电狀态和预测剩余电池电量与电池容量的区别的能力取决于各种测量,包括电压、电流和电池温度应该注意的是,测量精度取决于量表的硬件而测量精度取决于测量算法的鲁棒性和量表的测量精度。

存在三种用于电池测量的主要方法第一种是使用电压查找表,其适用于具有极轻负载应用第二种是对流出或流入电池的电荷进行库仑计数(即,相对于时间将电流集成到电池中或从电池中流出)这种方法哽可靠,但在电池插入时具有一些初始化问题即了解什么是初始充电状态。第三种方法组合电压查找法和库仑计数法这些测量方法的精度随着算法的复杂性而增加,其中电压查找法最不精确无论采用何种算法来跟踪电池的充电状态,因为算法中的输入变量都是测量值因此所测量参数的精度至关重要。准确的电压测量对于新插入的电池的初始SOC估计很有必要这有助于解释电池的自放电,假设自放电电鋶(泄漏电流)不流经测量传感电阻器库仑计将无法捕获这些泄漏电流。它还有助于校正由于感测电阻器的漂移和用于库仑计数的模数轉换器(ADC)的误差所导致的累积误差精确的电流测量对于捕获低睡眠电流和短负载尖峰及适当地对通过的电荷进行库仑计数至关重要。精确的温度测量对于由温度变化而适当补偿计算的电池电阻和容量至关重要所有TI设备都使用一个ADC进行电压和温度测量,其为一个15位ADC和一個单独的15位积分ADC用于库仑计数。为了确定量表是否能准确地报告电池的充电状态可从正确配置的量表着手,并校准电压、电流和温度測量以确保测量精度。然后您需要一种以周期性间隔(1到10秒)记录电压、电流和温度的方法以便进一步处理。若使用TI量表记录这些测量值或使用具有记录功能的电池充放电的设备Arbin或Maccor,您可使用TI的电池管理工作室(bqStudio)电池需在室温下充电至充满状态,然后使用期望的負载放电至电池的终止电压TI的仪表开发套件(GDK)是一款硬件工具,可在使用bqStudio时帮助自动进行电池的充放电循环为了快速评估测量精度,只需绘制电压、充电状态和电流并进行简单检查,看看其是否在真实的电池端接电压附近报告0%的SOC且SOC是否平滑,无大幅度的跳变圖1所示为一个图表,其中量表报告了接近终止电压的0%的SOCSOC平滑转变,并未出现大幅度跳变(恒定电流负载也是如此)这种方法虽然简單,但却非常主观难以测量相对误差大小。在接下来的博客中我将讨论更复杂的方法,其允许用户估计相对误差大小


图1:充电状态囷电压随时间的曲线图

总之,量表具有良好的测量精度以确保计量精度准确很重要考虑到前者是正确报告电池的充电状态的关键要求之┅。所采用的测量算法是确保良好测量精度的另一个关键因素简单地检查充电和电压相对于时间的绘制状态是可快速确定测量精度。用於确定测量仪精度及影响测量精度的其他考虑因素的更复杂的方法,将在本博文的第2部分讨论

行业资讯、电子趣闻、技术干货、精彩活动……尽可掌握~

我要回帖

更多关于 电池电量与电池容量的区别 的文章

 

随机推荐