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.

BQ40Z50EVM-561: Unable to perform learning cycle

Part Number: BQ40Z50EVM-561
Other Parts Discussed in Thread: EV2400, GPCCHEM, BQSTUDIO

Hi Everyone

I'm having trouble completing a learning cycle on my battery pack

My setup is
BQ40Z50R2 on a TI BQ40Z50EVM-561
SAFT MP174565 3.65 volt 4 Ah battery pack
TI EV2400 USB to I2C adapter
BQ Studio 1.3.101

I'm trying to follow the guidelines in slua848 and the video at training.ti.com/bq40z50-setup-and-going-production

My chem ID is 2131 which I believe is the correct one for my battery pack.

I change my battery pack to full using an external PSU.

I believe I have set the correct register values which you can see in the attached .gg and .reg files

From Section 4.2.1 in slua848 my CHG and DSG FETs are already on. I send GAUGE_EN from the commands Window
which sets the QEN, GAUGE_EN, and VOK bits. I send RESET which sets the RDIS bit but clears the VOK bit which
I didn't expect. At this point LStatus is 0x04.

I discharge the battery at C/2, when it reaches the terminate voltage the TD and FD bits are set and the DSG FET
is turned off. I disconnect the load and wait but the REST bit is never set.

Anyone got any ideas what I've done wrong ?

Thanks

Mark

