高通8X16电池BMS算法(一)【转】

时间:2022-12-27 13:15:09

本文转载自:http://www.voidcn.com/blog/yanleizhouqing/article/p-6037399.html

最近一直在搞电源管理相关内容,之前是8610的bms,现在8916的bms,发现两者还是有点区别的,8916把对last_ocv_uv的估值算法分装成执行文件,作为服务一直运行。

电源管理方面,应该是android驱动开发的一大难点,主要涉及的方面多,如充、放电、休眠唤醒等。这一部分主要讲BMS相关的一些基本概念。电池这一块刚开始入手时,感觉很难,很复杂,完全不知道如何入手,后来搞久了,才发现,是对电池一些基本的知识,在脑海中缺少相关的概念,所以才感觉难,这里主要是介绍一些相关的术语与知识。

1. 相关的名词

 

术语

全称

注释

FCC

Full-Charge Capacity

满电荷电量

UC

Remaining Capacity

RC 剩余电量

CC

Coulumb Counter

电量计

UUC

Unusable Capacity

不可用电量

RUC

Remaining Usable Capacity

RUC=RC-CC-UUC,剩余可用电量

OCV

Open Circuit Voltage

开路电压,电池在开路状态下的端电压称为开路电压

SoC

State of Charge

电量百分比

PC

Percentage Charge

剩余电荷占FCC百分比

2. 相关的代码
kernel\drivers\power\ Qpnp-vm-bms.c //电池BMS算法
kernel\drivers\power\ Qpnp-linear-charger.c //电池充电相关的代码
batterydata-XX_3000 mah.dtsi //电池相关的参数
Msm-pm8X 16.dtsi //针对PMU芯片,进行的相关设置
其他一些的代码就不一一列出来,其实高通的代码还是比较好的,基本大部分的文件都会.txt的介绍文档,我个人建议在不管调什么模块,
看到有与之对应的.txt说明文档,都应该去看一下,起码对一些基本的概念有个了解。
 
 
3. 相关的原理
3.1  BMS 主要任务
1. 防止过充 2. 避免深放 3. 温度控制 4. 电池组件电压和温度的均衡 5. 预测电池的SOC 6. 电池诊断 7. 总电压及单体电压测量
8. 总电流及单体电流测量 9. 报警1 0. 通信SOC
方法:能量积分 + 误差矫正 (大众化技术,准确性高。)
传统的电池电量测试方法有:密度法,开路电压法,内阻法和安时法等。
新型算法有:自适应神经模糊推断模型、模糊逻辑算法模型、线性模型法、阻抗光谱法和卡尔曼滤波估计模型算法 。
 
3.2 开路电压法   
 通过实验方法描述在不同放电电流情况下的电池的端电压与电池的剩余能量的关系曲线,并存储特征关系曲线。
实时采样电池放电时的端电压,查表求出电池的剩余能量,同时考虑电池的使用寿命以及内阻对电池SOC的影响,对求得的电池剩余能量
进行校正。 优点:简单易行。  缺点:但是需要电池长时间静置,不能满足在线检测的要求。soc>40%,阻抗变化很小。
3.3 8916的BMS的相关思路:
3.3.1   PMU通过PMIC总线读取电池的AD值,通过一个数据运算转化为电压值。
3.3.2   在不同的电池参数文件中,都有相对应的表,
pc-temp-ocv-lut,为温度、SOC对应得电压表,PMU8916获取的电压值,通过查该表,在温度和电压下,可得到当前的SOC。
rbatt-sf-lut,为温度、soc对应的电池内阻表,这里主要考虑内阻的影响,对OCV的修正,new_ocv=ocv+rbatt(内阻)*current(当前电流)。
fcc-temp-lut,为温度对应的fcc表,ibat-acc-luit,为温度、电流对应的acc表,这两个是起到修正SOC的作用,相关计算为:
soc_uuc = ((fcc - acc) * 100) / fcc,fcc、acc均为查表所得,
soc_acc = DIV_ROUND_CLOSEST(100 * (soc_ocv - soc_uuc),(100 - soc_uuc)); //最终 soc_acc,为上报的SOC.
 
3.3.3   PMU8916的bms算法和PMU8612的有区别,其中对last_ocv_uv的估值计算的源码已经不开放,在monitor_soc_work的工作线程,
会上报事件uevent,当HAL层,收到消息,然后调用getprop的方法,获取相关的参数,如,电阻、电流、fcc、acc等,来估算出
last_ocv_uv,然后调用setprop,把该值设下去,并启动工作线程,根据last_ocv_uv,查表得到soc,并经过修正SOC,并再次上
报事件,循环下去。这个估值算法,我猜可能是一套学习算法,具体的没有源码,不清楚,只知道它把算法变为.bin文件,用了
binder机制,作为服务一直运行。

