Post Go back to editing

How to setup a proper model on MAX17055

Category: Software
Product Number: MAX17055
Software Version: NA
Hi,
 
We have an battery application that uses a BQ25890 for charge control and a MAX17055 for fuel gauge. I am using option 1 in the software implementation guide found here
 
 
Which means that I only set 4 parameters, DesignCap, dQAcc, IchgTerm and VEmpty.
 
For my battery these parameters are given by the manufacturer (Schive):
 
DesignCap: 19600 mAh
Rec. Discharge cut off: 2.5V -> which I use as VEmpty VE
Nominal voltage: 3.63V -> which I use as VEmpty VR
Rec. Charge cut off: 392 mA -> On the BQ25890 I can not set this value as cut off current because of the resolution in the register so I am using 448mA which was the closest
 
To the DesignCap register (0x18) i am writing the full  value, that is 19600 (0x4c90).
 
To the VEmpty register (0x3a) I am writing the value 0x7d5a which is produced by these macros:
 
#define MAX17055_VEMPTY_VE_BITMASK_POS 7
#define MAX17055_VEMPTY_VR_BITMASK_POS 0
#define MAX17055_VEMPTY_VE(value) (((uint16_t)(value / 0.01)) << MAX17055_VEMPTY_VE_BITMASK_POS)
#define MAX17055_VEMPTY_VR(value) (((uint16_t)(value / 0.04)) << MAX17055_VEMPTY_VR_BITMASK_POS)

 
To the IchgTerm register (0x1e) I am writing the value 448.
 
And to the dQAcc register (0x45) I am writing designcap/32 (19600/32) as specified in the implementation guide.
 
I have an issue:
 
The SOC value reads 4% when the voltage measured with the MAX17055 device is about 3.65V (the BQ25890 device agrees with the voltage measurement). This is with almost no load (~15mA average). From my understanding this should be about midway (SOC = 50%) point for my battery. I still see this after I can see that the cycle counter has increased by 1 (that is, reading register 0x17 and divide that number by 100), at this point the model should have been recalculated as stated in your datasheet. I need to able to utilize the full capacity of my battery, so I need some help to understand what I am doing wrong here. I guess I should se 4% somewhere between 2.75V and 3V?
I later discovered that I forgot to account for Rsense

I found the table in the datasheet that gives the resolution for each of the register types.

I am calculating design capacity like this:

(DesignCap * Rsense) / 5 = (19600 * 10) / 5 = 39200

and current IchgTerm this:

(Current * Rsense) / 1.5625 = (448 * 10) / 1.5625 = 2867

VEmpty seem to to be calculated like I have done before?

I still get wrong reading though, but now my SOC is typically reading 255 after I have shifted the output of the RepSOC register to the right by 8.

My Rsense value is 10mOhm

But still it seems like have to do at least a few cycles before I have a battery model that works, and it does not always work. I can not send out something like that to my customers. It seems like I need a full model (option 3), and I do have one device that seems to have generated a model that works correctly with my battery, so I was wondering if I can read the full model from that device and move it to a new one?

Parents
  • As far as I know this IC the problem is related with dQAcc register.

    Check value of this register  (0x46) after ModeCFG reset.

    In my case all DesCap values bigger than  0x18 = 28030 make unpredictable results.

    I have run some test with different values of 0x18 register.

    Capacity = 2787mAh, 0x18 = 27870, 0x45 = 869 
    Capacity = 2788mAh, 0x18 = 27880, 0x45 = 870 
    Capacity = 2789mAh, 0x18 = 27890, 0x45 = 870 
    Capacity = 2790mAh, 0x18 = 27900, 0x45 = 870 
    Capacity = 2791mAh, 0x18 = 27910, 0x45 = 871 
    Capacity = 2792mAh, 0x18 = 27920, 0x45 = 871 
    Capacity = 2793mAh, 0x18 = 27930, 0x45 = 871 
    Capacity = 2794mAh, 0x18 = 27940, 0x45 = 872 
    Capacity = 2795mAh, 0x18 = 27950, 0x45 = 872 
    Capacity = 2796mAh, 0x18 = 27960, 0x45 = 872 
    Capacity = 2797mAh, 0x18 = 27970, 0x45 = 873 
    Capacity = 2798mAh, 0x18 = 27980, 0x45 = 873 
    Capacity = 2799mAh, 0x18 = 27990, 0x45 = 873 
    Capacity = 2800mAh, 0x18 = 28000, 0x45 = 874 
    Capacity = 2801mAh, 0x18 = 28010, 0x45 = 874 
    Capacity = 2802mAh, 0x18 = 28020, 0x45 = 874 
    Capacity = 2803mAh, 0x18 = 28030, 0x45 = 874 
    Capacity = 2804mAh, 0x18 = 28040, 0x45 = 64661 
    Capacity = 2805mAh, 0x18 = 28050, 0x45 = 64661 
    Capacity = 2806mAh, 0x18 = 28060, 0x45 = 64661 
    Capacity = 2807mAh, 0x18 = 28070, 0x45 = 64662 
    Capacity = 2808mAh, 0x18 = 28080, 0x45 = 64665 
    Capacity = 2809mAh, 0x18 = 28090, 0x45 = 64665 
    Capacity = 2810mAh, 0x18 = 28100, 0x45 = 64666 
    Capacity = 2811mAh, 0x18 = 28110, 0x45 = 64666 

    So in your case try change Rsense resistor  from 10 to 5mR.

    This change will decrease reg  0x18 value to safe range < than 28030

    In my project I have used 50mR resistor and  battery with 5200mAh.

    Reg 0x18 = 52000, 0x45= ~65083. Batery capacity  (RepSOC ) was invalid (0% or 255%).

    I have changed Rsense value to 10mR, reg 0x18 = 10400, reg 0x45 = 323.

    After this modifications max17055 return stable results (RepSOC as I expect).

    Hope this will help with your case.

