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: BQ35100: SOH too slow to decrease

Part Number: BQ35100
Other Parts Discussed in Thread: BQSTUDIO

Hi,

I use a battery (ER26500) of type LiSoCI2.

I kept default CHEM ID as suggested here: https://e2e.ti.com/support/power-management/f/196/p/816320/3039564

I made a test with a led always ON to see how fast my battery will decrease

I acquire SOH with BQ every 5 minutes

Here are some interesting measurement:

(26-08-2019 11-45-54) Voltage: 3564 - SOH: 98
(15-09-2019 16-15-04) Voltage: 3502 - SOH: 96
(15-09-2019 19-37-09) Voltage: 3483 - SOH: 90
(15-09-2019 20-41-17) Voltage: 3476 - SOH: 80
(15-09-2019 21-18-19) Voltage: 3471 - SOH: 70
(15-09-2019 21-43-17) Voltage: 3467 - SOH: 60
(15-09-2019 22-11-33) Voltage: 3467 - SOH: 50
(15-09-2019 22-38-47) Voltage: 3462 - SOH: 40
(15-09-2019 23-02-42) Voltage: 3463 - SOH: 30
(16-09-2019 01-27-18) Voltage: 3452 - SOH: 20
(16-09-2019 15-45-16) Voltage: 3451 - SOH: 10
(16-09-2019 19-03-00) Voltage: 3448 - SOH: 4
(16-09-2019 19-04-06) Voltage: 3449 - SOH: 2
(18-09-2019 14-02-08) Voltage: 3392 - SOH: 2

The battery lasts 23 days
SOH stays at 98% from day 1 to day 20
It decreases until 2% in ~27 hours
Then stays at 2% during almost two days before the battery was down

So I'm asking why the SOH stays at 98% during the first 20 days (87% of the time) ? Then fall to 2% very quickly

I thought BQ35100 could decrease slowly and I would have a relation between time and SOH

, what do you think of that?

I haven't tried the CHEM ID you suggested for better accuracy and I'm asking if I'll have almost same behavior.

