电池管理及监控设计

电池管理及监控设计 本文介绍了在windowsce系统中,基于电池充电管理芯片bq24032a和电池监控芯片bq26220芯片的电池驱动的实现。主要介绍了电池电压的获取和电池电量的计算方法。对电池管理提供了很好的借鉴。
1. 前言
随着信息技术的飞速发展,移动终端设备如手机、pda、掌上电脑等产品正越来越多地得到广泛使用。加上目前移动终端设备的处理器性能不断提高、无线应用程序不断增加、图形功能越来越先进。功能上的增加,导致了移动终端产品的功耗越来越大;因此,对电池的提出了更高的性能要求,尤其体现在电池的管理方面,其中包括电池的充电管理和电池的监控,这是嵌入式产品开发中必须考虑的问题。
2. 电池管理芯片介绍
2.1. 电池充电管理芯片bq24032a
电池管理芯片bq24032a支持usb充电和ac充电方式。通过bq24032a对电池进行充电。此芯片提供整个系统的电源输出。其中电池管理芯片bq24032a 的vbat接于电池监控芯片bq26220的vbat引脚。psel为电源选择端口,可以用于选择由那种输入电源作为主输入电源(usb或ac)。如果主输入电源不可用,系统将自动采用第二种输入电源进行输入,电池输入作为最后的选择,当usb或ac电源不存在时才选择使用电池作为供电源。psel被设置为低时,usb被选择为主输入[1]。下图1为电池管理芯片bq24032a及其外围电路图:
图1 电池管理芯片bq24032a及其外围电路图
2.2. 电池监控芯片bq26220
bq26220芯片是先进的电池设备监控模块,它可精确地测量充电和放电电流,并支持所有管理电池容量的必要功能,这个芯片可用于手持电话、pda、和另外的便携式产品中。bq26220芯片和主控制器一起执行电池的管理功能,主控制器负责将bq26220的数据传送到终端用户电源管理系统中和接收相应的数据。这个模块提供64比特通用闪存,8比特的id rom,和32比特的ram存储空间。这些非易失的存储空间能够保存电池的监控信息或关键的电池参数。
其中,bat为电池电压检测输入端口,这个引脚被用于检测和测量电池的电压值。hdq为单线hdq接口,是一个单线串行通信接口,它是双向输入的,负责将寄存器的信息传递给主控制器,并接收主控制器的信息到寄存器中,电池监控芯片bq26220 的hdq端口接于pxa272处理器的gpio119端口[2]。下图2为bq26220芯片原理模块图:
3. 电池驱动模型和驱动初始化过程
window ce中包含的样本设备驱动程序分为两种类型:单片驱动程序(monolithic device driver)和分层驱动程序(layered device driver)。采用分层开发模式可以降低开发难度,缩短开发周期,在电池驱动开发中使用分层驱动开发模式。
分层驱动程序由两个独立的层组成:上层是模型设备驱动程序(mdd),下层是依赖平台的驱动程序(pdd)。设备驱动程序服务器提供的接口(ddsi)是在pdd中实现的函数集,并由mdd调用。由于微软提供了所有与mdd模块相关的源代码,所以对这部分不用做任何改动,只需将自己的pdd模块与mdd模块链结成一个公用库即可[3]。mdd通过ioctls调用pdd中的特定函数来访问硬件的具体特性。
windows ce电池驱动要求的mdd函数包括:
init、deinit、open、close、read、write、seek、powerdown、powerup、iocontrol。
windows ce电池驱动要求的pdd函数包括:
batterypddinitialize、batterypdddeinitialize、batterypddgetstatus、batterypddgetlevels、
batterypddsupportschangenotification、batterypddpowerhandler、 batterypddresume。
电池驱动初始化过程
在系统上电自检成功后,上层调用电池驱动入口函数,进行电池驱动初始化工作:
(1)判断是否已经进行中断事件初始化,如果没有初始化,则进行下面的操作,如果已经进行了一次初始化,则关闭事件句柄。
(2)初始化电池全局变量。
(3)如果中断事件成功,则调用resumethreadproc创建电池线程。在线程的主调函数中,设置电池线程的优先级,然后在循环中等待中断事件。
(4)调用pdd层的初始化函数batterypddinitialize;在pdd层中,为gpio寄存器和电源管理寄存器开辟两段虚拟内存。
(5)初始化ac97的寄存器。
(6)初始化存放电池电量值的环形缓冲区。
(7)调用batteryapigetsystempowerstatusex2函数更新电池电量结构体psystem powerstatus_ ex2中的数据。
4. batteryapigetsystempowerstatusex函数
batteryapigetsystempowerstatusex函数主要获取系统电源状态值。在执行过程中是通过调用batteryapigetsystempowerstatusex2函数来完成的。而batteryapigetsystempowerstatusex2函数调用batterypddgetstatus函数以获取电池状态信息,batterypddgetstatus函数通过调用getmainbatteryvoltage获取主电池电压值,通过调用getpowerdevstatus获取电池设备状态,并获取剩余电量的比例值。下图3为batteryapigetsystempowerstatusex函数调用关系图:
5. calcmainbatteryvoltage获取电池电压值
bq26220通过bat端口检测电池电源,并且通过寄存器bath-batl传递给上层。这个bath(地址=0x72——从第0比特到第2比特)和batl低比特寄存器(地址=0x71——从第0比特到第7比特)包含电池电压经过adc转换后的结果。这个电压以11比特、2.44mv为步长、并带有lsb的二进制形式表达出来。bath寄存器的第3比特代表msb,batl的第0比特代表lsb。最大电压测量范围为5v。
bath寄存器的第3比特到第7比特存储电压adc后的偏移量信息,这个最重要的信息比特是在4比特(第3比特到第7比特)偏移数据后的标记比特。
lsb获取修正因子,以vμ为单位,主控制器负责通lsb 获取修正因子和偏移量来测量adc后的电压值。下面是计算公式:
正确的=×(2.44+lsb修正因子)-偏移量 batvbatv
计算举例如下:
例如:如果真实的lsb=+2.45mv,偏移量=+80mv
计算正确的: batv
lsb修正因子=+10vμ=0.001 mv
偏移量=+10 ×8mv=80 mv
正确的=×(2.44+0.01)-80 batvbatv
程序具体实现流程如下图4:
6. 电池电量计算方法
原来电池电量百分比显示的其实是电压百分比。可是硬件方面测试发现,电池电量和电池电压并非成简单的线性关系,因此需要分区间进行百分比的转换校正。常温下,我们设备获得的电池电压和电量曲线大致如下(图5):
图5 电池电压和电量的关系图
在驱动程序中创建了一个为16个字长度的环形缓冲区,采样点数增加为16个,这样可以增加对采样结果的可靠性。电池电压采样值even_samp为16个采样值的和去掉一个最大值和一个最小值后再取平均值。
在我们的移动终端设备中,电池的最大电压为559(4.10v),最小电压为455(3.30v),以图5中的两条虚线作为区间的分界线,可分为4.10v~3.80v,3.80v~3.60v,3.60v~3.30v这三个区间,对电池电压值进行分区间的处理,三个区间上的曲线斜率近似为:
4.1v~3.80v:kl=(100-70)/(4.10-3.80)
3.80v~3.60v:k2=(70-20)/(3.80—3.60)
3.60v~3.30v:k3=20/(3.60-3.30)
4.10v~3.30v:k=100/(4.10-3.30)
在进行电池电量百分比的转换时,当我们获得在559~455区间内的采样值后,首先获得原来的百分比值voltage_percent= (even_samp-455) * l00/(559-455)。然后针对不同的区间进行相应的调整,得到的电量百分比分别为:
4.10v~3.80v:voltage_ercent+=(4.10-even_samp * 7.5/1024)×(k-k1)
3.80v~3.60v:voltage_percent+=(3.80-even_samp * 7.5/1024)×(k-k2)
3.60v~3.30v:voltage_percent-=(even_samp-3.30v * 7.5/1024)×(k-k3)
通过对以上三个区间的分别处理,这样就获得了相对正确的电池电量[4]。
7. 小结
本文介绍了在windowsce系统中,基于电池充电管理芯片bq24032a和电池监控芯片bq26220芯片的电池驱动的实现。主要介绍了电池电压的获取和电池电量的计算方法。对电池管理提供了很好的借鉴。

泰比特首创电动车文明出行治理解决方案助力文明城市、智慧交通
加密数字货币在慈善事业中的应用介绍
Microchip发布2.1版TimeProviderÒ 4100主时钟产品
人工智能和佛教有什么关系
聚洵半导体荣获“年度潜力IC设计公司”提名,邀您投上宝贵一票
电池管理及监控设计
眼科手术机器人可远程控制替代人工手术
LED显示屏选购误区:LED显示屏的亮度真的是越高越好吗
5G时代的大屏价值蓝海——IPTV广告和智能营销
基于智能传感器的温度变送器供电电路设计
CRT电视维修实例
关于图像传感器的图像质量——要纠正的几个误区
华为P30系列手机发货量已超过2000万台
稳石机器人官网全新升级上线啦!
50+企业强强联合!中国磁元件产业联盟成立
网络张力电子围栏系统解决方案
关于提升齿轮泵基本要素的回路
如何实现企业数字化转型,它的作用至关重要
波音两架737飞机机身有裂痕将有1911架飞机被要求接受检查
虚拟示波器J-scope使用教程