打印

BQ2060 EEPROM参数的解释

[复制链接]
1944|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linhai2009|  楼主 | 2009-8-17 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要直接解释BQ2060 EEPROM 的参数可能效果不好,所以还是先从"开始"说起.

在《笔记本电池通通通!!!》中说过:大部分电池中只有电量检测和保护两部分,如HP f4486、HP f4496、IBM T20、HP f2019、FUJITSU-SIEMENS BP-8050等等;有些电池将充电器也做进电池里面了,如COMPAQ N系列的电池多是如此.没有充电器的那些电池,自然要在笔记本中加上充电器部分;而有充电器的电池,笔记本中电源管理部分就简单多了,少了充电这个大头.

从上面可以看出笔记本电源系统包括电量检测部分、保护部分、充电部分,除此之外,还有系统管理部分.所谓的电池系统管理部分主要是多电池管理.一个笔记本可以带几个电池,这些电池却公用一个地址,当然要是一个电池一个电池,也就没什么要管理的了,可惜,事实上,笔记本中所有的电池都公用一个地址,这就出问题了:笔记本说,我不管你到底哪个电池给我供电,你只要有电,就请给我供电.多个电池一起工作肯定要管理,可是笔记本电脑却不想管,于是就出来个电池系统管理部分.其实不光是笔记本电脑中如此,在数码摄象机等便携产品中都有这种情况.想知道详细情况,可参看标准《Battery System Manager Specification》.

上面四个部分的工作不依赖笔记本电脑,我们使用笔记本电脑都知道,即使不开机,电池也照常充电,这时连BIOS都没有运行呢.通常我们的笔记本电脑中有个软件(如BatteryMon)可以测试笔记本电池的好坏,其实,笔记本电脑本身只是查询电池,它并没有测试的行动.这往往使刚入门者混淆,因为从根本上讲,对用户来说,最好是我打开一个软件,就能从上面看到笔记本电池好坏的测试结果.

关于笔记本电池方面的标准有四个基本的:《System Management Bus Specification》、《Smart Battery Data Specification》、《Smart Battery Charger Specification》、《Battery System Manager Specification》.至于《Smart Battery Selector Specification》,它和《Battery System Manager Specification》差不多.这四个标准其实都体现在具体的产品中,建议入门者将它们和具体的产品结合起来看,如BQ2060A的Datasheet基本上就是前三个标准的集中体现,其实BQ系列的充电管理芯片的Datasheet就是后两个标准的集中体现.

下面先解释一下所谓的 Gas Gauge Operation.您要是初看资料,还挺费神的呢.其实说白了,原理很简单.Gas Gauge Operation最主要的目的是测量电量(电池最多能充多少电量FCC和现在还剩余多少电量RM).从简单开始,电池的电压测量简单吧.几节电芯串联在一起,不但可以简单地测量总电压,还可以简单地测量出每节电芯的电压.所以可以很简单地知道电池是过压了,还是欠压了.温度测量也很简单,因为热敏电阻的阻值随温度变化是有规律的,用个热敏电阻就知道是否温度高了,或者温度低了.电流测量您觉得复杂吗?话归正题,Gas Gauge Operation主要是为电池的电量测量服务的.将一个很小的精密电阻和电池串联在一起,只要电池工作,其上就有压降,要压降就知道压降是正还是负,也就知道是充电还是放电了.如果对这个信号不断积分,是不是就可以计算出电量了?不知道VFC是如何测量电量的,那就以后有时间在深究吧,不过可以想象一下,我们家里的电表不也是测量你用了多少电量的吗?

所以,测量电池电量,必须要电池工作.如何知道电池最多能充多少电量FCC?假设电池已经充满了,我们让电池以固定大小电流放电,这样知道放电电流的大小和放电时间的长短,就可以算出电池的容量了.比如放电电流大小为2200mA,放了2小时的电,则电池的容量就为4400mAh.BQ2060A中利用一个叫DCR的寄存器,当电池充满时,其值被复位为0,随着放电的进行,它不断计数,每个计数相当于一定的电量,这样,知道DCR的数值,就知道电量了.电池的放电放到不能再放,并不是真的让电池所有的电都放完,因为真的全部放完了,电池也就报废了.一般14.8V电池放到12V就不能再放了.电量检测芯片检测到12V就发出保护信号,让电池供电线路断开,不能继续向外供电就是了.我们说的电池最大充电电量就是这样测量出来的,即先将电池充满,再放电,放到不能再放为止所测得的电量.在这个放电的过程中不能有充电,因为DCR只在放电过程中向上计数,充电过程中它不会向下计数的.符合这样条件的放电过程叫做有效放电(a qualified discharge from nearly full to a low battery level).当电池经过一个有效放电得到的DCR值将被转换成电池最大充电电量而被保存在EEPROM一个叫LMD的位置的;而非有效放电的DCR值是没有任何用处的.前面12V的专业说法叫EDV0(BQ2060),其实放到EDV2时,DCR就不在计数了.电池最大充电电量专业叫法是FCC—Fully Charged Capacity.(注意,这里开始涉及到了一些参数了,如EDV0、EDV2等,它们是EEPROM中参数的一部分,其实EEPROM中参数就是这样一点一点来的,没有什么难的.)

