I'm trying to use an Arduino Uno, to measure the Voltage over a Resistor in a circuit. I guess the usual way would be to connect GND to one side of the Resistor and the AD0 Pin to the other end, and scale the (0..1023) to (0..5V).

The problem is however, that connecting the GND to one side of the Resistor affects the circuit. Since the GND of Arduino is also connected to a Servo Driver (and other stuff), Some of the power that was supposed to be consumed by my Resistor, is now consumed by the parallel circuits.

Is there any way to measure the Voltage over the resistor without using GND?

2 Answers 2


If I understand the description correctly, neither side of the resistor is at ground potential. There's a wide gamut of methods of dealing with this, for example using a differential ADC unit, or using an instrumentation amplifier ahead of a single-ended ADC. But perhaps the simplest method is to use two ADC channels, one attached to each end of the resistor, with ADC ground connected to some common reference point. Measure both voltages and take their difference .

  • Thank you! Yes you got the question right. Nice idea specifically since I can't afford to add more circuitry. And True, The Resistor's "GND" doesn't need to level with the GND of the rest of the circuit. I'll implement soon and provide feedback
    – Makan
    May 11, 2017 at 13:04
  • It turns out that by attaching two ADC channels to the ends of the resistor, I don't get a valid or even stable result. The result is a chaotic number. Any suggestions?
    – Makan
    May 16, 2017 at 13:41
  • 1
    @MakanTayebi, Do you print all 3 values? (Ie, both analogs & their difference)? If not, printing them all might indicate if variation at one end is causing the problem. Or might indicate wrong pin being read. Note, if you use the same ref voltage for both readings, subtract the two readings before scaling instead of after May 17, 2017 at 3:47
  • I print both and both fluctuate, so much that their difference is not also meaningful. And that's even before scaling. But what about the Refererence Voltage? What PIN would that be?
    – Makan
    May 17, 2017 at 18:39
  • The AREF pin can be used to input a reference voltage of 1 V or more, which can be selected for use via analogReference(EXTERNAL) (see link). By default, analogReference(DEFAULT) is in effect, and it selects +5 V on a 5 V board, or 3.3 V on a 3.3 V board. For most-stable results on Unos/Nanos, use analogReference(INTERNAL) if a 1.1 V max reading is acceptable. May 17, 2017 at 21:07

Why you are using AD0 pin for analog read? use A0-A7 for Arduino mega and A0- A5 for arduino uno case for reading of analog values. For more detail study the voltage devider and you will understand the problem more easily. As i understand there is no need to use ground.

  • 1
    I don't get why this answer has gotten negative reps. I'll try taking the GND out of the loop.
    – Makan
    May 11, 2017 at 13:07
  • 1
    “There is no need to use ground” is untrue. Yes, voltages are differences in potential between points, neither of which need be ground. But when you measure voltages using an Arduino ADC, some ground-reference point in the circuit under test should connect to the Arduino's ADC ground (which, on Mega, Uno, Nano, is wired to digital ground...) May 11, 2017 at 13:45
  • 1
    And what do you think AD0 refers to in this context?
    – gre_gor
    May 11, 2017 at 13:56

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.