拟用bq76925模拟前端做4串锂电池保护系统。
初步看了一下芯片的datasheet,有点疑问:
当电路产生过流(Overcurrent)时,比较器会在alert引脚上输出。这个比较过程是芯片自主控制的吗?不需要I2C发送采集电流的指令才开始比较吧?
另外,当系统产生过流后,拟用alert引脚输出来控制FET,当产生过流时,关闭FET。当过流解除后,alert引脚的电平会自动切换吗?不会一直处于锁定状态而需要MCU发送指令来解锁吧?
还有,LM3S系列的MCU的ADC只有10位,通过MCU的ADC进行采样精度如何呢?
TI CHEN:
我提点不成熟的看法:
1、电流采样是通过检流电阻上的压降产生的,需要读电流值必须有MCU。电流值检测(VIOUT)送到MCU的AD脚。但芯片提供了一个过流预警(ALERT)这个脚接到了MCU的中断。目的是获得最快的响应时间。
2、BQ76925没有控制MOSFET的引脚,它只是一个模拟前端。MOSFET也需要MCU的端口去控制,别忘了MCU端口是不能可靠地驱动MOSFET,需要加MOSFET驱动器,TI有这样的产品,也可以用别家更便宜的。至于何时驱动,何时“闭锁”取决于你的程序对功能的要求。与BQ76925无关。
3、AD的精度与AD的参考电压有关。BQ76925有一路Vref输出,目的就是提高AD的精度。10位的AD有千分之一得精度。对电芯来讲已经足够。完全可以满足一般的要求。如你觉得精度不够,可选更高的芯片。最后说一点,BQ76925是一个性价比很好的芯片,因此,要求不能过高。
flora:
回复 TI CHEN:
非常感谢TI CHEN回复。
我现在正在使用BQ76925,还有一些问题请教:
1。测得BQ76925我自己的板子上的Vref输出电压只有2.985V,而非datasheet上说的3.0V。通过设置寄存器CELL_CTL->VCOUT_SEL,选择Vref * 0.5和Vref * 0.85,对应的VCOUT输出电压也不是1.5V和2.55V。
这个可能是由于什么原因造成的呢?
2。我现在用来测量4串电池,按照datasheet上的说明配置为4-cell :其中cell4:VC6 – VC5; cell3:VC3 – VC2; cell2:VC2 – VC1; cell1:VC1 – VC0;未使用的cell输入:Short VC5 to VC4 to VC3
切换寄存器,第一二三串电池电压都能够测量到。但是第四串电池电压没有输出。尝试切换寄存器得值为第4,5,6串,均没有输出。
这个是怎么回事呢?正常使用中,按照这种配置,如果要测量第四串电池的电压,CELL_CTL->CELL_SEL应该设置为什么值呢?
Steven Yao:
回复 flora:
Vref上实际的电压须要跟据公式计算得到,如果设定电压是3伏,在Vref引脚上的电压应为:
3xGCVREF
GCVref的计算请参考数据手册 第十四页公式2。
在VCOUT上输出的电压是实际的Vref电压乘以相应的系数。
第二个问题,测量第四节电池的电压,CELL_CTL = 101, VCOUT_CTL = 01
flora:
回复 Steven Yao:
谢谢楼上的解答。我这里Vref的实际电压和3*GCVREF还是有很大的偏差,不知道什么原因。供电电路应该没有什么问题,且用示波器测过,纹波很小……
第四节电压的问题已经解决了,是PCB上的一个电阻坏了,导致电压不能检测。不过此处衍生出来一个问题:按照数据手册上,如果四串电池的话,短接VC3。VC4。VC5,第四串电池电压通过采集VC5和VC6之间电压获得,那么驱动程序上必须判定是四串电池,还是五串电池或者是六串电池。
四串电池的话,能不能短接VC6.VC5和VC4,这样第四串电池电压通过采集VC3和VC4获得,在程序上可以循环增加电池编号获取每串电池电压?
还有一个问题就是BQ76925通过测量充放电电流的问题:通过检测检流电阻SENSEN和SENSEP两端的压差来计算系统的充放电电流,这个精度能够达到多少呢?为什么我这边测试精度很低?可能是什么原因造成的呢?
azhiking:
1.通过I2C设置好过流比较寄存器后,只要检流电阻上的电流大于设定值,Alert脚就会有输出。可以利用这个输出做一个自锁电路,产生过流后关闭FET,通过MCU解锁
2.过流的值不能任意设置,只能设定为离散的几个值
3.我目前用的电流检测效果不好。可能是布线的原因,但是很难解决。