MAX17055
Production
The MAX17055 is a low 7μA operating current fuel gauge which implements Maxim ModelGauge™ m5 EZ algorithm. ModelGauge m5 EZ makes fuel gauge implementation...
Datasheet
MAX17055 on Analog.com
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?
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.
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.
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).