I wish to monitor a battery using an Arduino. I can successfully measure the value using an Arduino via its Analog port, which gives me a 1024 bit value range.

Where I'm stuck is how to allocate that 1024 bits to a small portion of the voltage range to improve the accuracy.

By using a simple resistor divider I can measure the battery voltage from say 14.5V to 0V and the 1024 bit are therefore spread across that.

What I would prefer to do is only measure from 11.5V to 14.5V and have the 1024 bits associated with that range, make it more accurate.

I can't for the life of me think of how to do that.

Any help would be greatly appreciated.

Thank you.

  • 1
    \$\begingroup\$ Have you considered a differential amplifier, measuring with respect to an offset (e.g. 11.5V)? \$\endgroup\$ Apr 7, 2023 at 4:14
  • \$\begingroup\$ it's 10 bits, not 1024 bits \$\endgroup\$
    – jsotola
    Apr 7, 2023 at 4:42
  • \$\begingroup\$ Yes it is 1024 values from 10 bits. \$\endgroup\$
    – Markus
    Apr 8, 2023 at 5:24

1 Answer 1



simulate this circuit – Schematic created using CircuitLab

This circuit will produce 0-5 VDC with an input of 10-15 VDC.

Battery voltage expander

  • 1
    \$\begingroup\$ Thank you for the very detailed and helpful answer, that's exactly what I was after. \$\endgroup\$
    – Markus
    Apr 8, 2023 at 5:27

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.