This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BQ35100: SOH is always 0%

Part Number: BQ35100

Tool/software:

Hello, 

I have programmed the fuel gauge in SOH mode. It was working perfectly, giving voltage, temperature, design capacity and SOH upon request by their corresponding commands. However, for some reason I don't know it started to give a very low value of SOH while the voltage was 2.7 V (I am using a CR2450) every time I ran it until now that for every battery I obtain 0 %. I tried to fix it by resetting the fuel gauge with 0x0041 and put it in SEALED mode after the configuration (so the CONTROL_STATUS register goes from 0x4081 to 0x6081). Debugging is not giving any result because the other 3 parameters are giving a correct value. I have tried putting Operation Config A in both 0x85 and 0xA5 and I get the same. I haven't performed calibration because it was working without it.

So what's going on with my fuel gauge to stop working correctly?

The function where I read all parameters is this in C:

void gau_readings_get(uint16_t u16_voltage, uint8_t u8_SOH, uint16_t u16_temperature, uint16_t u16_capacity)
{
  u16_voltage = gau_volt_read();
  u16_temperature = gau_temp_read();
  u16_capacity = gau_cap_read();
  u8_SOH = gau_SOH_read();
  SYSTICK_DelayMs(1000);
}

And the function gau_SOH_read() is this one:

static uint8_t gau_SOH_read(void)
{
/*Reading variables*/
  uint8_t u8_SOH[1];

  GAUGE_EN_Clear();
  SYSTICK_DelayMs(10);
  GAUGE_EN_Set();
  SYSTICK_DelayMs(1000);

  SERCOM4_I2C_WriteRead((uint16_t) u8SlaveAddr,
u8SOHAddr, (uint32_t) 1,
&u8_SOH[0], (uint32_t) 1);

  while(SERCOM4_I2C_IsBusy());


  return u8_SOH[0];
}

Thanks in advance.

Carlos

  • Hello Carlos,

    How long after initial configuration did this issue start to occur?

    Regards,

    Adrian

  • Hello Adrian,

    As I need to see it in debug mode, I set the fuel gauge every time I run it. After that, it shows a value, usually close to 100. I exit debug mode and run it again and that time the value has decreased in 8-10 points. I do that many times and at the end I reach 0. My hypothesis was that debug mode is like rebuilding the code and the maximum value in the DF of the fuel gauge which should be initially 100, is now taken as "100". So if the value was 98 before exiting debug mode, it will take 98 as if it was 100 and that decreases the value. However, I can't understand if that was the reason, how it is dropping so quickly while the voltage almost remain the same. 

    Also, I have been changing among batteries to see what was happening and which value I was getting and finally it was 0 for four of them which are almost fully charged. But I decided to do the reset and that didn't solve my problem so I don't really know what's making it to change the value so drastically. 

    Have I answered your question?

    Regards,

    Carlos

  • Hello Carlos,

    Yes you did, thank you for the in depth clarification. Let me talk with other members on my team to see what could be causing this.

    Regards,

    Adrian

  • Hello Adrian,

    Thanks. Let me know when you know something. 

    Regards,

    Carlos