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.

BQ78350-R1: Wrong values when logging the current

Part Number: BQ78350-R1
Other Parts Discussed in Thread: BQ78350, BQSTUDIO

Hello!

I've tried to built a logger for bq78350 with ESP8266 (ArduinoIDE) to log multiple batteries in parallel. In general, this is nothing new for me, I never had problems reading and logging values, but in this project I observe a strange behaviour that I can't understand.

I have 4 Arduino/ESP8266 boards, each connected to one battery independent. I read a sequence of values every 3 seconds, put the values in a string and publish them over MQTT.
The sequence is:

  • DAStatus1 (for cell voltages) / read block, 0x44 0x0071
  • DAStatus2 (for temperatures) / read block, 0x44 0x0072
  • Voltage / 0x09
  • Current / 0x0A
  • RelativeSOC / 0x0D
  • AbsoluteSOC / 0x0E
  • RemainingCapacity / 0x0F
  • FullChargeCapacity / 0x10

All vaues are always right except the current.
I'm charging the 4 batteries with constant 5000 mA and the shown values are different in all of the logs. The deviation is nearly constant over time in one each, but different for each battery. The values instead of 5000 mA are settling at 4600 mA, 5800 mA, 5300 mA, 4700 mA in the logs.

When I disconnect my logger and use bqStudio, all values are right. The current is shown as ~5000 mA and if I use Advanced Comm SMB to call 0x0A the value is also right. After reconnecting the logger, the value is read correct for a short time, then it is wrong again. The following image shows one log of charging with 5000 mA. The large gap was the test with bqStudio, the other gaps are resets after small modifications in the code of the logger to test. The deviation reaches a constant value after some time. At the end of the log, the current decreases at the end of the charging process. It looks right, but there is also a deviation to the actual current.

Here is another example. First, the deviation is high and settles at a constant value. Suddenly, the value is right for a short time, then its wrong again.
After a short period of discharging the battery, the value was right for the rest of the test.

For all test cases, I can clearly tell that the current was actually 5000 mA.

I have checked the following things:

  • adding a 20ms delay between each I2C / SMB requests - the behaviour is exactly the same
  • making sure that I read current, not average current
  • using the exact same function to read current and all other values
  • checking the other logged values - everything except the current is right
  • using Advanced Comm SMB in bqStudio as reference (so, the used command an calibration of the battery is right)
  • reading the current multiple times on different positions in the sequence - the raw value as always the same
  • checking the raw values that are returned from the battery - the calculation of the current is right

I precisely checked my code, checked the raw values and all calculations.It looks like the bq78350 is actually sending wrong values, but I can't understand why. When I use an Arduino to log values I have to be able to rely on the results, so it would be important for me to find the cause for this problem.

It would be great if someone has an idea what could cause this and help me understanding and solthing the problem.
Thank you!

Best regards
Georg Hoffmann