如何知道电池还剩余多少电量呢RM?假设一块电池经过上面的放电已经放完了,此时开始充电.这样就可以从0开始计数了,这个寄存器叫RemainningCapacity(RM),它不断计数,自然就知道充了多少电.如果放电,这个寄存器就向下减,所以电池剩余电量的测量问题就解决了.充电充到什么时候呢?比如上面14.8V电池,大都充到16.8V时,充电器的电压就不能再升了,虽然电压不能再升了,但仍可以以这个电压给电池继续充电,不是说电压不能升就充不进去电了,还是有电流的嘛.随着电池越充越饱,电流也越来越小,不过不可能小到0的,小到0不知要用多长时间呢,大概也不可能小到0的.(所以电池没有充饱的,只有充得更饱的.)于是人为地设定一个很小的电流值,一旦电流小到这个值时,就认为充电充满了.充电时,RM向上长,放电时,RM向下减,这样,剩余电量就知道了.上面的16.8V的专业说法叫ChargingVoltage,人为地设定的一个很小的电流值叫Current Taper Threshold(BQ2060).(注意,这里又涉及到了一些参数了,如ChargingVoltage、Current Taper Threshold等,它们是EEPROM中参数的一部分,其实EEPROM中参数就是这样一点一点来的,没有什么难的.)


其实RM计数的电量时常不准确.举个例子:刚出厂的电池,其FCC是人为设定的一个值,即LMD,假设电池实际容量为3000mAh,而厂家将LMD设置为4000mAh,此时充电,充满时,RM应该为3000mAh,但电池电量检测芯片多将电量从3000mAh人为地调整为4000mAh.当然这是其实误差,经过校准可以消除,即所谓的Calibrate.即使校准了,以后也会再出现不准的情况,照样可以再校准,使RM回归到准确的值.

从上面可以看出Calibrate的过程步骤:
这个过程如下:
1、 先将电池充满.它保证DCR的初始值回到0.
2、 放电放完(这个过程中不能有充电).它保证在有效放电结束时得到正确的最大充电电量FCC.
3、 再充电.很多笔记本电脑只显示电量的百分比(RM/FCC),这时显示的百分比才有意义.要注意即使是100%,也不说明电池的电量就多,因为FCC可能小呀.

再说说补偿Compensation,说是补偿Compensation,不如说是Correction.因为测量不能是完全线性的,所以有EDV Capacity Correction.还有自放电是测不出来的,人为地估计一个值,这个值要算进去,所以有light discharge compensation.建议初学者不要在这上面大花工夫.

最后说说充放电控制吧.
电池完全自己实现充放电的控制过程,我们的笔记本电脑决不参与充放电的控制过程.电池报告说电池快没电了,电脑就提示用户快没电了,等没有电时,电池自己就切断供电了.充电充过了,电脑并不知道,电池自己检测是否过充,过充了,电池自己切断充电.

