Many of my designs require batteries for portable operation. If the batteries are rechargeable, often one of the requirements is to have some form of capacity readout. Additionally, users will want to know voltage, current, charge / discharge cycles, etc. The best way to implement this in a design is to use a gas gauge IC. Texas Instruments makes several of them for different battery chemistries, and I’ve used two in the past:
BQ2060 – This is a dual chemistry chip for NiMH or Lithium.
BQ34Z100PWR – This was selected because of the need for a LiFePO pack.
The BQ34Z100 turned out to be a big disappointment. It was not easy to program the chip’s non-volatile memory over the I2C interface, and the real deal-killer was its tendency to roll the charge count over to zero after plugged in and doing a maintenance charge after a few days. This was especially onerous, as it took days to recreate the bug, therefore testing fixes took days instead of hours.
The BQ2060 has been implemented in multiple designs, and suffers from none of these problems. It is easy to program over the I2C bus, and it has no performance issues that I know of. I created a spreadsheet that generates code that I include in a C header file that allows me to tailor the chip to a specific battery pack. The only real problem with the chip is the documentation. The reference schematic in the datasheet leaves out some key elements (IMHO). In order to get a complete schematic, I had to dig through and find the schematic for the evaluation board. From this, I was able to figure out how it needed to be hooked up in a larger system.
If you’d like a pdf of the schematic that I used, you can use the form at the bottom of the page to get it for free.