For battery powered systems it can be useful to know something about the state of the battery in order to predict remaining battery life. With specific charge/discharge information, you could also manage battery consuming resources to maximize battery life. There are integrated circuits to help with either approach. For simple charge or discharge information, a high side current sensor such as the LT6107 from Linear Technology (now part of Analog Devices) may be all you need. That won’t tell you what the battery state is but it will give you charge or discharge current depending on how you connect it – it isn’t bi-directional.
That is a rather simple approach, although bi-directional devices are also available. You get an analog output which you will need to digitize and if you want to accumulate current to measure energy (assuming you know the voltage) you will need to perform repeated measurements and integrate the result with your microcontroller.
A more sophisticated device would be something like the LTC2941 which has an I2C/SMBus interface and will perform charge accumulation for you (using the “Coulomb Counter”). So, you will be able to read the accumulated current (charge) of the battery when being charged or discharged.
Alarm levels can be set to alert on either a high or low level of accumulated charge in your battery. The accuracy of such a device relies on having a known starting point for the charge accumulation register – either a flat battery or fully charged one. Until you have such a starting point you cannot make useful predictions. Also, if you rarely have a new full or empty battery state any errors will slowly accumulate and create inaccuracy. You also won’t have an instantaneous current value – only accumulated values – so you cannot use it for managing battery consuming resources.
A more sophisticated device would be something like the Maxim Integrated MAX34407. This 4 channel power accumulator measures and accumulates power on 4 channels. It measures power, not just current, by also measuring the voltage and multiplying by current to get power and then accumulate it. A “slow” mode reduces the IC supply current to just a few microamps by sampling 8 times per second instead of 1024. Price is around $3.08 in 2500+ quantities.
If you simply want to know the state of your battery and don’t want charge/discharge information, then a battery voltage monitor may be all you need. A “simple” battery voltage monitor will not be very accurate due to the effects of temperature and internal resistance when being discharged so more sophisticated monitors are available. Maxim Integrated have a range of “Battery Fuel Gauges” with varying algorithms such as “ModelGauge”, “ModelGauge M3” or M5 or M5 EZ. The differences are explained here.
Finding the right product section in manufacturers’ product ranges is not always easy. For Maxim Integrated they are in the “Battery Fuel Gauges” section in the “Battery Management” section of the Power products category. A simple device using ModelGauge such as the MAX17048/9 monitors only voltage whereas the M3/M5 devices also monitor current. They are specific to the battery chemistry and number of cells with the MAX17048 being for a single Li+ cell and the MAX17049 being for two Li+ cells.
They monitor battery voltage but rely on the host microcontroller to monitor battery temperature. Cost is around $1.28 in quantities of 1000+. A ModelGauge M3 device such as the MAX17047 is a lot more sophisticated with current monitoring, battery temperature monitoring (with external NTC) and a more sophisticated algorithm. As with the MAX17048, the standby current is very low and operating current around 25µA which isn’t too bad (depending on your application and battery size).
As you would expect from a more sophisticated device, the price is higher at around $1.94 in 1000+ quantities. Numerous other devices are available from various manufacturers to cover quite a range of different requirements.