一、电量计软件Battery Management Studio安装
学习电量计使用,首先使用TI的电量计软件Battery Management Studio,安装完软件后,一般默认连带芯片的驱动一并安装好,如果没有,那就需要去TI论坛找对应电量计芯片的驱动。
后缀.bqz类型的文件。
二、Battery Management Studio介绍1、打开软件后,如果没有连接硬件设备或者驱动没有安装,会出现如下界面窗口,选择相应的芯片型号后,并不能正常使用。如果刷写完.serc程序文件后,也会出现此界面,此时选择对应芯片型号是可以正常使用的。
根据左侧栏的设备状态判断是否连接无误。
2、软件界面介绍
Registers: 电池的参数、控制寄存器的状态、控制命令等。
Data Memory: 电量计配置参数,可以在软件直接修改,或者通过主机发送SMB命令修改。
主机修改电量计参数的方法:
电量计配置参数可以通过.gg文件全套写入,也可以读出现有芯片使用的gg文件,里面包含了电量计正常使用的所有配置,例如:电池的充放保护阈值、采集放大倍数、阻抗表信息等等。
Commands: IIC/SMB串行命令,实现对电量计硬件的控制。例如想通过Battery Management Studio对MOS管进行控制,那么就点击相应指令FET_EN,使能MOS控制,之后再点击发送:DSG_FET_TOGGLE,这样放电MOS管的状态就实现翻转。
Firmware : 下载程序文件到电量计,或者从电量计里读取出程序文件。类似给MCU下载HEX等文件。
Chemistry: 下载和读取Chem ID, TI有相关文档:slva725a等。
其他窗口基本用不着。
三、使用tips1、BQ40Z80的均衡算法设置说明
当前 a、电流为0或很小,且持续5小时以上;
b、dV/dT < 4uV/S
满足以上两个条件时,BQ40Z80认为当前的电芯电压是OCV电压,校准各串电芯的SOC和DOD。
此时,如果,最大单体压差 > Min Start Balance Delta(默认好像是8mV);
则计算"每串电芯需要执行均衡放电的时间",此后条件一直满足的话,则每间隔 “Relax Balance Interval"(默认18000S)再次计算均衡放电时间。
只要均衡放电时间不为0,在满足启动策略时,该串均衡电路就会启动。
启动策略:
1)、放电:不执行均衡
2)、充电:启动均衡
3)、静置(非sleep) SOC >Min RSOC for balancing (默认80%),启动均衡。
4)、sleep状态下:参数 Balancing Configuration ->CBS =0 (默认),不执行均衡。
参数 Balancing Configuration ->CBS =1时,满足以下条件时,启动均衡:
a)、sleep模式下持续时间 > Start Time for bal in sleep
b)、SOC > Start Rsoc for bal in sleep
均衡启动后,当SOC < End Rsoc for bal in sleep 停止均衡
2、控制寄存器
[FET_EN] = 0 表示AFE控制未激活,可手动控制,具体:点击右侧命令栏->FET_EN,观测右下角窗口命令显示 再观测界面最下方,观测2的地方,此时FET_EN标志由红变绿.
依次点击DSG_FET_TOGGLE、DSG_FET_TOGGLE,如图点击1、点击2. 观测1、观测2 此时CHG、DSG变红,MOS管开启,可以进行充放电.
红色代表MOS管闭合开启(可以充放),绿色代表MOS管断开关闭(不能充放)
如果电量计芯片连接着MCU,由于MCU也在间歇性的交互,可能会出现MOS设置开启后又被关闭的现象,这时应设置电量计NR状态位:
3、SOC跳变现象
TI电量计采用阻抗跟踪算法,但是在高倍率放电的情况下,随着电池老化,有概率出现SOC跳0的现象。
阻抗跟踪就是在特定条件下计算电池的内阻值,然后对比chemID里的电池内阻信息,得出当前电池状态,通过修正算法更新SOC和SOH。
当电池处于放电模式时,有电流、有压差,则可用欧姆定律计算电池直流阻抗.
R = ( VBAT - OCV) / I
电量计截止电压 = Term voltage +(PACK_R+Ra)*I +MaxdeltaAvg
这里很奇怪,SOC修0的限值一般是单体的过放阈值,就算考虑电芯不一致性,整个平均电压或者总压也说得过去,TI电量计可能是阻抗跟踪算法的原因,居然是Term voltage +(PACK_R+Ra)*I +MaxdeltaAvg,其中PACK_R+Ra是回路电阻+电池内阻,I是负载电流,我理解这里是根据这个值去修正当前SOC下降的速率。
如果电池内阻R变得很大,那么在电量计SOC更新得时刻就有可能出现跳0得现象,例如SOC-60%得时候,如果这个时刻内阻R异常,那么截止电压会提前到达,这时候,电量计认为下一时刻已经放不出电了或者SOC下降速率没有空间了,于是跳0,这个在高倍率老化电池上已出现多次案例。
目前解决措施:修改电量计阻抗表,通过0.1C和0.5C放电(不同老化电池),计算出合适得阻抗表,更新到电量计里。同时将Ra filter =1000, Ra Max Delta =0,目的是禁止阻抗表更新。
四、主要参数说明
->Terminate Voltage系统正常运行最低工作电压
->Dsg Current Threshold放电阈值
->Chg Current Threshold充电阈值
->Quit Current
【cycle counts】、【update status】、【Qmax】
>Charge Voltage 满充充电电压,charger恒压充电时电压
->Taper Current 满充时电流,一般设置比charger停止充电时电流略大25mA左右(注意BQ27425,BQ27421/441填写方式略有不同,换算数值为Taper current(数值)=Design Capacity*10/Taper current(mA))
->Taper Voltage 用于判断电池符合满充的条件,一般设置为100或者150mV,即比充电电压小100-150mV
>Design Capacity按电芯标称容量填写
->Design Energy 按电芯标陈能量填写(4.2V钴锂为标称容量*3.7,4.35V满充电压的电池为标称容量*3.8)
Golden Learning 过程
一、准备
1、充放电柜,电池,EV2300及SMB通讯转接线、万用表。
2、静置时,确保电池处于关机状态,确保EV2300连接无误并时刻保持与电池连接。
3、环境温度保持在15°-35°之间。
二、循环学习步骤
1、学习前电池放空,放空前,要发送命令0x21\0x41: 发送0x21->ITEN=0(绿色),发送0x41->置位【RDIS】(红色)
此时关键标志位为:QEN=0、VOK=0、RDIS=1、REST=0、ITEN=0、updateStatus=0x00;
【最好3.5V以下】,按要求需要放至Term Voltage(18V). 满放标志FD置位。
最好单包学习,因为我这里是双包结构,不易成功,之后学习得时候也是单包进行的。
2、放空后静置
静置时间为5小时以上,只要[VOK] 、 [RDIS] 位变为0, GaugingStatus[REST] 位变为1。
此时关键标志位为:QEN=0、VOK=0、RDIS=0、REST=1、ITEN=0、updateStatus=0x00;
期间一定要保持EV2300与电池连接状态,否则电池容易进入shutdown。
3、充电
a、清除cycle count 和 Qmax cycle count
b、发送0x21后,ITEN置1(红色),Rest位清零(绿色),VOK\QEN置1(红色)。Gas Gauging —>State—>Update Status =0x04, GAUGE_EN置1(红色);见下图
此时关键标志位为:QEN=1、VOK=1、RDIS=0、REST=0、ITEN=1、updateStatus=0x04;
备注:Data Memory ->Ra Table -> Cellx R_a flag的值都改为ff55,为表示阻抗表没有更新过.
官方给的充电电流参考是C/2,恒流充电。
c、充电完成,充电完成的标志是【FC】置位,置位的条件是充电电流小于充电截止电流,这个状态保持80秒以上;电量计自动置位FC,如果没有,说明失败了,要重新开始
此时关键位的标志为:DSG=1、FC=1、QEN=1、VOK=1、RDIS=0、REST=0、ITEN=1、updateStatus=0x04
4、充电后静置
充满后静置2小时,期间保持电量计连接状态。
此时关键位的标志为:QEN=1、VOK=0、RDIS=0、REST=1、ITEN=1、updateStatus=0x05、QMAX=1、CF0=1.
静置后updateStatus如果没有更新成(0x05),则继续静置1小时,如果还没有更新,则将电池放空后,从头开始。
5、放电
使用C/5对电池进行放电,最低放电电流不能低于C/10;即1.3A放电(双包电流)放电到关机电压18V【即设定的Terminate voltage】
注意:放电电流必须在C/5和C/10之间。
放电结束后:
6、放电后静置
放完电后静置5小时,还是看[VOK]位是不是被清除,如果是表明完成更新后updateStatus=0x06;
如果静止后没有完成更新,那么就需要从头开始,重复以上步骤;~~!
如果更新成功,需要再进行一个充放循环后,updateStatus才会变为0x0E,表示均衡开启( which means that cell balancing has been enabled);
自学习完成。
过程中有失败的概率,做一个周期时间也比较长。
文章评论(0条评论)
登录后参与讨论