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.

BQ27441-G1: Why the Qmax is not updated and the RemCap is wrong and nevered updated? FC bit does not change to 1.

Part Number: BQ27441-G1
Other Parts Discussed in Thread: BQ25890, GPCCHEM, BQ27Z561

Hi,

      BQ27441-G1b is used in my device.

      After the battery is plugged in, the following configuration is set to BQ27441 in CONFIG UPDATE MODE.

      These parameters are learned from following the <bq27441 EVM: System-Side Impedance TrackTm Technology>.

     TaperRate = 134.

     I am sure all the parameters are set correctly into the BQ27441, because I read the registers out and they are right.

     Then, the device is charged and discharged for 3 times:

      But I find the Qmax/RA is never updated, and the RemCap is around 1300mAH to 1500mAH, far away from 1900mAH, which is wrong.

      Why?

      The figure is attached below.

1.rar

        I find that the FC bit is never set to 1 even after the charge termination.

        The charging chip is BQ25890, and the terminate current is set to 128mA.

        I have read this post: 

      BQ27441-G1: Primary Charge Termination Algorithm is not working - Power management forum - Power management - TI E2E support forums

     

          I find the las charging current is 155mA. So it's > Taper Rate(134). So Condition1 and Condition2 cannot be satisfied concurrently.

          I'm confused with the Taper Rate.

          Taper Rate = 10 * Capacity / TermCurrent =10*1900/128 = 148        Right? Wrong?

          But since it's unit is Hr, why compare it with IRateAvg?

          What value should I set to Taper Rate in my case, to let FC bit work correctly?

     

        Is it wrong :   < Taper Rate and IRateAvg2 < Taper Rate   ?

        Should it be Taper Current, not Taper Rate?

      Thank you.

