Electronic – How to measure ~16V battery voltage in an ultra low power system

adcbatteriesmicrocontrollerpower

I am trying to estimate remaining battery life in a low power system. The battery is very well characterized so that reading the battery voltage will be sufficient for my needs to estimate remaining battery life.

However, the problem is that the system is comprised of low voltage chips (3.3V – 1.2V) and the battery voltage varies from 16V to 7V (dead). Any solution that I use to monitor the voltage must have negligible power overhead itself.

I am looking for

  1. A chip that can provide the voltage to a digital interface (I2C, SPI, etc.)
  2. A circuit solution that provides an ADC value that is accurate across the ~10V swing and can interface with a 1.8V microcontroller. (maybe resistor divider + zener + ADC)

Any ideas?

Best Answer

There are various options, one reasonably simple circuit is this (bias/filter caps and bias voltage circuit not shown for simplicity):

Level Shift

Simulation:

For both graphs the x axis shows the input voltage - top graph is the input voltage itself (not necessary really), and the bottom graph is the output voltage versus the input voltage.
Note that the circuit inverts the signal, so 1.8V = 7V in and 0V = 16V in, but this is easily dealt with in a micro.

Level Shift Simulation

The circuit divides by 5 and shifts so the 1.8V span is between 0 and 1.8V. To learn how to calculate and design such circuits, OpAmps for Everyone is a good free book to start with.