I am currently building a simple ohm meter using a voltage divider. Since I want to measure the voltage drops on many different parts I am using an ADC (MCP3008) with 8 channels (for future use I want do chain them together). For the most parts I know the expected voltage drop and can choose a shunt resistor in that range

My problem is with high resistance elements >1MOhm. With the ADC i get an error >100%.
When I use the voltage divider with the Arduino analog pins (input impedance 100MOhm) it is possible to measure resistance up to 50MOhm.

In the datasheet of the 3008 it is noted that at high input impedance (>10k) it is recommended to use an op-amp to increase the buffer time for the charging capacitor.

I am inexperienced at calculating op-amps for specific circuits. I need to measure up to 100MOhm (maybe even more 3000MOhm). My plan was to use a LM471 because of the similarity to the recommended MCP603. Is there a general way to calculate op-amps for a specific output gain dependent on the input impedance of the ADC?

I have attached the recommended circuit from the datasheet and the resistance curve. Also my planned circuit.

The MCP3008 is similar to the ATmega ADC system - if you switch the multiplexer between inputs with
high impedances there will be cross talk via the sampling capacitor.

The solution is to make the output impedances of each voltage divider low enough.

This means adding a 10 -- 100nF capacitor to ground on each input, lowering its impedance
drastically. Basically each input either needs to be 10k or lower resistive, or > 1000x the
sampling capacitor in capacitance.

The downside of this is the low-pass filtering action, but for static measurements this isn't a probem.

If it were, using buffer opamp per input would be needed.

If you only use one input, the problem doesn't show up as the multiplexer never switches
the sample capacitor around.

The datasheet says the input leakage current is 1nA or lower, but the sampling cap is 20pF, so
use caps > 20nF for 10 bit accuracy

Good point with the capacitors. I can try it this now (I send a student out to buy some available op-amps).

The downside of the opamps would indeed be 1 Op-amp per input (the TLC274CN has 4 parallel op-amps) and I also can not predict how stable the circuit would be if there are 16+ opamps on the same power line.

I calculated the impedance using a simple approach using the resistance triangle. I tested with various capacitors and increasing resistance. The results were good (up to 1000MOhm).

The voltage drop using an dual op-amp gave similar results, but is much more noise dependent.

@MarkT: Your simple solution was spot on and seems also more sufficient (afterwards everyone is smarter).

Hello All,
Please note that the proposed (half bridge) circuit will give
a non-linear output because the value of Rx contributes
to the value of the measuring current. This circuit is used
in analog (swing-needle) VOMs. The resistance scales
are quite non-linear. What you want to do is apply a
calibrated constant current through the Rx. This is done in
the DVMs. Then the voltage across Rx will be linear. Now,
since the goal is to measure 300 Megohms, that requires
a very small current! A 5 Volt source is just not suitable
for that! Yes, the Arduino can make the voltage divider
calculations for you, but why should you require it?
Herb