I have a lead-acid battery on which I am using a voltage divider to measure the remaining charge.

Voltage Divider

enter image description here

Its my understanding that an example battery could discharge from 100-0% over say 10.5V - 12V.

What I would like to do now is try to increase the resolution of output of the circuit. So that an input of 10.5V-12V would be linearly related to an output of 0-5V. How can this be done?

  • 1
    \$\begingroup\$ Note that a 12V lead acid battery may generate 14V or so just after it has been charged, and have 15V in at the end of the charge cycle ... you may want the ADC range to take this into account. \$\endgroup\$
    – user16324
    Commented Dec 11, 2012 at 15:45
  • 1
    \$\begingroup\$ Note that using terminal voltage alone is a poor measure of lead acid battery state of charge (SOC), unless you can schedule measurements with no load applied and the battery stays at a consistent temperature. (Terminal voltage is a function of lots of things, including SOC, temperature, load, discharge rate, etc. Search for Peukert equations on lead acid batteries.) \$\endgroup\$
    – HikeOnPast
    Commented Dec 11, 2012 at 18:31

2 Answers 2


To achieve this, you have two main options: You can use an opamp, which can remove the DC bias and amplify the difference, or you can use a differential ADC.

For the former option, Op Amps for Everyone is an excellent reference. The differential amplifier in section 3-6 is an example of what you want; you can generate the reference voltage with a resistor and zener diode, or a resistor divider from a known input voltage.

The other option is to use a differential ADC. Presumably you're using a microcontroller to digitize this, and most microcontrollers support differential inputs. Input the reference voltage for the negative terminal and the divided voltage for the positive terminal and you're sorted.

  • \$\begingroup\$ I am using a microcontroller, are you saying I can adjust the resolution of the analog input on the board? That would be much easier. \$\endgroup\$ Commented Dec 11, 2012 at 15:49
  • \$\begingroup\$ @jimmyjambles I'm saying that your MCU probably supports differential ADC, in which case you feed a reference voltage - in this case the minimum possible voltage - into a terminal on your MCU, and it will measure the difference. \$\endgroup\$ Commented Dec 11, 2012 at 15:51
  • \$\begingroup\$ AREF pin, got it \$\endgroup\$ Commented Dec 11, 2012 at 15:52
  • \$\begingroup\$ That's another way to adjust the ADC. If it's an AVR that you're using, the AREF sets the upper limit on the ADC. \$\endgroup\$ Commented Dec 11, 2012 at 15:53

Simple expanded scale voltmeters sometimes use a zener diode to subtract a "constant" offset and transform the range of interest down to a lower absolute voltage.

Of course the voltage drop on a zener is not truly constant, but ultimately dependent on the current through it. However that will change only slightly over the input voltage range of interest.

If you are willing to build an active circuit, you could use an op-amp subtractor.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.