Reply
  • As far as I know this IC the problem is related with dQAcc register.

    Check value of this register  (0x46) after ModeCFG reset.

    In my case all DesCap values bigger than  0x18 = 28030 make unpredictable results.

    I have run some test with different values of 0x18 register.

    Capacity = 2787mAh, 0x18 = 27870, 0x45 = 869 
    Capacity = 2788mAh, 0x18 = 27880, 0x45 = 870 
    Capacity = 2789mAh, 0x18 = 27890, 0x45 = 870 
    Capacity = 2790mAh, 0x18 = 27900, 0x45 = 870 
    Capacity = 2791mAh, 0x18 = 27910, 0x45 = 871 
    Capacity = 2792mAh, 0x18 = 27920, 0x45 = 871 
    Capacity = 2793mAh, 0x18 = 27930, 0x45 = 871 
    Capacity = 2794mAh, 0x18 = 27940, 0x45 = 872 
    Capacity = 2795mAh, 0x18 = 27950, 0x45 = 872 
    Capacity = 2796mAh, 0x18 = 27960, 0x45 = 872 
    Capacity = 2797mAh, 0x18 = 27970, 0x45 = 873 
    Capacity = 2798mAh, 0x18 = 27980, 0x45 = 873 
    Capacity = 2799mAh, 0x18 = 27990, 0x45 = 873 
    Capacity = 2800mAh, 0x18 = 28000, 0x45 = 874 
    Capacity = 2801mAh, 0x18 = 28010, 0x45 = 874 
    Capacity = 2802mAh, 0x18 = 28020, 0x45 = 874 
    Capacity = 2803mAh, 0x18 = 28030, 0x45 = 874 
    Capacity = 2804mAh, 0x18 = 28040, 0x45 = 64661 
    Capacity = 2805mAh, 0x18 = 28050, 0x45 = 64661 
    Capacity = 2806mAh, 0x18 = 28060, 0x45 = 64661 
    Capacity = 2807mAh, 0x18 = 28070, 0x45 = 64662 
    Capacity = 2808mAh, 0x18 = 28080, 0x45 = 64665 
    Capacity = 2809mAh, 0x18 = 28090, 0x45 = 64665 
    Capacity = 2810mAh, 0x18 = 28100, 0x45 = 64666 
    Capacity = 2811mAh, 0x18 = 28110, 0x45 = 64666 

    So in your case try change Rsense resistor  from 10 to 5mR.

    This change will decrease reg  0x18 value to safe range < than 28030

    In my project I have used 50mR resistor and  battery with 5200mAh.

    Reg 0x18 = 52000, 0x45= ~65083. Batery capacity  (RepSOC ) was invalid (0% or 255%).

    I have changed Rsense value to 10mR, reg 0x18 = 10400, reg 0x45 = 323.

    After this modifications max17055 return stable results (RepSOC as I expect).

    Hope this will help with your case.

Children
  • Thanks for the answer, yes we where recommended to change from 10mOhm to 5mOhm in our design which seems to seems to help. I also discovered the SOCHold register which was also necessary for us to keep the SOC above 5% until we reach the correct battery voltage. Our application will go to sleep at 5% and that made it impossible to train the MAX IC correctly. I would really like if there was more references between the different MAX17055 documents, because I was aware of the datasheet and the software implementation guide, but only discovered the user guide this week. Which is the only document that actually documents the SOCHold register and other important registers (other than just telling that it exist in a table).