当然,控制的结果电池会向外批漏的,外界可以主动查询结果,厂家也可以设置让电池主动向外广播控制结果.(这就是电池智能化的体现.这个控制结果就存放在BatteryStatus的寄存器中,其主要用处是被充电器使用,或者是电池系统管理使用.

现在来说说BQ2060 EEPROM参数的意义吧.

初学者对这个好象很感兴趣,往往又云里雾里.其实它只不过是上面测量、补偿、控制、显示等过程所用的参数,因为这些参数不同的电池不一样,电池检测芯片厂家为不变应万变,设置个EEPROM,让电池生产厂家自己写上.

下面以BQ2060 EEPROM 解释一下其意义.
EEPROM中最简单的几项,它们是电池厂家参数,只是为了显示而已.如Manufacture Date是电池生产日期,Manufacture Name是电池生产厂家的名字,Serial Number是电池的序列号,Device Name是设备名称,Device Chemistry是电池中电芯的化学物质名称,Specification Information是所谓智能电池的版本号信息,EEPROM Constants是EEPROM中开始或最后两个字节的内容,它们是固定的,即0x3c7f和0xa55a,表示这是BQ2060的EEPROM,若是其他的值,BQ2060芯片就会认为这个EEPROM不对.Manufacture Data Length是生产数据的长度.生产数据就是EEPROM中的数据6个主要的数据:Control Mode,Digital filter,Self-Discharge Rate,Battery Low%,Near Full和EDV threshold,这六个数据是7个字节,所以Manufacture Data Length的值固定为7.一下就去掉8个项了,其实这些没什么作用.


相关帖子

沙发
linhai2009|  楼主 | 2009-8-17 10:38 | 只看该作者
EEPROM中最最基本的参数只有两项:Sense Resistor Value和Digital Filter.Sense Resistor Value其实就是BQ2060应用电路中和电池串联的那个电阻的大小,看看BQ2060 Datasheet 中图1,其中的Rs的大小就是这个Sense Resistor Value,因为不同的设计者使用不同的电阻Rs,所以要告诉BQ2060,这样BQ2060就知道它的ADC和VFC的增益大小了,Gas Gauge Operation主要是要检测其上的信号的,当然必须要知道其电阻的大小了.
Digital Filter,当电池不放电时,且SMBUS处于idle状态时,BQ2060检测到信号小于Digital Filter时,会进行自放电补偿的,这个Digital Filter是生产厂家设定的,而以多大的值补偿呢,有要厂家设置,即设置Light Discharge Current.当然厂家也可以选择不进行补偿,将EEPROM中的Control Mode的NDF设置为1,则BQ2060就不进行这种补偿.补偿的目的无非使RM和DCR的计数更准确些.

下面解释充电控制参数.
ChargingVoltage和ChargingCurrent,智能电池都会主动告诉充电器应该用多高电压ChargingVoltage和多大电流给电池充电ChargingCurrent,ChargingVoltage是厂家设定的,它是电池恒压充电的值.ChargingCurrent是一个总称,因为它可能有四种值:当电池说可以用大电流给我充电时,它告诉充电器ChargingCurrent的值为Fast Charging Current,当电池深度过放要求小电流预充电时,它告诉充电器ChargingCurrent的值为Pre-Charge Current.当大电流充电结束时它告诉充电器ChargingCurrent的值为Maintenance Charging Current,还有一个值是0.这4个值中的3个值存放在EEPROM中.
过压控制参数Overvoltage Margin:当电池电压大于ChargingVoltage + Overvoltage Margin时认为是过充.Overvoltage Margin大小在0~255mV之间.
过流控制参数OverCurrent Margin,当电池充电电流大于ChargingCurrent+ OverCurrent Margin时认为是过流.
温度过高控制参数MaxT:当电池大电流充电时,若温度高于这个温度时,将暂停电池的大电流充电.
Li-Ion电池充电充满的判断参数Current Taper Qual Voltage和Current Taper Threshold:当电池的电压大于ChargingVoltage - Current Taper Qual Voltage且充电电流小于Current Taper Threshold时,认为充电已经充满了.
NimH电池充电充满的判断参数△T/△t和Hold-off Programming.
电池剩余电量RM调整参数Fast Charge Termination Percentage:当电池在充电结束时,RM的值可能小于FCC,此时BQ2060就将RM强行调整到FCC(这里是大致的说法,因为Fast Charge Termination Percentage通常为100%).当然厂家也可以设置不作调整.这个设置就是Pack Configuration中的CSYNC.
电池电量是否满标志控制参数Fully_Charged bit Clear Threshold:当电池充满时,电池会将Fully_Charged bit标志置为1,当电池电量回落Fully_Charged bit Clear Threshold以下时,就将Fully_Charged bit 标志清除.
循环周期数CycleCount和CycleCount Threshold:CycleCount记录电池已经经过了多少个周期,每个周期代表CycleCount Threshold mAh的电量.BQ2060每次更新CycleCount,都将该值写到EEPROM中的CycleCount去.
剩余时间Remaining Time Alarms和剩余容量报警Remaining Capacity Alarms:设定以当前的放电速率,还能运行多长时间,当还能运行的时间低于Remaining Time Alarms时发送报警信号;当电池的容量低于Remaining Capacity Alarms时发送报警信号.
Li-Ion电池保护参数,低压CELL UnderVoltage和高压CELL OverVoltage:当电池中有一节电芯的电压高于CELL OverVoltage时,BQ2060给出标志VOV,当其中有一节电芯电压低于CELL UnderVoltage时,BQ2060给出标志VUV.

再说说一些简单的参数吧.
Pack Configuration:该参数8位,每一位一个意思.
DMODE:有些电池上带有电量显示灯,BQ2060提供这种功能,DMODE该位表示显示的电量是绝对百分比还是相对百分比.假设电池厂家设计电池的容量为4400mAh(DC),实际电池的最大充电电量为3000mAh,而现在RM为2000mAh,则电量的百分比可有两种:2000/4400和2000/3000.
SEAL:在BQ2060 datasheet中,表3列出了SMBUS命令,这里的命令个数不多.其实SMBUS命令个数可有256个.若SEAL为0,则这256个命令都可读可写,若为1,则只有表3中的命令可读,而可些的就表中的那5个了.如果厂家将SEAL设置为1,则电池将无法UNSEAL,除非你将EEPROM硬连线去该这一位.厂家将SEAL设置为1,这样用户就不能读写EEPROM中的值了.(TI流后门.)
CSYNC:见上面的电池剩余电量RM调整参数.
CEDV:设置电池是否对EDV实行补偿.建议初学者理解固定EDV0、EDV1和EDV2就行了.
VOR:设置电池是否进行mid range voltage校正.
CHEM:表示电芯化学物质.
LCC0和LCC1:表示电池中电芯节数.

操作模式Operating Mode:
这个参数中有6位有意义.
NDF:见上面的Digital Filter.
HPE:BQ2060芯片向主机发送数据时,其通讯协议是否支持PEC校验.
CPE:BQ2060芯片向充电器发送数据时,其通讯协议是否支持PEC校验.
LED:BQ2060显示电量时是用4个LED还是用5个LED表示.
SM:是否关闭BQ2060向外发送广播信息.

设计电压Design Voltage,它不言自明.
设计容量Design Capacity:Pack Capacity就是mAh模式时电池设计容量,当mWh模式时,设计容量就是Pack Capacity * Design Capacity.
LMD:用来存放FCC,最开始时这个值由厂家设置,很随意地设置都行.
EDV:当电池电压低了后,BQ2060可以提供三级低电压报警,这三级低电压报警Threshold分别为EDV0,EDV1,EDV2.EDV有两种用处:第一,当电压到EDV2时,DCR就不再增长了,此时BQ2060设置full_discharged标志.当电压再低到EDV0时,电池将设置TERMINATE_DISCHARGED_ALARMS标志,表示若再放电,就会损坏电池了.EDV的另一种用处是电池电量矫正.按照Li-Ion电池理论,电量和电压有关系可循,为了矫正电量,在放电时,若电压先降到EDV时,而RM中计数的电量却没到相应的数值时,就将RM强制减到这些相应的值.如电压降到EDV0时,RM却还大于0,则强制将RM减到0;同样的EDV1和EDV2,EDV1对应的是将RM调到3%对应的值,EDV2对应的是将RM调到Battery Low%对应的值,就是EEPROM中的一个值.
EDV本身要设置为多少比较好呢?它有两种设置方法,一种就是设置三个固定的值,还有一种就是动态地设定,不同的温度,容量,放电率EDV的值不同,动态计算出来.和这个动态EDV设置有关的参数有:EMF、T0、C0、R0、R1、A0.
Overload Current Threshold:上面是说EDV的矫正作用,当放电电流很大时,BQ2060是不检测EDV的,到底多大呢,这个参数就是Overload Current Threshold.
中间电量矫正Mid Range Capacity Corrections:简单地说就是,电池开路的情况下,VOC25代表当电池容量为25%时的电压值,VOC50、VOC75的意思类推.
从上面可以看出,电池容量的测量不是一个简单的方程,而是要不断调整的.
还有两种矫正,在DCR计数时,还要漏电流估计和自放电估计矫正.
Near full threshold:前面我们说一个有效的放电是先将电池充满,即从RM等于FCC开始放电,这是粗略地说法.BQ2060 Datasheet 中说法是:从FCC低一点可是放电也算是有效放电,低多少呢,可以设定一个值,即参数Near full threshold.

最后的参数是ADC、VFC、Current、Temperature测量的校正.笔者水平有限,不能用“说白了,它们就是……”的方法解释清楚,照本宣科地翻译没什么意义,期待智者的“深入浅出”.

如此这般没有章法地闲扯,实在不好意思.您期望我说点什么?尽我所能地奉献.

其实BQ2040、BQ2082、BQ2085等的EEPROM差别不是很大,您觉得呢?还有BQ2050也是.

使用特权

评论回复
板凳
thf2008| | 2009-8-18 15:49 | 只看该作者
好东西,学习了

使用特权

评论回复
地板
linhai2009|  楼主 | 2009-8-22 09:41 | 只看该作者
自己顶一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

1930

帖子

2

粉丝