Hi,
We had some difficulties in understanding the algorithms of bq27x00’s discharge rate and temperature compensation.
The explanation in SLUA338 on the setting of DCOMP and TCOMP was understandable. But regarding how DCMPADJ and TCMPADJ are updated, the algorithms for these two are very different:
|
DCMPADJ |
TCMPADJ |
When Down to EDV1 |
DCMP@last EDV1 detection |
TCMP@this EDV1 detection |
When UP to full |
DCMP@the most recent EDV1 detection |
0 |
We wasn’t able to figure out the rationale for the differences. The considerations seem quite complicated and can involve multiple bifurcations. For example, if for 59 minutes of an hour the AI is 100mA, but only in the last 1 minute AI increased to 500mA and the battery reaches EDV1 at the 60th minute, do we use the DCMP computed with 500mA current to update DCMPADJ when the battery is charged to full next time? If we do that, and in the next discharging cycle the current is a constant 200mA which by battery specification we should compensate, however the DCMP calculated from 200mA is always smaller than the DCMPADJ calculated 500mA when the battery reached EDV1 last time. Then since
CACD = NAC - (DCMP - DCMPADJ), if DCMP > DCMPADJ
CACD=NAC, if DCMP<=DCMPADJ
It is the second case now and we never going to do any compensation during this discharge cycle. Clearly this is erroneous and it looks that bq27x00 has been fooled or misled by the contrived last-minute-before-EDV1 500mA current into an inaccurate mode which ignores due discharge compensation.
Could someone provide insights on how TCMPADJ and DCMPADJ updating schemes are designed?
Noah