# A low power circuit to measure large resistances

I am trying to measure resistances in the range 20 kohm to 1 Mohm. Initially, I was using a constant voltage source, but the power consumption when the R = 1 Mohm is very large.

I want to use as little current as possible. I need to measure the resistance value using a microcontroller (that has an A/D input).

Should I be using a constant current source and then sense the voltage across the resistor to be measured? That would mean that I need to tune the circuit for the max resistance I want - otherwise, the output voltage would exceed the A/D pin spec of my microcontroller, right?

• I was using a constant voltage source, but the power consumption when the R = 1 MOhm is very large. That does not make sense to me. The 1 Mohm resistor will cause only a small current to flow (I = V/R) so power will be small unless you're doing this in a strange way. So show a schematic to make everything clear. You should investigate how resistance meters do this. Fixing either voltage or current will (depending on the resistor you're measuring) results in too high/ low voltage/current. Do some calculations to see what the voltages and currents will be. – Bimpelrekkie Sep 4 '18 at 7:55

The constant-current approach for measuring that high resistances may not be a good idea. Because the reference current should be extremely low (i.e. in uA range). For example, 2uA current leads to a voltage drop of 2V across a 1M resistor. A voltage level of 2V is a nice value for measuring via ADC. But unfortunately, it's quite hard to make a precisely adjusted 2uA current source (If there's an easy way to make one then I'll be happy to know). If you increase the reference current to 50uA which is relatively easier to regulate then the voltage drop will be 50V! Please don't say "I can use voltage divider" because the divider resistors should be quite low since they shouldn't load the resistor-to-be-measured. And also using that low resistors will lead to a relatively higher dissipation.

You can use a voltage divider with precisely adjusted resistor. This can be an easy way to measure a resistor.

I would measure that high resistances with an oscillator. From T=RC, if an oscillator outputs a signal with a pulse-width of 2ms with a 20k resistor then the same oscillator's output pulse-width will be 100ms with a 1M resistor. Please note that these periods can be easily measured with a MCU. And also the oscillator will not draw too much current.

I will tell you how I would do it if I would do this for myself.

I would look up a typical amplifier that fits my needs. The differential amplifier suits my needs if I just ground $V_1$ and connect $V_2$ to $V_{DD}$. See below for a schematic of a differential amplifier.

The source of this image is from the link to wikipedia above.

And the relevant equation for this particular schematic is this one:

$V_{out}=\frac{(R_f+R_1)Rg}{(R_g+R_2)R_1}V_2-\frac{R_f}{R_1}V_1$

With $V_1$ grounded the second term disappears.

So the idea here is that $R_g$ is selectable and can become 1, 10, 100, 1 k, 10 kΩ. And $R_1$ and $R_2$ are fixed at 1 kΩ. I choose 1 kΩ because it is not too small so large currents will flow and not too large so it will be susceptible to noise and the parasites of the op-amp. It is a lagom value.

So let's rewrite the equation above and find $R_f$, this is where you will place the resistance to be measured.

\begin{align} V_{out}&=\frac{(R_f+R_1)Rg}{(R_g+R_2)R_1}V_{DD}\\[2mm] (R_g+R_2)R_1V_{out}&=(R_f+R_1)RgV_{DD}\\[2mm] \frac{(R_g+R_2)R_1V_{out}}{RgV_{DD}}&=R_f+R_1\\[2mm] R_f&=\frac{(R_g+R_2)R_1V_{out}}{RgV_{DD}}-R_1 \end{align}

And then all you need to do is to cycle $R_g$ through known resistances and measure $V_{out}$ with your ADC and you'll be able to calculate your value.

Here's an example of a schematic I'd go with. Just use a couple of NMOS as a multiplexer, generate the gate signals from your µC.

\begin{align} R_f&=\frac{(R_g+R_2)R_1V_{out}}{RgV_{DD}}-R_1\\[2mm] R_f&=\frac{(100+1000)×1000×.9207}{100×5}-1000\\[2mm] R_f&=1025.54 \end{align}
It should be 1000 Ω as we can see is shown in the schematic, but instead it's 2.5% off, this is due to the 100 Ω not being 100 Ω, it's more like 100.5Ω due to the NMOS. So you might want to calibrate your values. I also believe you might want to make $R_2$ higher, like about 10 kΩ or 100 kΩ. This way the resistance of the wire and NMOS will play a less role in your measurements. But if you are going to calibrate then it won't matter what value $R_2$ is.