first_discharge.zip

  • Hello Mark,

    Thanks for providing a log. I have a few thoughts based on the log. Firstly, since your learned status is 4, it isn't time for the discharge yet. The process is charge and relax to go from 4->5, then discharge and relax takes you from 5->6. So the first priority should be the charge and Qmax update. I am actually a bit confused at the order here. Are you disconnecting the battery to charge it? The basic order should be:

    1. Discharge until empty
    2. Rest and send commands to start cycle
    3. Charge and rest (4->5)
    4. Discharge and rest (5->6)

    Can you attach a log of the charging in particular? I think that is likely where the problems are happening. Also, how good of a match is the CHEMID? Is it the same exact battery you are using or did you run GPCCHEM to select it?

    thanks,

    Alex M.

  • Hi Alex

    Thanks for the reply, that's very interesting.

    First off my battery is listed in the chem IDs table in BQ Studio so I think it's an exact match.

    I'm starting with a fully charged battery, which I have charged on a separate supply, and I have only tried to do the first discharge at the moment.

    In section 4.2.1 of TI's SLUA848 document it says send the GAUGE_EN and RESET commands before the first discharge (number 1 in your list above)

    My problem is that I don't see the REST bit set between steps 1 and 2 above.

    I'll try again and continue with step 2 this time and get a log, could you confirm which commands I should send to start the cycle ?

    Regards

    Mark

  • Hello Mark,

    The CHEMID should be good since its an exact match. Sometimes people will pick a battery that has the same chemistry/capacity and that is no guarantee for a good match. The exact same manufacturer/part# should be good though. 

    I see, it does appear you rested for more than enough time and the flags just never set. VOK never set at the beginning of discharge and I'm a bit unsure as to why. However, if the battery is fully discharged and has been resting for >5 hours, I believe it would be best if you just send the GAUGE_EN command to force an OCV reading. You may have to issue a reset command/toggle it to make this work though. It can be a bit annoying to get the bits all correct so I suggest this exact order:

    1. Take gauge with empty and relaxed battery
    2. Ensure Gauge_EN is off/disabled
    3. Reset
    4. Toggle Gauge_EN on again

    This forces an OCV reading and qualifies it, so let me know if it doesn't for you.

    Please log the charge (including a small window before) after forcing the OCV reading and post it if you have any issues. Also, let me know if the bits aren't setting like you expect. 

    thanks,

    Alex M.

  • Hi Alex

    I tried to charge the battery as you suggested above but this time I don't see the FC & TC bits get set even though the charging current has dropped below the taper current. I have attached some log files

     first_charge.zip

  • Hello Mark,

    Here is a graph of the charge:

    There are three main conditions to terminate:

    • Cell voltage within range of termination voltage
    • Avg current < taper current
    • >0.25mAH of capacity accumulated for two windows

    It looks like you meet the first two conditions, but may fail the last. It is hard to tell though, since you do accumulate some charge. I think the best approach would be to increase the taper current slightly to something like 50-60mA. You can discharge somewhat and try charging again to see if it terminates. It looks like it came very close to terminating, so let me know if it doesn't after making this change. 

    thanks,

    Alex M.

  • Thanks for the suggestion but something odd has happened. I discharged the battery to around 60%, then changed the taper current to 55mA. When I changed to 55mA the CHG & DSG FETs turned off. I tried charging but with the FETs remain off and charging does not start.

    8311.registers.log
    Thu Apr 21 10:22:52 BST 2022
    
    Device Version Info = 4500_2_08
    BQZ Device Name = bq40z50R2
    BQZ Firmware Version = V2_08_BLD50
    
    Design Capacity = 4000
    Design Voltage = 3650
    Specification Info = 0x0031
    Manufacturer Date = 1980-1-1
    Serial Number = 0x0001
    Manufacturer Name = Texas Instruments
    Device Name = bq40z50-R2
    Device Chemistry = LION
    
    Sample,DateTime,ElapsedTime,ManufAccess,RemCapAlarm,RemTimeAlarm,BattMode,@Rate(@),@TimeFull,@TimeEmpty,@RateOK,Temperature,Voltage,Current,AvgCurr,MaxErr,RSOC,ASOC,RemCap,FullChgCap,RunTimeEmty,AvgTimeEmty,AvgTimeFull,ChgCurr,ChgVolt,BattStat,CycleCnt,MaxTurboPwr,SusTurboPwr,MaxTurboCurr,SusTurboCurr,SoH,OpStatA,OpStatB,TempRange,ChgStat,GaugeStat,ITStat,MfgStat,SafetyAlertAB,SafetyStatAB,SafetyAlertCD,SafetyStatCD,PFAlertAB,PFStatAB,PFAlertCD,PFStatCD,CellVolt1,CellVolt2,CellVolt3,CellVolt4,vBAT,vPACK,CellCurr1,CellCurr2,CellCurr3,CellCurr4,CellPower1,CellPower2,CellPower3,CellPower4,Power,AvgPow,IntTemp,TS1Temp,TS2Temp,TS3Temp,TS4Temp,CellTemp,FETTemp,GaugeTemp,FltRemQ,FltRemE,FltFullChgQ,FltFullChgE,NoLoadRemCap,TrueRemQ,TrueRemE,InitialQ,InitialE,TrueFullChgQ,TrueFullChgE,T_sim,T_ambient,RaScale1,RaScale2,RaScale3,RaScale4,CompRes1,CompRes2,CompRes3,CompRes4,PackGrid,LStatus,CellGrid1,CellGrid2,CellGrid3,CellGrid4,StateTime,DOD0_1,DOD0_2,DOD0_3,DOD0_4,DOD0 Passed Q,DOD0 Passed E,DOD0 Time,DODEOC_1,DODEOC_2,DODEOC_3,DODEOC_4,QMax1,QMax2,QMax3,QMax4,QMaxDOD0_1,QMaxDOD0_2,QMaxDOD0_3,QMaxDOD0_4,QMaxPassedQ,QMaxTime,Tk,Ta,RawDOD_1,RawDOD_2,RawDOD_3,RawDOD_4,CBTime1,CBTime2,CBTime3,CBTime4,CBDOD_1,CBDOD_2,CBDOD_3,CBDOD_4,CBTotalDODChg,SOH_FC_Q,SOH_FC_E,LogRowTime(ms),LogStatus
    1,2022-04-21 10:22:56,4.007,0x6101,300,10,0x6001,0,65535,65535,1,23.4,3792,0,0,0,65,65,2598,4000,65535,65535,65535,0,0,0x00C0,5,-5197,-2754,-16000,-8000,97,0x6101,0x0000,0x08,0x0004,0x40,0x0014,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,3792,0,0,0,3808,0,0,0,0,0,0,0,0,0,0,0,23.4,23.1,23.2,23.2,23.3,23.4,23.1,23.4,2598,922,4000,1478,2595,2595,920,1402,556,4000,1477,23.4,23.2,1000,0,0,0,0,0,0,0,4,4,4,0,0,0,2201,5744,0,0,0,3,1,9,0,0,0,0,4000,4400,4400,4400,0,0,0,0,3,9,1.0,1000,5744,0,0,0,0,0,0,0,0,0,0,0,0,3883,1423,1068,SUCCESS
    2,2022-04-21 10:23:00,8.008,0x6101,300,10,0x6001,0,65535,65535,1,23.4,3792,0,0,0,65,65,2598,4000,65535,65535,65535,0,0,0x00C0,5,-5197,-2754,-16000,-8000,97,0x6101,0x0000,0x08,0x0004,0x40,0x0014,0x0018,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,3792,0,0,0,3806,4,0,0,0,0,0,0,0,0,0,0,23.4,23.1,23.2,23.3,23.3,23.4,23.1,23.4,2598,922,4000,1478,2595,2595,920,1402,556,4000,1477,23.4,23.2,1000,0,0,0,0,0,0,0,4,4,4,0,0,0,2205,5744,0,0,0,3,1,9,0,0,0,0,4000,4400,4400,4400,0,0,0,0,3,9,1.0,1000,5744,0,0,0,0,0,0,0,0,0,0,0,0,3883,1423,1034,SUCCESS
    

  • Hello Mark,

    I can see from the log that XCHG and XDSG went high. There are quite a few conditions that can cause the gauge to disable the FETs. Unfortunately, I don't see any protection flags or any obvious causes. I also don't see any way how changing the taper current setting could do this. In the TRM there is a list of every possible way to trip XCHG:

    It may be something as simple as your computer going to sleep or bumping the pres pin. I would try sending the FET_EN command twice. The first to turn it off, and the second to turn it back on which should hopefully set XCHG and XDSG to 0. Of course, if there is a protection condition still met it will turn back high again. In either case, an active log and .GG file would help debug an issue like this. 

    thanks,

    Alex M.

  • Hi

    I tried sending two FET_EN from BQStudio but that didn't reset the XCHG and XDSG bits.

    Is it possible that the gauge has some memory of all previous failed attempts at the learning cycle, is it possible to clear the gauge of all the data ?

    test_file.zip

  • Hello Mark,

    I can't seem to find anything in the log or .GG that explains this. I assume you already tried to reset the gauge? My fear is that there may be a HW issue or damage, but first I would try re-uploading the basic .SREC. On the BQ40z50-R2 product page, you can download this:

    And upload the .SREC to the gauge. This is basically a way to clear all of the data/full reset like you described. Let me know if doing this brings the gauge back.

    As a last comment, I can see in the logs that there is a lot of noise/spurious current being read. A re-calibration may help fix that issue, especially since the current trends towards a certain value, there may be an offset issue.

    thanks,

    Alex M.