Bq27410在没有EVM2300和EVM2400的情况如何让起进入校验模式进行校验
Bq27410怎么才能进入校验模式,在什么样的条件下,i2c要发什么的命令序列才能让bq27410进入校验模式,
我目前遇到一个问题是,从i2c读出充电平均电流为8000mA左右,而实际的电流才800mA, 查看手册后感觉应该是没有校验的原因,
但是我手上没有EVM2300或者EVM2400,但是我可以通过I2c和bq27410通讯,我要怎么做才能让bq27410进入校验模式进行校验,
最好付上相关代码,十分感谢!
这个校准最好使用EV2300和上位机软件进行,如果使用10mOhm的采样电阻误差应该是不会那么大的,另外采样电阻温度系数最好小于75ppm。电流的误差如果不是offset,那么对于SOC影响是不太大的,例如有5%的误差,但是充放电的误差是一致的,那么1000mAh的容量学习之后数值为950mAh,放电电流100mA电量计显示为95mA,都成相同倍数关系。
好的,这个问题我知道了,
我还有几个问题请教下,
那些因素会影响到 soc,
为什么我通过i2c去读芯片的电流是8000mA,
bq27410中 CCGain,CCOffset, CCDelta,这几个参数是怎么计算出来了, 他门的含义能具体解释一下吗
I2C读出电流8000mA而实际值是800mA,这个偏差太大,已经不属于一般的校准问题。bq27410默认的检流电阻是10mohm的,你可以使用没有改写过flash的芯片,量测下外部检流电阻两端实际的电压降,然后除以10mohm和I2C读出的数据比对一下。
使用GaugeStudio 可以 对 Bq27410 进行矫正吗?
GaugeStudio可以支持bq27410G1,可以做电池校准,但你反映的偏差问题已经超过校准的范畴,排查下是外围检流电阻有问题还是改写过内部的校准参数。
多谢你的支持,
我的偏差问题已经解决了,是那个10mohm的电阻弄错了,弄成0.1ohm了,
剩下的可以用GaugeStudio对起进行进一步校准,
还有个问题是,我EVM2300和EVM2400,我只使用USB专I2C的芯片把 bq27410与电脑相连,
这个时候可否使用GaugeStudio对bq274100进行校准?
EV2300或EV2400就是做USB转I2C的,USB端口接电脑,I2C端口连接你做的bq27410板子,可以用一个电源供电模拟假电池,另一个电源短接在检流电阻模拟负载或者直接使用电子负载机来抽取电流,校准软件可以使用GaugeStudio或者bqEVSW。
好的, 这个我可以试试,
我这现在出现一个现象,电池放完电后充电, 冲10分钟左右就到%67,然后断电再上电,变成50%了
这个现象正常吗
做精度对比测试前,先保证电压电流温度的校准精度以及电池的chemID是否匹配。充电时可以调成恒流充电,实际电流乘时间算下实际充电电量,然后和电量计上报剩余电量做个对比,通常电量计在充电阶段也是按电流积分计算且不引入电量补偿,要先确认下67%是否准确,重新上电时,会按电池电压来查表重新计算电量,如果此时的电池电压不稳定,则得到的容量会有较大偏差,即你提及的50%不准确。关于精度测试,建议用bqEVSW打印完整的充放电数据,方便判断问题所在。
Hi,Luke
Dong liang是我同事,我补充几点疑问:
1、我们在充满之后电池电压4.12v,电量soc=100,充电芯片也检测到电池充满了,此后进行放电,整个过程都是线性递减的,不存在soc跳变的问题(一会大一会小的情况),当放电到soc为0的时候,电池电压为3.67v。
2、当电池soc为0时,电压为3.67v,此时是否需要在持续放电等待到达EDV这个点,也就是电池电压为3v的时候才算是完全放电呢,才是真的soc=0的时刻?
3、实际电池配置2200mAh,电池充电电压4.2v,充电电路设置在80mA的时候认为是充满了,所以收尾电流设置的也是80mA,具体配置请参考如下:
#define CHRG_VOLT 4200
#define TAPER_I 80
#define TAPER_V 100
#define CYC_CNT 0
#define DSGN_CAP 2200
#define DSGN_ENERGY 8140
#define OP_CONFIG 0x18
#define SOCI_DELTA 1
#define SLEEP_I 10
#define HIBERNATE_I 8
#define HIBERNATE_V 2550
4、在之前的放电结束时刻(soc=0,电池电压3.67v--空载电压),进行充电半小时后读出soc=67%,刚开始充的时候也是0的,中间过程没太注意到,然后对系统重新上电之后读出的电池soc=53%。
5、测试过程使用直流电压5v 1000mA最大输出充电,负载为直流负载电流500mA放电。
非常感谢!
1.bq27410是固定CHEM-ID的电量计,如果是三元材料或者4.35V电芯是无法很好支持的,不匹配的电芯在充放电结束后静置,电量计会依据此时读取的电压进行校准就会发生跳变
2.在没有FAE支持和很好调试工具,如果使用的电流不超过2A,建议选用bq27421之类容易开发使用的电量计
3.参数中有一个非常关键的参数是teminate voltage,电量计会按照这个点作为0%进行预测电量,一般最系统能正常工作的最低电压,所以请检查是否设置合理
4.阻抗跟踪算法电量计不存在需要放电到EDV更新的概念,它的学习参考这个帖子http://www.deyisupport.com/question_answer/analog/battery_management/f/35/t/46539.aspx,经过学习后或者下载golden 文件即可 电芯一致情况下并不要求每个电芯都进行学习,并且学习是不要求一定要把电放到截止电压
5.taper current设置应该略比charger截止电流略大,防止charger误差导致没报满充
5.综合来看楼主的问题主要是电芯曲线不匹配,其电芯的平坦区域电压比较低
bq27410-g1.pdf 中的 Standard Commands中有这么一条命令
NAME COMMAND CODE UNITS SEALED ACCESS
Control( ) CNTL 0x00 / 0x01 N/A R/W
其子命令有个Function 是 CONTROL_STATUS,其中有一位是这样说的,
CCA = Status bit indicating the bq27410 Coulomb Counter Auto-Calibration routine is active. The CCA routine will take place approximately 3 minutes and 45 seconds after the initialization. Active when set.
这里,我有些问题不太明白, 这里的Auto-Calibration routine 是像上面说的那样在初始化后就自动执行吗?
因为执行需要3分钟左右,我想是否在这个期间可以通过读取这个标志位来验证这个routine的执行,
还有就是我时候可以直接设置这个标志位让Bq27410初始化后就执行这个Routine,或者有什么办法可以让Bq27410去执行这个Routine,
是可以通过读取标志位来看是否执行了CC 校准,但是不能直接在CONTROL_STATUS置位的,试一下Control( )里发送0x0040是否能否使能校准,。如果是你之前的SOC跳变问题,建议先检查ID的匹配程度。
我用的电池是
P603562N/1450mAh,
LE0939041950
9F1523421
我不清楚你说的ID匹配程度,具体要怎么查看的?
目前我这边的情况是 这样的
冲电到 70%,断电,再上电,就变成60%了,
个人感觉误差是有的,但是应该不跳变这么大, 还有就是 70%,60%这两个数,应该那个更接近真实值,
从新上电后 bq27410会根据那些参数去重新计算 soc
还有个问题,如果电池的负载瞬间增大,这个soc会不会变化,据我所知道,负载变化的时候电池的soc是变化的,
请问一下,如果我要用单片机去 写数据到ccgain或者ccdelta的话,是不是先写aa 0x0040 使能校准呢?