高通8X16电池BMS算法(一)【转】的更多相关文章

  1. 高通8X16电池BMS算法(二)【转】

    本文转载自:http://www.voidcn.com/blog/yanleizhouqing/article/p-6051912.html 上一篇主要讲电池相关的一些知识,上节忘记讲了,电池一般分为 ...

  2. 高通电源管理qpnp-vm-bms驱动

    1. compatible节点: qpnp-vm-bms.c使用来控制电池曲线的和BMS功能的,其compatible节点是"qcom,qpnp-vm-bms" 2. probe函 ...

  3. 针对高通BMS的研究 高通电量计

    点击打开链接 高通8064 8974 8926等pm芯片都集成了电量计,估计后续芯片都会一直存在,现在许多项目UI状态栏电池都有百分比显示,所以需要深入分析BMS有助于解决电量方面的BUG. 一: S ...

  4. 高通电池管理基于qpnp-vm-bms电压模式

    CV:Constant Voltage恒压 SMMB charger:Switch-ModeBattery Charger and Boost peripheral开关模式电池充电器和升压外围设备 O ...

  5. 【转】高通平台android 环境配置编译及开发经验总结

    原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  6. 高通开发笔记---yukon worknote

    点击打开链接 daily buildhttp://android-ci-platform.cnbj.sonyericsson.net/job/daily_build_jb-mr2-yukon/DL-C ...

  7. 高通开发笔记---Yangtze worknote

    点击打开链接 1. repo init -u git://review.sonyericsson.net/platform/manifest -b volatile-jb-mr1-yangtze 2. ...

  8. 高通android开发摘要

    一部分是开源的,可以从codeaurora.org上下载,还有一部分是高通产权的,需要从高通的网站上下载. 将高通产权的代码放到:vendor/qcom/proprietary 1. 设置bms一些参 ...

  9. 一张图看懂高通QC1.0-QC4.0快充进化之路!QC2.0跟QC3.0充电区别

    快充技术日新月异,快充市场百家争鸣的今天,高通QC快充依然主导着市场.如今QC快充已发展到第四代,每一代都有着革命性的进步.从QC1.0到QC4.0更新换代时间之短,不免让广大人民群众抱怨. “啥?老 ...

随机推荐

  1. Azure Backup (2) Azure备份服务

    <Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China. 本文介绍的Azure管理界面是Classic Model,网址:h ...

  2. windbg学习进阶之——windbg环境变量配置

    接触性能调优以来一直想学下windbg分析dump,每次看老师几个命令就能找到很底层的问题原因那简直就是羡慕加崇拜啊~但是这接近一年了,愣是没啥进展呢,主要就是在今天整理的这部分卡住了...这理由找的 ...

  3. EmguCV学习 与opencv的区别和联系

    openCV是因特尔的一个开源的视觉库,里面几乎包含了所有的图像处理的经典算法,并且采用C和少量的C++编写,运行效率很高,对于做图像处理这方面工作的,认识opencv是必须的工作.不过opencv有 ...

  4. sql - 选出指定范围的行

    Select no=Identity(int,1,1),* Into #temptable From dbo.tName order by fName --利用Identity函数生成记录序号 Sel ...

  5. python socket编程实现的简单tcp迭代server

    与c/c++ socket编程对照见http://blog.csdn.net/aspnet_lyc/article/details/38946915 server: import socket POR ...

  6. 深度学习——深度神经网络(DNN)反向传播算法

    深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础. 回顾监督学习的一般性问题.假设我们有$m$个训练样本$\{(x_1, y_1), (x_2, y_2), …, ...

  7. CSS&vert; 框模型-border

    CSS 边框属性

  8. iText5报表&lowbar;页眉与页脚

    1.概述       iText5中并没有之前版本HeaderFooter对象设置页眉和页脚,可以利用PdfPageEventHelper来完成页眉页脚的设置工作.PdfPageEventHelper ...

  9. Java NIO -- 管道 &lpar;Pipe&rpar;

    Java NIO 管道是2个线程之间的单向数据连接. Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 举个例子: package com.soyo ...

  10. Android Studio将项目打包成apk

    Android Studio将项目打包成apk 第一种方法:适合自己调试用. (1)直接在项目中生成: (2)位置是在你的项目中 第二种方法:适合发布应用. (1)找到Generate Signed ...