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.

Reading voltage/current through BQ34Z110 using I2C

Other Parts Discussed in Thread: BQ34Z110, EV2400

Hello,

I'm having trouble reading accurate voltages and currents for the BQ34Z110. I use the procedure below to read a voltage:

  1. Calibrate the BQ34Z110 through the bq eval software. (Coulomb counter, voltage, board offset, and pack current)
  2. Disconnect the BQ34Z110 from the EV2400 (but keeping the battery and load connected) and connect the BQ34Z110 to the I2C master (in my case, an Arduino Mega)
  3. Read data flash to ensure the boards are connected properly (I read data flash subclass 112 to compare the security data)
  4. If that all checks out, send 0x0021 to address 0x00/0x01 (0x21 -> 0x00, 0x00 -> 0x01) to enable Impedance Track algorithm
  5. Then I write 0x08 then 0x09 to the bus, and wait for a little bit.
  6. Then read 2 bytes form the bus and concatenate/print them to the console.

I consistently print out 12032 mV with no load drawing, when the board and the battery are reading around 12220 mV. With a .5 - 1A current drawing, the print out fluctuates a lot before settling around 200mV offset from the measured board/battery voltages. Same goes for instantaneous and average currents.


When I try to read the current through the bq eval software, it is very accurate. Why is there so much discrepancy between the bq GUI and the I2C interface?

  • Sonny
    This looks like a grounding problem. The different communications interfaces must be loading the ground to the module differently and causing as offset. Maybe you can monitor voltages at various points on the PCB and disconnect and connect the adapters to see whether the voltage fluctuates. This may provide a clue.
    Tom
  • We tied the ground from our master to the BQ34Z110 board and just checked - all are connected. We checked everywhere we could find a GND symbol on both boards. I checked the voltages across the battery, bat+/bat- on the board, and across the sense resistor, and those measurements match. Is there anywhere else I should be looking?

    We know the I2C communication between the master and slave is working somewhat, because we are able to accurately read the data flash. Its just grabbing a measurement from the BQ board through our Arduino interface that is giving us issues.
  • Is there a possibility that we can take some time to talk in private? maybe that way we can fix all the problems and move forwards