I need to measure a voltage range of 10.5-15V to 0.025mv accuracy. This is a resolution of 180,000 - which is huge i know. The reason for this is because I will be measuring the voltage drop across a shunt (0.25mohm) to 0.1A accuracy. The battery voltage (deep cycle) will vary from 10.5 to 15V.

I know how to scale the voltage down from 15V to 5V with a voltage divider, but this puts 10.5 in the middle of the ADC's range.

I saw this post:

How can I measure voltage in range -15 V to 50 V with an ADC in a microcontroller in a single circuit arrangement for scaling?

and this one:

ADC for measuring 0-5V but connected to 3.3V device

which suggest that this can be done with 3 resistors, but I can't work it out. What is the name of this little network?

  • \$\begingroup\$ One thing to keep in mind is that when measuring a current shunt it's normally easier to measure the voltage difference across it so then the battery voltage won't matter, and you'll be just measuring the small voltage difference. \$\endgroup\$
    – PeterJ
    Jan 31, 2014 at 11:44
  • \$\begingroup\$ What is the maximum current that needs to be sensed, and does sensing need to be bidirectional (charging and discharging current) or unidirectional? Also, is the 0.25 milliohm a hard limit, or would a 1 milliohm or higher shunt resistor be acceptable? If not, why not? \$\endgroup\$ Jan 31, 2014 at 12:00
  • 1
    \$\begingroup\$ You accuracy requirement seems excessive to me. Let's take the 10.5V as reference. Do you really need to measure the full scale (4.5V) up to 0.025mv accuracy? That is 5ppm! Do you intend to use a lab-grade voltage reference? I suspect (hope) you need that step only near the lower end of the scale! \$\endgroup\$ Jan 31, 2014 at 12:21
  • \$\begingroup\$ The numbers sounds strange to me. It looks like you want to measure the current consumption of a battery charger, during its operation. In order to do that, you will measure the voltage in a shunt resistor, which is good. If you place the shunt resistor in series with the load, you would measure a voltage of 10.5V when the current will be 10.5/0.25E-3 = 42kA ! \$\endgroup\$
    – RawBean
    Jan 31, 2014 at 12:31
  • \$\begingroup\$ Like the above comment, how do you produce a 10.5V across a 250nOhm resistor anyway? If your end product is to measure current using shunt resistor, there are things made specifically to do that, ie. current sense amplifier. \$\endgroup\$
    – Pyxzure
    Jan 31, 2014 at 12:48

2 Answers 2


Restating the underlying problem statement:

To read the current flowing through a 0.25 milliohm current shunt resistor on the high side of a battery powered circuit, with an accuracy of 0.1 Amperes.


  • Battery voltage can vary from 10.5 to 15 Volts
  • Assumption: Unidirectional current measurement is required, not bidirectional
  • OP would like to measure to a sub-millivolt accuracy using a 3-resistor passive configuration

For a minimum measurement unit of 0.1 Amperes, voltage across shunt = 25 microvolts. Even ignoring the common mode voltage of 10-15 Volts, a 16-bit ADC with a 5 Volt reference gives a resolution of 76.2 microvolts per count. Thus the desired resolution can not be achieved with a 16-bit ADC using passive components alone. In short, the specifications in the question are untenable unless a 24 bit ADC is predicated.

Practical solutions:

  1. Hall effect, isolated current path, linear current sensors:

    For measuring current of up to 20 or 30 Amperes full-scale, Hall Effect linear current sensors such as the Allegro ACS713 family provide unidirectional isolated high-side current measurement, with an internal shunt resistance of 1.2 milliohms along the current path. For bidirectional current sensing, the ACS712 provides the same functionality, and also has a 5 Ampere full-scale option.

    For a full-scale range of 50 or 100 Amperes, the ACS756 series, similar to the ACS713, offer a 130 µΩ internal shunt resistance along the current path.

    Both these current sensors provide a ratiometric output, so output voltage ranges linearly up to the IC's supply voltage (3 to 5 Volts), in the ratio of sensed current to maximum rated current (20, 30, 50 or 100 A depending on specific variant used).


    Since the current sense path is electrically isolated from the rest of the IC (shown in diagram above), the sensed current is independent of the battery voltage, at least up to several kilovolts. As an added advantage, these sensors can be used on the high or low side without any changes: The output is ground-referenced with excursion up to Vcc of 3 to 5 Volts as applicable.

  2. High-side current sense amplifier:

    These are essentially specialized differential voltage op-amps designed to tolerate high common mode voltage on the sense pins, well beyond their supply rails.

    For instance, the Texas Instruments LMP8480 (unidirectional sensing) and LMP8481 (bidirectional) current sense amplifiers are designed for high-side sensing with a Common Mode Voltage Range of 4.0V to 76V. They can thus be used for the stated battery with no special considerations, and without even providing a separate 5 Volt supply: They can run right from the battery supply, as shown below.


    At the maximum supported fixed gain of 100 V/V, these amplifiers will provide 2.5 millivolts output for every 0.1 Ampere across the specified 0.25 milliohm shunt.

    Other such high-side current sense amplifiers are available from many analog IC manufacturers. A web search will provide several options.

This then leaves the matter of digitizing the output voltage of these current sensors or amplifiers.

For the Hall Effect sensors mentioned, to get 0.1 Ampere resolution at 5 Ampere full-scale, an 8-bit (256 values) ADC will suffice: 5 / 0.1 = 50 discrete values. For 0.1 Ampere resolution at 100 Ampere full-scale, a 10 bit (1024 values) or preferably 12 bit ADC is needed: 100 / 0.1 = 1000 discrete values.

For the differential amplifiers mentioned, the ADC bit depth would be determined by the desired full-scale current value, but as a rough estimate any 12 bit ADC would suffice.


As far as converting your voltage range of 10.5 to 15V into 0 to 3.3V, an op-amp can take care of this.

This is one of my favorite features of op-amps.

Have a look at this circit.

enter image description here

In order to achieve attenuation, you must use an inverting op-amp configuration. Now the DC offset in your 10 to 15V range is of course 12.25V, so by applying a DC offset of -15V to the op amp, your signal is presented as a -4.5V to 0V signal, which gets attenuated by a factor of 0.733, and gets inverted.

Might be hard to see from that picture, so this might be better.

enter image description here

As far as accuracy, I'm not entirely sure if this could work so maybe someone more knowledgeable could chime in, but perhaps you can also do this attenuation with a more accurate instrumentation amplifier.

  • \$\begingroup\$ Thanks! That looks like a possibility, although the -15v supply might be a bit difficult. What is the 40hz input for? Which is the signal input? \$\endgroup\$
    – user36427
    Feb 1, 2014 at 0:04
  • \$\begingroup\$ @user36427 The 40Hz signal is just the default value of the AC source in that simulator. That was just to show you how it converts the voltage range of the signal, in the two scope displays in the first picture. You could stick in any frequency and it would do the same. Essentially the op-amp just does this operation --> \$\endgroup\$
    – krb686
    Feb 2, 2014 at 0:12
  • \$\begingroup\$ @user36427 Vout = (Vin - 15) * -.733333, which translates 10.5 - > 3.3, and 15 to 0 \$\endgroup\$
    – krb686
    Feb 2, 2014 at 0:12

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.