BMS方案:使用两个BQ76930,第一片BQ76930采集1~10串电池电压,测量电池电流和温度。第二片76930采集11~20串电池电压,测量电池温度。MCU与第一片76930直接I2C通讯,与第二片76930通过隔离I2C通讯芯片通讯。
930的采样电路和供电电路,与BQ76930的datasheet上推荐电路一致。
电路原理框图如下:
问题:
BQ76930的电压,或电流,或温度数据有时候持续不更新,读到的是一个不变的假的数据。
描述:
该现象在电池充电、放电或静止下都出现过。电压、电流和温度不一定同时出现数据不更新的情况。发生数据异常情况时,MCU读取的76930的部分数据不更新,始终保持某个时刻的值不变。有些是读取的电流和温度数据会实时更新,但是电压数据不更新;有些是电流数据会更新,但电压数据不更新。例如,读取76930的电压数据,温度数据都是实时更新的,但是读取的电流数据始终保持某个值不变(比如之前的充电电流-5A),即使此时已经把充电器去除,实际已经没有充电电流了。
说明:
1)通过将76930的寄存器读取出来,发现发生电流数据不更新异常的时候,对应功能的使能位CC_EN被异常置0了(上电初始化时MCU会将其置1),同时某些预留位被异常置1了。
2)软件做了以下优化措施,但是仍没有解决问题:
实时查询76930的状态寄存器和控制寄存器,如果发现寄存器值异常,则重新对控制寄存器1和控制寄存器2进行赋值操作。优化后仍然出现电流不更新的情况,虽然查看CC_EN是处于置1状态。即出现问题是,MCU重新置位CC_EN也没用,无法自动恢复。
3)重启BQ76930后可以恢复正常。
需要咨询:
BQ76930工作过程中为何会被改变寄存器值?是否有可能是以下的原因:
a:BQ76930的供电电源干扰?
--静态下供电电源比较稳定,干扰很小。我们分析应该不是这个原因。
b:MCU对76930的读/写操作不符合要求?
--正常工作时只读BQ76930,不会写BQ76930。读取BQ76930数据的频率是否会影响到BQ76930的正常工作?
--之前FAE针对该问题曾经给过建议“读取BQ76930数据的频率要尽量低一些,建议低于2秒一次的读取频率”。但是改低到2秒一次的读取频率仍然出现问题,并且太低的读取频率不符合应用需求。同时我们无法理解为何读取频率会影响到BQ76930的工作?是否能把读取周期做到0.5秒读取一次?
c:BQ76930被GPRS信号干扰?
--BMS有外挂GPRS模块,模块的干扰通常会比较大。特别是在800MHz附近的频率点。又发现GPRS信号导致76930短时间内测量数据错误的问题。
d:如何解决这个问题?能否在BQ76930工作过程中,定时复位BQ76930,例如每10分钟复位一次?如此频繁的复位BQ76930,对BQ76930的性能和寿命是否会产生影响?能否进一步减短到1分钟复位一次?