微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI电源管理交流 > BQ27220电量百分比跳变问题

BQ27220电量百分比跳变问题

时间:10-02 整理:3721RD 点击:

未充电情况下,为什么bq27220的电量从0%回升到9%?

具体描述:满电的电池以1.3A电流放电,bq27220读取的电量随着时间从100%降到0%,电量0%时bq27220读取电池电压3.21V, 此时手动设置电池停止放电。等了十几秒,重新读取bq27220的电量为9%,电压上升为3.45V。bq27220设置: 电池设计容量6000mah,满电容量6000mah,设计电压3.8v; CEDV使用FIX DEV,  BATTERY LOW% 为 700, FIXED EDV0 设置为3031, FIXED EDV1 设置为3200, FIXED EDV2 设置为3350, Smoothing EDV0.

亲;如果以电压为参考变量的时候,会因电池端口电压突变而改变显示。完全以电流积分为参考的计算方式;可以避免这种问题。但是;会积分偏差累计。

我在BQ27220上面没看到这样的设置,我只设置了几个简单的选项,这个是不是电量计自动优化计算的?

我也遇到这个问题.....电池电量会从0%回复到大于0%

我也碰到用BQ27220问题, 我是纯拿它做电量积分。 我修改设计容量到30000mAh, (温度改为外部温度), 可怎电量计不工作,我有0.3A电流在跑的。 有没高手帮忙指导下。谢谢!我下面这改设计容量和温度测试的, 有哪里有问题吗? 

uint8_t bq27220_gauge_init(void)
{
uint8_t ret,i=0;
uint8_t Decap_h,Decap_l;
uint8_t volt1_h,volt1_l;
uint8_t temp1 =0,temp2=0;
uint8_t opcfg_h,opcfg_l; //operation config A

uint8_t test1=0,test2=0,test3=0,test4=0;

ret = i2c_read_byte(bq27220CMD_DeCAP_LSB, &Decap_l);
if(ret != I2C_STATUS_OK) return ret;
ret = i2c_read_byte(bq27220CMD_DeCAP_MSB, &Decap_h);
if(ret != I2C_STATUS_OK) return ret;

if((Decap_l!=0x30)||(Decap_h!=0x75))
{
ret = i2c_write_byte(0x00, 0x14); // 0x41
ret = i2c_write_byte(0x01, 0x04); //
ret = i2c_write_byte(0x00, 0x72); //
ret = i2c_write_byte(0x01, 0x36); //

ret = i2c_write_byte(0x00, 0xFF); // for test, full access

ret = i2c_write_byte(0x01, 0xFF); // ??好像没起作用?
ret = i2c_write_byte(0x00, 0xFF); // for test, full access
ret = i2c_write_byte(0x00, 0xFF); //

ret = i2c_write_byte(0x00, 0x90); // for test, Enter in CFG_UPDATE

ret = i2c_write_byte(0x01, 0x00); //

for(i=0;i<10;i++)
{delay_us(50000);}

ret = i2c_read_byte(bq27220CMD_OpSTA_LSB, &volt1_l);
if(ret != I2C_STATUS_OK) return ret;
ret = i2c_read_byte(bq27220CMD_OpSTA_MSB, &volt1_h);
if(ret != I2C_STATUS_OK) return ret;

// 修改容量:3000mAh ==》 30000mAH

ret = i2c_write_byte(0x3E, 0x9F); // for test, Design Capcity
ret = i2c_write_byte(0x3F, 0x92); // 这 0x9F, 0x92的高低位 与 技术手册上的 config 0x929F 是反的
ret = i2c_read_byte(0x60, &temp1); // Read 0x60 Old_Chksum
ret = i2c_read_byte(0x61, &temp2); // Read 0x61 data_len

ret = i2c_read_byte(0x40, &Decap_h); //read 0x40 Old_DC_MSB
ret = i2c_read_byte(0x41, &Decap_l); // read 0x40 Old_DC_LSB

ret = i2c_write_byte(0x40, 0x75); // H bit for test, Design Capcity

ret = i2c_write_byte(0x41, 0x30); // L bit

ret = i2c_write_byte(0x60, 0xBF); // write new Chksum, 反推的,old_Chksum可能是161,看EXCEL 文件
ret = i2c_write_byte(0x61, 0x24); //

ret = i2c_write_byte(0x00, 0x91); // for test, Enter in CFG_UPDATE
ret = i2c_write_byte(0x01, 0x00); //


// 改内部温度到外部温度 0x0484 ==> 0x8484 //只对BAL 板上的两个BQ27220设为外部温度, Power板上的BQ27220都是内部温度,初始化时不改温度设置。

ret = i2c_write_byte(0x3E, 0x06); // for test, Design Capcity
ret = i2c_write_byte(0x3F, 0x92); // 这 0x9F, 0x92的高低位 与 技术手册上的 config 0x929F 是反的


ret = i2c_read_byte(0x60, &temp1); // Read 0x60 Old_Chksum
ret = i2c_read_byte(0x61, &temp2); // Read 0x61 data_len

ret = i2c_read_byte(0x40, &opcfg_h); //read 0x40 Old_config A_MSB
ret = i2c_read_byte(0x41, &opcfg_l); // read 0x40 Old_config A_LSB

ret = i2c_write_byte(0x40, 0x84); // H bit 

ret = i2c_write_byte(0x41, 0x84); // L bit

ret = i2c_write_byte(0x60, 0x91); // write new Chksum, 反推的,old_Chksum可能是161,看EXCEL 文件
ret = i2c_write_byte(0x61, 0x24); //

ret = i2c_write_byte(0x00, 0x91); // for test, exit CFG_UPDATE
ret = i2c_write_byte(0x01, 0x00); //

for(i=0;i<10;i++)

{delay_us(50000);}

ret = i2c_read_byte(bq27220CMD_OpSTA_LSB, &volt1_l);
if(ret != I2C_STATUS_OK) return ret;
ret = i2c_read_byte(bq27220CMD_OpSTA_MSB, &volt1_h);
if(ret != I2C_STATUS_OK) return ret;

ret = i2c_write_byte(0x00, 0x30); // return to SEALED mode
ret = i2c_write_byte(0x01, 0x00); //

}

return ret;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top