arjun.a
commit
b24351f
BQ27Z561: BQ27z561 - Battery SOC suddenly jumps from 100 to 0 in few seconds
Part Number: BQ27Z561 Hi, We are using BQ27z561 for battery management in our product. Recently we have seen instances where in the battery SOC suddenly jumps from 100 to 50 and sometimes from 100 to 0 within 1 seconds. After this, this the fuel gauge reports LOW battery warning. When the device is kept for charging, the SOC suddenly jumps to 100% within 10 minutes. Regards, JIju Chacko
Hi JIju, Did you guys choose a proper chemistry id to match your battery? Did you successfully run the learning cycle? Andy
Hi Andy, Yes. the configuration are proper and the device works as expected in our testing environment. The issue reported is from the field testing. With the help of few field engineers we got the know the root cause of the issue. The battery is getting disconnected temporarily and this reboots the device. On the next boot the SOC reading get jumbled up. Currently we have BQFS, GMFS and SREC files generated from the Battery Management Studio application. Do we need to write these files again? What will be the process to calibrate the fuel gauge when connecting and new battery?
The files can be used for mass production. Basically, you program one of these files to a fresh device. Regarding the calibration process, please see the Calibration section of bq27z561 TRM.
Hi Andy, I think there is a confusion in understanding the issue. We have followed the steps of calibration from the TRM as you stated. And the device with the battery connected works perfectly as per requirement. In our design, the battery gauge is directly powered from battery. In this case, if the battery is removed for some reason. then on connecting the battery again we see a difference in the battery SOC. I understand there will be some difference as the battery gets relaxed in removal of load. But still the difference of ~70% capacity is not expected. My question is, in case of new battery connection or intermediate battery removal and insertion, do we need to perform any steps in the fuel gauge ?
Try sending a RESET command to the gauge device. The SoC should be updated again. Andy
Hi Andy, We are using below commands from the driver. We added a custom SYSFS entry which will reset the device after power cycle or during battery replacement. case POWER_SUPPLY_PROP_ENABLE_IT: { if(val->intval){ fg_enable_gauge_it(bq); fg_reset(bq); } break; } Just want to confirm if these are the only required steps and we don't need to perform any other operation. Regards, Jiju Chacko
Unfortunately, there is no way for me to verify your code. Here is my suggestion. Basically, make sure that the gauge device is NOT in the SEALED mode before sending the RESET command.
Hi Andy, As you can see below. Even in cases where the battery is not removed, we see difference in the battery SOC reported by the fuel gauge. As per our conversation earlier, we added command to set GAUGE_EN=1 and then send a reset command. [ 20.760000] [bq27z561] fg_irq_thread: RSOC:7, Volt:3704, Current:0, Temperature:371 [ 20.770000] [bq27z561] fg_irq_thread: VOLT_HI clear [ 20.780000] [bq27z561] fg_irq_thread: TEMP_HI set [ 20.780000] [bq27z561] fg_irq_thread: VOLT_LOW clear [ 20.790000] [bq27z561] fg_irq_thread: TEMP_LOW clear [ 20.790000] [bq27z561] fg_interrupt_event_provider: status = 4, bq->cache_hi_temp = 0x0, bq->high_temp_threshold_status = 0x0 [ 20.800000] [bq27z561] fg_interrupt_event_provider: Low temperature interrupt received via high temperature threshold set [ 20.820000] [bq27z561] fg_interrupt_event_provider: Low temp condition is cleared, setting current to 960mA [ 20.830000] bq25601_set_charge_current called via fuel gauge= 0x10 [ 22.530000] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 28.620000] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [ 32.030000] IPv6: ADDRCONF(NETDEV_UP): usb0: link is not ready [ 34.160000] [bq27z561] fg_unseal_complete_access: FG is unsealed [ 34.160000] [bq27z561] fg_enable_gauge_it: Data flash unsealed [ 34.470000] power_supply bms: driver failed to report `voltage_now' property: -1 [ 34.510000] power_supply bms: driver failed to report `voltage_now' property: -1 [ 36.960000] Battery charging disabled [ 36.990000] Battery charging enabled [ 43.740000] [bq27z561] fg_irq_thread: RSOC:14, Volt:3869, Current:960, Temperature:359 [ 43.740000] [bq27z561] fg_irq_thread: VOLT_HI clear [ 43.750000] [bq27z561] fg_irq_thread: TEMP_HI clear [ 43.750000] [bq27z561] fg_irq_thread: VOLT_LOW clear [ 43.760000] [bq27z561] fg_irq_thread: TEMP_LOW clear Regards, Jiju Chacko
Hi Jiju, If the battery hasn't been removed, I will suggest you NOT send the RESET command to the gauge device. Here is my suggestion. After the battery is connected to the gauge and your system, don't power on your system. Instead, let the battery relax for two hours and then power on. I believe you will read back accurate RSOC readings. The purpose of the 2-hour relaxation time is to let the gauge take an OCV measurement and update the FCC, RemCap, and RSOC. Andy
Hi Andy, 2 hours is too long. I was expecting this time to be in seconds. Can you tell me if there is procedure to forcefully calculate battery OCV. Regards, Jiju Chacko