本文转载自: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. 防火墙firewall的设置和查看

    systemctl start firewalld.service # 开启防火墙firewallsystemctl stop firewalld.service # 停止防火墙firewall sy ...

  2. 自己动手开发IOC容器

    前两天写简历.写了一句:精通Spring IoC容器.怎么个精通法?还是自己动手写个IOC容器吧. 什么是IoC(Inversion of Control)?什么是DI(Dependency Inje ...

  3. Java银行调度系统

    具体需求如下: 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费.电话费之类业务的客户). 异步随机生成各种类型的客户,生成各类型用户的概率比例为: VIP客户:普通客户:快速客户 ...

  4. pycharm下: conda installation is not found ----一个公开的bug的解决方案

    pycharm  conda installation is not  found ----一个公开的bug的解决方案 pycharm+anaconda 是当前的主流的搭建方案,但是常出现上述问题. ...

  5. Android内容提供者

    一个应用中的数据库对别人是不会提供直接的访问的,而是提供接口给别人访问,但是一般应用开发的时候都是去获取别人的数据,而不是自己提供数据. 继承ContentProvider: 在Menifest中注册 ...

  6. Ubuntu 16.04下编译安装Apache2.4和PHP7结合

    Ubuntu 16.04下编译安装Apache2.4和PHP7结合,并安装PDOmysql扩展. 1.编译安装apache2.4.20 1 第一步: ./configure --prefix=/usr ...

  7. Photoshop经常使用快捷键(2)

    51.自由变换外框右键属性:ESC 取消 斜切:能够依照该调节边角点所引导出的两条边的角度进行移动.ctrl+shift 扭曲:随意点的调节.  ctrl 透视:模拟近大远小的关系.ctrl+shif ...

  8. 写出完美的snprintf

    平时公司的代码安全扫描会给出不安全代码的告警,其中会检查代码中间的strcpy和sprintf函数,而要求使用strncpy和snprintf.今天我们讨论一下怎样写出完美的snprintf. snp ...

  9. lua(注册c库)

    #include <iostream> #include <string.h> extern "C" { #include "lua-5.2.2/ ...

  10. java jdk和android sdk的安装以及环境变量的配置

    安卓环境变量设置 (烦)http://wenku.baidu.com/link?url=QRwpFhP8d0yJorhcvuZPrz3lNFQW-uwYg6TlZtv6uen6_SVsvRrzf0UJ ...