当前位置:首页 > 电源 > 电源-能源动力
[导读]1. 前言随着信息技术的飞速发展,移动终端设备如手机、PDA、掌上电脑等产品正越来越多地得到广泛使用。加上目前移动终端设备的处理器性能不断提高、无线应用程序不断增加、

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芯片的电池驱动的实现。主要介绍了电池电压的获取和电池电量的计算方法。对电池管理提供了很好的借鉴。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在全球倡导环保与可持续发展的大背景下,电动汽车凭借其零尾气排放、低噪音等优势,成为了汽车产业转型升级的重要方向。然而,电动汽车的普及并非一帆风顺,诸多技术难题横亘在前,其中电池管理系统(Battery Managemen...

关键字: 电动汽车 电池管理 监测电池

BMS 对电池的管理,首先建立在精准的数据采集之上,通过一个精密的传感器网络,深入到电池系统的每一个关键部位,如同在人体的各个关键器官都安装了监测设备一样,实时捕捉电池运行的每一个细节。

关键字: 电池管理

在全球倡导绿色出行与可持续发展的大背景下,新能源汽车产业蓬勃发展。然而,“里程焦虑” 始终如影随形,成为制约新能源汽车进一步普及的关键因素。所谓 “里程焦虑”,是指消费者在驾驶新能源汽车时,因担心车辆剩余电量不足以支撑到...

关键字: 电池管理 电池 BMS

在现代电动汽车(EV)和混合动力电动汽车(HEV)中,电池管理系统(BMS)堪称电池组的核心大脑,其承担着确保电池性能优良、运行安全以及寿命长久的重任。BMS 对诸多关键参数,如充电状态(SOC)和健康状态(SOH)进行...

关键字: 电池管理 充电状态 健康状态

【2025年3月19日, 德国慕尼黑讯】全球功率系统和物联网领域的半导体领导者英飞凌科技股份公司(FSE代码:IFX / OTCQX代码:IFNNY)与领先的AI电池优化软件提供商Eatron将双方当前在汽车电池管理解决...

关键字: AI 电池管理 物联网

图1展示了电池内部配置的一个例子。理想的情况是,电池的内阻应该是零,允许最大的电流,没有任何能量损失。然而,实际上,如图1所示,内部阻力始终存在。

关键字: 电池内阻 电池管理

电池管理系统(BMS)作为电动汽车、储能系统等领域的核心组件,其性能直接影响到电池组的安全性、效率和使用寿命。BMS的主要职责在于监测、控制及保护电池组,确保其在各种工况下都能稳定运行。在BMS的设计中,电池正端(正极)...

关键字: 电池管理 BMS 电池组

电动汽车的出现彻底改变了汽车行业,与传统的化石燃料汽车相比,它提供了一种有效且可持续的替代方案,并且排放量较低。电池管理系统 (BMS) 是电动汽车成功和安全的关键部件,该系统管理电池,确保最佳性能、长寿命和操作安全。

关键字: 电动汽车 电池管理

电池堆和电池管理系统(BMS)已经在我们周围广泛使用,从电动工具、机器人吸尘器和无人机到电子摩托车和电子自行车等微移动应用。不间断电源(UPS)和可再生能源存储等不太值得注意的项目需要大量的电池单元。需要对每个电池堆进行...

关键字: 电池管理 电池测试

在过去十年中,电池供电应用已变得十分普遍,此类设备需要一定程度的保护才能确保安全使用。电池管理系统 (BMS) 可监控电池和可能的故障情况,防止电池出现性能下降、容量衰减甚至可能对用户或周围环境造成危害的情况。BMS 还...

关键字: 电池管理 BMS
关闭