Thanks,

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

  • Hi bitou,

    Since you worked with Onyx and asked for him here, I will defer the question to Onyx. He will reply here. However, please use his suggestions before asking for help. The reason is a good chem ID match will lead to better gauging accuracy.

  • hi Bitou,

    What mode did you run your test ? Was it SOH or EOS mode? You can't use SOH mode with LiSoCI2 cells because of the flatness of the voltage profile. That is why SOH stayed flat for a long time before dropping rapidly towards the end.

    I would recommend using the correct chem id and using EOS or accumulator mode.

    thanks

    Onyx

  • Thanks Batt and Onyx for your answer. Batt, I asked Onyx because he already answered my previous question but I don't say no to multiple good answers :-)


    I configured the chip as followed for my test:

    * EOS mode
    * Internal temperature
    * R_DATA_SECONDS to 0 sec
    * Cell Capacity to the capacity in mAh of my batteries

    I thought I could use SOH in EOS mode for LiSoCl2 battery since SOH is determined in EOS mode

    7.3.2.3 END-OF-SERVICE (EOS) Mode
    This mode is suitable for gauging Lithium Thionyl Chloride (Li-SOCl2) cells. The End-Of-Service (EOS) gauging
    algorithm uses voltage, current, and temperature data to determine the resistance (R) and rate of change of
    resistance of the battery. The resistance data is then used to find Depth of Discharge (DOD) = DOD(R). As
    above, SOH is determined and in turn used to determine the EOS condition


    I would like to know the percentage of battery remaining but EOS mode will only alert me when my battery goes down. I don't know how much it will remain and how long the battery will last. So EOS seems not to be the right solution for my battery.

    In Accumulator mode, it is written that BQ35100 make measurements every 1sec:

    7.3.2.1 ACCUMULATOR (ACC) Mode
    In this mode, the bq35100 device measures and updates cell voltage, cell temperature, and load current every
    1 s. This data is provided through the I2C interface while ControlStatus()[GA] is set. To begin accumulation, the
    GAUGE_START command should be sent, and when accumulation ends, the GAUGE_STOP command should
    be sent. To ensure that no data is lost, the host should wait until G_DONE is set before powering down the
    device

    The product is on a battery so make measurement every 1 sec will consume a lot of energy and seems not the right solution to make the battery lasts a long time

    What is the best solution at my problem? Is there an other chip that fits my needs for my battery?

    Thanks,

  • May I have some explication on Accumulator mode?

    5.1 ACCUMULATOR Mode
    In this mode, the bq35100 device measures and updates cell voltage, cell temperature, and load current
    every 1 s and begins accumulating after GAUGE_START is received. This data is provided through the
    I2C interface while ControlStatus() [GA] is set.
    This mode is enabled when [GMSEL1:0] in Operation Config A = 00.
    5.1.1 Total Capacity Update
    When in ACCUMULATOR mode, the bq35100 device tracks and then stores the total accumulated
    capacity to its internal data flash.
    CAUTION
    Care should be taken when enabling and using this feature to ensure that the
    maximum number of writes, which is 200,000, is not exceeded. For example,
    this translates to no more than 25 writes per day over 20 years.
    When the GE pin is asserted, the device will update AccumulatedCapacity() from the value stored in data
    flash. When ControlStatus() [GA] is set, the device adds each coulomb counter measurement to the value
    of AccumulatedCapacity().
    Sending the GAUGE_STOP() command prior to the GE pin being pulled low initiates the latest value of
    AccumulatedCapacity() to be written to data flash memory. As this operation takes a finite amount of time,
    the gauge will assert [G_DONE] in ControlStatus() and can optionally trigger the ALERT pin to inform the
    host when the operation is complete.

    Tell me if I'm right:
    I set OPERATION_CONFIG_A GMSEL to 0 to enable ACCUMULATOR mode.
    I switch GE to 1
    I write GAUGE_START and the BQ35100 starts measure every 1 sec and accumulate values in its RAM AND DO NOT write in flash
    // Here I can read AccumulatedCapacity()
    I write GAUGE_STOP and the BQ35100 stores latest value of AccumulatedCapacity() to be written to data flash memory
    I switch GE to 0 and the BQ35100 continues to measure every 1 sec and accumulates values in its RAM AND DO NOT write in flash ?

    ...
    In the meanwhile, BQ35100 is sleeping and continue to measure and accumulate every 1 sec the capacity without writing in flash ?
    ...

    // 30 minutes after
    I switch GE to 1
    I switch GE to 0 and BQ35100 updates AccumulatedCapacity() with data stored in data flash memory?
    // => No flash write on GE switch if GAUGE is STOPPED (GA to 0) ?

    ...
    In the meanwhile, BQ35100 is sleeping and continue to measure and accumulate every 1 sec the capacity without writing in flash ?
    ...

    // 2 hours after
    I switch GE to 1
    I write GAUGE_START and the BQ35100
    // Here I can read AccumulatedCapacity()
    I write GAUGE_STOP and the BQ35100 stores latest value of AccumulatedCapacity() to be written to data flash memory
    I switch GE to 0 and the BQ35100 continues to measure every 1 sec and accumulates values in its RAM AND DO NOT write in flash ?

    I my workflow right? If yes, it means I can use BQ35100 to read AccumulatedCapacity and it continues to accumulate capacity in sleep mode so I don't lose any µA?

  • , Any ideas on this? Production is coming and we need to make a decision on this chip

    Thanks for your support,

  • Bitou,

    I am slightly lost by what you are doing. 

    1)  R_Data_Seconds need to remain the default value (15Seconds) The gauge needs this additional time to compute the impedance. 

    2) It looks like you have a constant load on your battery. EOS mode is designed to be off 99% of the time then right before you apply a burst load lasting 32mSec to seconds long you wake the gauge, send gauge start, Burst, send gauge stop, wait for GDone bit, Read SOH, then power gauge down. Prior to waking the gauge the battery should be very well relaxed and at a state of OCV

    EOS mode gives you an  SOH based on impedance correlation and a correct chemID is needed for the cell you are using. Although it is not perfect it can be used if the impedance profile of the cell has some slope to it. EOS alert is the main function for LiSClO2 cells. it will tell you when the exponential growth of the impedance is happening and you cell has minimal time left. 

    3) Acc mode is just a coloumb counter. When GE is high (gauge on) and the gauge start command has been issued the gauge will accumulate the amount of charge that passes through it. It does not look at voltage at all. This mode does not report an SOH. While in this most if you issue the gauge stop command it will store the charge is measured to flash so the next time it wakes it will start counting from that value. 

    When GE is high and Gauge start has not been sent the gauge is not taking measurements. it is consuming power being awake, but not taking measurement, If GE is low the gauge is completely off. 

    Hope this helps

    Thanks,

    Eric Vos

  • I've answered in your message:

    Bitou,

    I am slightly lost by what you are doing. 

    1)  R_Data_Seconds need to remain the default value (15Seconds) The gauge needs this additional time to compute the impedance. 

     

    ==> I've changed it because it was very slow to get GDone bit but ok I'll keep it by default (15sec)

    2) It looks like you have a constant load on your battery. EOS mode is designed to be off 99% of the time then right before you apply a burst load lasting 32mSec to seconds long you wake the gauge, send gauge start, Burst, send gauge stop, wait for GDone bit, Read SOH, then power gauge down. Prior to waking the gauge the battery should be very well relaxed and at a state of OCV

    EOS mode gives you an  SOH based on impedance correlation and a correct chemID is needed for the cell you are using. Although it is not perfect it can be used if the impedance profile of the cell has some slope to it. EOS alert is the main function for LiSClO2 cells. it will tell you when the exponential growth of the impedance is happening and you cell has minimal time left. 

     

     

    ==> Didn't get the part: "you apply a burst load lasting 32mSec to seconds long you wake the gauge". My device consumes < 1mA on sleep mode and on wake up from 5 to 100mA.

    Is less than 1mA considered as "Prior to waking the gauge the battery should be very well relaxed and at a state of OCV" ?

    So I need to do the procedure you said every time the device wakes up or only when I want a measurement? (wake the gauge, send gauge start, Burst, send gauge stop, wait for GDone bit, Read SOH, then power gauge down.)

    You said: " it will tell you when the exponential growth of the impedance is happening and you cell has minimal time left."
    What does minimal time left mean? How may I know if it will enough time before stopping to work?


     

    3) Acc mode is just a coloumb counter. When GE is high (gauge on) and the gauge start command has been issued the gauge will accumulate the amount of charge that passes through it. It does not look at voltage at all. This mode does not report an SOH. While in this most if you issue the gauge stop command it will store the charge is measured to flash so the next time it wakes it will start counting from that value. 

    When GE is high and Gauge start has not been sent the gauge is not taking measurements. it is consuming power being awake, but not taking measurement, If GE is low the gauge is completely off. 

    Ok so it is not for us

    Hope this helps

    Thanks,

    Eric Vos

  • Hi,

    Let me explain how my board behaves.

    It is mostly in sleep mode (<1mA).

    It wakes up multiple times when a sensor trigger an IRQ for ~100ms and consume <1mA (could be every 30 sec depending on sensor).

    It wakes up every 5 minute for 500ms and consume ~ 15mA

    It wakes up every 10 minute for 2sec and consume ~ 60mA

    In EOS mode:

    Must I do the procedure (wake up my board, wake the gauge, send gauge start, Burst, send gauge stop, wait for GDone bit, Read SOH, power gauge down then make my board sleep) every time my board wakes up or may I do it only one time per day ?  I mean is it mandatory that BQ35100 is wakes up every time the board is waken up or I only have to do the procedure if I want to make a measurement?

    One more question:
    I found my batteries in the file bqStudio Chemistry Updater (Rev. FL) provided at http://www.ti.com/tool/BQSTUDIO:

    [2831_Chem]
    ChemID=0620
    Description=Lithium Thionyl Chloride
    NumKnownCells=1
    HF_Data=0
    2OCV_Data=1
    1=EVE: ER26500_cc1804002 (8500mAh)


    I don't use BQStudio to program in production BQ35100, I use a ARM CPU and I2C communication. Is my chem id 0620 already in BQ35100 or I need to upload in some way? How?

    Thanks,

  • Bitou,

    You do not need to wake the gauge every pulse. You only need to wake it when you want the gauge to "measure". This should be done enough times to achieve 500+ readings over the expected life of the battery.

    Waking too few times the gauge might not have enough samples to saturate the filters. While too many times will help accuracy, it will add power consumption. 

    In my previous post you questioned about the load duration. When the gauge receives gauge start command it goes into an increased sampling mode where V and I measurement are alternated every 8mSec. since 8mS is not a very long conversion time we need to average quite a few samples minimum to get a good result. for this we say a pulse load of at least 32 mSec is needed. In Addition, you must have at least a 100mV voltage drop. 

    I think this is all the questions. Let me know if i missed any.

    Thanks

  • Yes thanks for your answers
    I'll make a new tests with your requirements.

    I have a last question (I edited my last post)

    I found my batteries in the file bqStudio Chemistry Updater (Rev. FL) provided at http://www.ti.com/tool/BQSTUDIO:

    [2831_Chem]
    ChemID=0620
    Description=Lithium Thionyl Chloride
    NumKnownCells=1
    HF_Data=0
    2OCV_Data=1
    1=EVE: ER26500_cc1804002 (8500mAh)


    I don't use BQStudio to program in production BQ35100, I use a ARM CPU and I2C communication.So I set

    * Chem id
    * EOS mode
    * Internal temperature
    * Cell Capacity to the capacity to 8500 mAh of my batteries

    Should I configure something else?

    Is my chem id 0620 already in BQ35100 or I need to upload in some way? How?

    In this post: https://e2e.ti.com/support/power-management/f/196/p/840232/3117034?tisearch=e2e-sitesearch&keymatch=BQ35100#3117034
    You mentioned the range of the impedance of the battery that should be read from BQ35100. Could give me the range of my chem id? And the range of default chem id (The chem ID is 0606 e2e.ti.com/.../842417)

    Thanks for your support

  • I can't use BQStudio because I don't have the material

    Could you give me a dump of the DataFlash Table for my chemical ID?

    [2831_Chem]
    ChemID=0620
    Description=Lithium Thionyl Chloride
    NumKnownCells=1
    HF_Data=0
    2OCV_Data=1
    1=EVE: ER26500_cc1804002 (8500mAh)

    So I'll be able to program each value to each BQ at production

    OR

    I've downloaded latest chemical ID from TI website

    How to extract data from sluc564fl\ChemUpdate734\ChemUpdate734\ChemUpdate734\Chemistry files:

    chemdat10
    chemdat14
    chemdat16
    chemdat4
    chemdat6
    chemdat8
    chemdat.txt
    Chem.ini
    chemversion.txt



    Thanks a lot for the dump

  • Hi Bitou,

    Unfortuantely, we cannot. You have to use bqstudio for that.

    thanks

    Onyx