Frank

  • Hi Frank,

    For a lot of these questions, I will need to see how you have the BQ27441 configured. Can you attach your .gg file so I can look at these values?

    Best Regards,

    Jackson

  • Hi Jackson,

          Attatched is the .gg file.

          Best Regardsbq27441.gg.csv.

    Frank

  • And in this configuration, the Learning Cycle always stuck in the relax procedure.

    Is anything wrong with my .gg file?

  • Hello Feng,

    Would you please provide your log file as well?

               I'm confused with the Taper Rate.

              Taper Rate = 10 * Capacity / TermCurrent =10*1900/128 = 148        Right? Wrong?

              But since it's unit is Hr, why compare it with IRateAvg?

    Please see below. Also, please refer to this quick start guide: https://www.ti.com/lit/ug/sluuap7/sluuap7.pdf?ts=1661884590567&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ27441-G1




    I would set the taper current to 129 in your case. 

    taper rate = 1900 / (0.1 * (128 +15% of 128)) = 129 (.1Hr)

    This is to ensure that the gauge detects full charge (StateOfCharge() = 100%) before the charger shuts off.

    Regards,
    Jose Couso

  • Hi Jose Couso,

           Attached is the log and the .gg file. 

           In this situation, the Learning Cycle always stay in the relax procedure, even for 6 hours and time out.

    Log_Always in relax.logbq27441_taper_rate_129.gg.csv

           Thank you.

    Frank

  • Hello Feng,

    But I find the Qmax/RA is never updated, and the RemCap is around 1300mAH to 1500mAH, far away from 1900mAH, which is wrong.

    In your configuration file, please set update status to 3 (bit 1 and bit 0 should be set). These bits are only set for learning cycles (should be set back to zero after successful learning cycle).

    For a Qmax update, please ensure the following:
    - RUP_DIS must not be set
    Voltage must not be within the flat zone
    Temperature must be within the data flash settings

    In this situation, the Learning Cycle always stay in the relax procedure, even for 6 hours and time out.

    From your log file I see that current is always zero, therefore a charging process never occurs. Voltage goes down as opposed to go up. For FC to be detected Voltage needs to reach your Design Voltage condition.



    As for the Remaining Capacity. It is displaying the correct value (zero). Your terminate voltage in gg file is set to 3500 mV and the voltage the gauge is reading is about 2800 mV. So way below Terminate Voltage. Therefore, a Remaining Capacity of 0 is correct.

    Please ensure you can charge and discharge. Otherwise, the gauge can't respond.

    Regards,
    Jose Couso

  • Hi Jose Couso,

          PART1 

          According to the datasheet. I thought the QMAX_UP and RES_UP should be 0, to enable learning cycle.

       

           And the CONTROL_STATUS is read-only. These bits seems to be controlled by the bq27441 gauge, not by external command.

           And in the BMS, I didn't find any way to set these bits either.

          

          PART2 

          "In this situation, the Learning Cycle always stay in the relax procedure, even for 6 hours and time out."

          The battery is already discharged below 2.9V. I record the log after that.

          In fact, when I plug the battery in and press the "start"  button to start the learning cycle. The BMS shows:

          So I follow the guide, and discharge the battery with 380mA. When the Voltage drop to about 2840mV, which is below 2900mV, I remove the load, and the BMS show:

         So, I follow the guide and wait for the battery to relax. But the relax procedure never finish.

         I need to wait for the BMS to indicate me to go to next charge procedure, right? But even when 6 hours time out, it remains in relax procedure.

         

         Best regards.

    Frank

  • Hello Feng,

    According to the datasheet. I thought the QMAX_UP and RES_UP should be 0, to enable learning cycle.

    I think there's a misunderstanding. You are right here, control_status is a read-only register and shouldn't be touched.

    In your configuration file, please set update status to 3 (bit 1 and bit 0 should be set). These bits are only set for learning cycles (should be set back to zero after successful learning cycle).

    If you are referring to what I said above, please see below.

    The battery is already discharged below 2.9V. I record the log after that.

    I believe you wish to set terminate voltage to 2.9 V, but this is not specified in your gg file. The gauge won't know where to stop unless it's been told. Please see below.

    From your gg file I see you have Terminate Voltage  = 3.5 V , usually is 3.0 V (might be 2.9 V - see cell manufacturer's datasheet). This can cause weird behavior because this is considered a flat region for the gauge and OCV measurements can be very inaccurate. In fact, I believe this might be the reason you are experiencing the issue with the RELAX procedure, the gauge might not be able to find a well relaxed OCV point. Please follow your battery cell manufacture's datasheet for terminate voltage value.

    Also, please start the log file from the beginning and share it. I would like to see the whole behavior as this will make it easier for debugging purposes.

    Regards,
    Jose Couso

  • Hi Jose Couso,

         PART1 Control Status

         

         I find some descriptions in the datasheets are confusing. So let me state my understanding one by one, please check if I'm right or not.

         1. Some statement in the 2th requirement is missing. What is the full statement?

         2. IRateAvg = DesignCapacity / CurrentAvg. Right? Wrong?

         3. IRateAvg < Taper Rate means CurrentAvg > Taper Current. Right? Wrong?

         4. Since I set Taper Rate = 129 and DesignCapacity = 1900mAH, the 1st requirement is CurrentAvg1 > 147mA and CurrentAvg2 > 147mA. Right? Wrong?

         5. The above 3 requirement is not sufficient. For example, when charging to 90%, CurrentAvg1=CurrentAvg2=1A, Voltage = 4.220V, which is a quite common condition, the FC bit will not be set. Right? Wrong?

         6. There is a hidden statement, which is not stated in the above datasheet. That is, the 4th requirement: the Current Now falls to zero. Then the [FC] will be set and the [CHG] is cleared. Right? Wrong?

         7. When [FC] bit is set, which means the battery is full charged. The Qmax and RA will be updated, whether or not the bit0/bit1 in Update Status is set, except that the new values of Qmax and RA may equals to the old values. Right? Wrong?

         8. Whether or not the bit0/bit1 in Update Status is set, in the common usage, the BQ27441 will always learn and update the parameters. Right? Wrong?Since only in that way, the BQ27441 can tell us that, for example, the battery Capacity falls to 1800mAH from 1900mAH after 365 days usage. 

         9. So, what is the difference between setting or clearing the bit0/bit1 in Update Status? The datasheet event didn't give a name for the 2 bits.

       10. I guess, setting the 2bits tell the BQ27441 to execute a deep new learning. Which is a little different from common usage learning update. Right? Wrong?

       11. Since in common usage, the 2 bits doesn't need to be set. The [FC] should be set every time the battery is full charged and met the above 4 requirements. Right? Wrong?  

         PART2 Terminate Voltage

         According to the bq27441 Technical Reference:

        I set the Terminate Voltage=3.5V, because 3.5V is the lowest voltage at which my system will operate. I think the Terminate Voltage is the voltage where the SOC is defined to be 0%, so it doesn't need to be the Discharge cut-off voltage defined in the battery cell manufacture's datasheet.

        The Discharge cut-off voltage is 2.7-2.8V in the in the battery cell manufacture's datasheet, is the voltage at which the protection circuit in the battery will shut down. If set Terminate Voltage = Discharge cut-off voltage, the bq27441's power will be cut-off because the battery is cut-off.

        So, I think the Terminate Voltage is set as 3.5V in my condition is right.

    PART3 A new learning cycle

        This time it pass the 1th relax procedure successfully, I don't know why sometimes it can not.

        The bit0/bit1 in UpdateStatus is not set in this learning cycle.

     

            According to the datasheet, "When the Primary Charge Termination conditions are met, the Flags() [FC] bit is set and [CHG] bit is
    cleared."

            So I think if still in charging, the [FC] should be 0 and the [CHG] should be 1. Right?

            But the above figure shows that the charging current is still 559mA, the [CHG] bit is 0. Why?

            And after a while, the current falls to 0, and the [FC] is set:

       And after a while, the learning cycle failed. 

        

       It failed at the 2th procedure fails. It says that [Qmax_UP] not set. Why?

       The log are not stored as expected.

        I will try to set the bit0/bit1 and update with some new and full logs later. Thank you so much.

        Best regards,

    Frank

  • Hello Feng,

     1. Some statement in the 2th requirement is missing. What is the full statement?

    This is for a different gauge but concept is the same (terminology or different parameters are used).



    2 - Right

     3. IRateAvg < Taper Rate means CurrentAvg > Taper Current. Right? Wrong?

    When AvgCurrent is less than Taper Current for two consecutive periods of 40 seconds, then Charge Termination is triggered. This is essentially the last if() statement for fully charge condition


     Since I set Taper Rate = 129 and DesignCapacity = 1900mAH, the 1st requirement is CurrentAvg1 > 147mA and CurrentAvg2 > 147mA. Right? Wrong?

    Correct


         5. The above 3 requirement is not sufficient. For example, when charging to 90%, CurrentAvg1=CurrentAvg2=1A, Voltage = 4.220V, which is a quite common condition, the FC bit will not be set. Right? Wrong?

    There's a misunderstanding here. FC will only be set if Voltage is > Taper Voltage AND average current is less than taper current
      

       6. There is a hidden statement, which is not stated in the above datasheet. That is, the 4th requirement: the Current Now falls to zero. Then the [FC] will be set and the [CHG] is cleared. Right? Wrong?

    No hidden parameters

    When [FC] bit is set, which means the battery is full charged. The Qmax and RA will be updated, whether or not the bit0/bit1 in Update Status is set, except that the new values of Qmax and RA may equals to the old values. Right? Wrong?

    No necessarily, Qmax updates will occur in RELAX mode when two OCV measurements have been taken. RA table will be updated during discharge mode. 

    Bit0 and bit1 are only set when gauge is learning about the battery in a learning cycle. In production or when tuning parameters they are not set. 

     8. Whether or not the bit0/bit1 in Update Status is set, in the common usage, the BQ27441 will always learn and update the parameters. Right? Wrong?Since only in that way, the BQ27441 can tell us that, for example, the battery Capacity falls to 1800mAH from 1900mAH after 365 days usage. 

    Refer to previous answer, Gauge will update parameters and report RM, FCC, etc, regardless of bit0/1. These bits are just set for when learning. This has nothing to do with guage reporting.


     9. So, what is the difference between setting or clearing the bit0/bit1 in Update Status? The datasheet event didn't give a name for the 2 bits.

    Check previous answers. Technically it forces the gauge to do a Qmax Update.

     11. Since in common usage, the 2 bits doesn't need to be set. The [FC] should be set every time the battery is full charged and met the above 4 requirements. Right? Wrong?  

    Three requirements. Check previous answer

      I set the Terminate Voltage=3.5V, because 3.5V is the lowest voltage at which my system will operate. I think the Terminate Voltage is the voltage where the SOC is defined to be 0%, so it doesn't need to be the Discharge cut-off voltage defined in the battery cell manufacture's datasheet.


    For learning cycles, terminate voltage is set according to cell datasheet. After learning cycle, user can tune this parameter for the application. 

    So, I think the Terminate Voltage is set as 3.5V in my condition is right.

    3.5 V is a flat region for most battery cells. You would need to double check this. This will cause weird behaviors.

            So I think if still in charging, the [FC] should be 0 and the [CHG] should be 1. Right?

            But the above figure shows that the charging current is still 559mA, the [CHG] bit is 0. Why?

    No quite right, this is to ensure you get the most capacity out of your cell. Even though charger might have been turned off, the gauge still waits for about 80 seconds and checks if AvgCurrent < taper current. When this happens, FC will be set. 


     It failed at the 2th procedure fails. It says that [Qmax_UP] not set. Why?
    For a Qmax update, please ensure the following:
    - RUP_DIS must not be set
    Voltage must not be within the flat zone
    Temperature must be within the data flash settings

    As I mentioned in previous replies, Voltage must not be within flat region. Setting terminate voltage to 3.5 V will typically be interpreted as flat region.


      I will try to set the bit0/bit1 and update with some new and full logs later. Thank you so much.

    Please try to do a new learning cycle with the things I mentioned. Also follow a quick start guide on the bq27441

    https://www.ti.com/lit/ug/sluuap7/sluuap7.pdf?ts=1662565957926&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FBQ27441-G1%253Futm_source%253Dgoogle%2526utm_medium%253Dcpc%2526utm_campaign%253Dapp-null-null-GPN_EN-cpc-pf-google-wwe%2526utm_content%253DBQ27441G1%2526ds_k%253DBQ27441-G1%2526DCM%253Dyes%2526gclid%253DEAIaIQobChMIy43e1oSD-gIVMRTUAR3pkQ4TEAAYASAAEgI6_PD_BwE%2526gclsrc%253Daw.ds

    Every cell has different OCV table, but this is a typical one. Red circle represents flat regions which will cause Qmax to not update. Blue circle is a typical region for Terminate Voltage. Please look in your cell manufacturer if an OCV table is provided.



    Regards,
    Jose Couso

  • Hi Jose Couso,

          About the 3 requirements, I made a misunderstanding, because the datasheet says                           "IRateAvg < Taper Rate". 

          Since IRateAvg = DesignCapacity / CurrentAvg, if we want CurrentAvg < Taper Current, it should be "IRateAvg > Taper Rate".

          Thank you very much for your detailed answers.

          Now I understand. I need to do these:

          1. Set TerminateVoltge = the cutoff voltage in the datasheet of the cell.

          2. Set bit0/bit1 of UpateStatus to 1, before learning cycle.

          I will try that and update soon.

         

          And one more question. What is the recommended discharging current in the learning cycle?

          Best Regards,

    Frank

  • Hello Feng,

    What is the recommended discharging current in the learning cycle?

    The recommended discharging current rate is C/5 to C/10. 

    Regards,
    Jose Couso

  • Hi Jose Couso,

          I restart a new learning cycle with a new configuration. This time it stops at the 1st relax procedure.

           BQ27441Log_2022.9.8.log27441_bit0bit1_TermVolti2900.gg.csv

          Attached is the configuration and log. It says "RUP_DIS / RDIS: Not Clear".

         Best Regards,

    Frank

  • Hello Frank,

    From the provided log file, I see that the current is always zero. Please make sure you start logging once you start the learning cycle process.



    For RUP_DIS bit to clear a wait of 5 hours is required. RUP_DIS will clear once the gauge has identified a well relaxed OCV point.

    Please follow this app note for Learning Cycle. This is the most updated one. You will see RDIS, but is the same as RUP_DIS.

    https://www.ti.com/lit/an/slua777/slua777.pdf

    Regards,
    Jose Couso

  • Hi Jose Couso,

           I restarted the learning cycle and it fails again.

           Attached is the log file. I'm sure the log started before the learning cycles began.

           By the way, what is tool that you use to read the log and plot the figure? I didn't find it in the BMS.0815.BQ27441Log_2022.9.14.log

           Regards,

    Frank

  • Hello Frank,

    I have two follow up questions:

    1- What ChemID are you using? Did you make sure to find a good match by matching the exact manufacturer ID in the database or using the GPCCHEM tool?

    Here's the ChemID of your gauge. Using the right chemID is very important since it contains simulated voltage lookup tables which the gauge take for OCV measurements. It also has Ra tables. This is the first step before doing a learning cycle.


    2- How are you doing this first discharge step? 


    I see that in your log file, RUP_DIS is always set. To avoid setting this bit, please do not send the reset command stated in the first step, this will avoid setting the RUP_DIS bit. 

    To make sure the impedance track is running, please send a BAT_INSERT command.

    I see that you have constant power mode selected, I'd set it up to constant current mode since you are discharging with a constant current. 

    By the way, what is tool that you use to read the log and plot the figure? I didn't find it in the BMS


    I use excel sheet, I basically open the log file and plot the voltage, current, etc, to see the behavior.

    Regards,
    Jose Couso

  • Hi Jose Couso,

          1. The battery I use is a 3.8V lithium polymer battery, with charge voltage 4.3V.

          I didn't find the exact manufacturer ID in the database or using the GPCCHEM tool.

          I don't quite understand, the CHEM_ID in the bq27441-g1b is 0x0312. I choose bq27441-g1b because it's for 4.3V charged lithium polymer battery.

                 1) lithium polymer battery.

                 2) 4.3V

          Is there anything else I should consider to choose bq27741-g1b?

          2. I didn't send any command to the bq27441-g1b chip in the first discharge step.

          What I do is:

                  step1. start log

                  step2. load 27441_bit0bit1_TermVolti2900.gg.csv and write it to the chip

                  step3. start the learning cycle by clicking buttons in the BMS.

          I don't know why RUP_DIS is set. Is there anything wrong in my 27441_bit0bit1_TermVolti2900.gg.csv file?

         3.

    To make sure the impedance track is running, please send a BAT_INSERT command.

    I see that you have constant power mode selected, I'd set it up to constant current mode since you are discharging with a constant current. 

         I will send the BAT_INSERT command and use constant current mode in learning cycle and try again.

         Does it matters if I set constant current model in learning cycle and set constant power model in common use?

          

         Regards,

    Frank

  • Hello Frank,

    1. The battery I use is a 3.8V lithium polymer battery, with charge voltage 4.3V.

          I didn't find the exact manufacturer ID in the database or using the GPCCHEM tool.

          I don't quite understand, the CHEM_ID in the bq27441-g1b is 0x0312. I choose bq27441-g1b because it's for 4.3V charged lithium polymer battery.

    Please let me clarify some things for you. The gauge you are using is ROM based, meaning it does not support multiple chemistry cells. As stated in datasheet, the bq27441-g1b supports ChemID 0x0312. We have a Chemistry IDs database, and each chemID has unique characteristics (Unique OCV tables, and unique Resistance table, this will include flat region voltages). Without the appropriate ChemID, the gauge will not be accurate.

    I used your configuration gg file and log file to run a simulation to see if the RUP_DIS bit will clear. Yes, it did. This tells me that you are using the wrong chemistry cell for this gauge. 

    You have two options:
    1- find the 0x0312 cell which you will need the same manufacturer, model, and description. Please see below


    2- Obtain a flash single cell based gauge. I recommend the bq27z561. This gauge will allow you to program multiple ChemIDs, meaning you won't have to buy another cell. What you will need to do is follow out GPCCHEM tool, this tool will output the closes ChemID of your cell with respect to our database.

    GPCCHEM Tool link:
    https://www.ti.com/tool/GPCCHEM


         I will send the BAT_INSERT command and use constant current mode in learning cycle and try again.

         Does it matters if I set constant current model in learning cycle and set constant power model in common use?

    Trying again will probably end up in the same RUP_DIS error. Please make sure you first use the correct chemistry.

    As for the power modes, it does not matter for learning process, but when tuning your configurations for best gauging, it will.

    Regards,
    Jose Couso