Electronic – Alternative to diode to allow uniform and predictable voltage drops or On resistance

diodesmultiplexerohmmeter

I'm trying to design a relatively high accuracy auto ranging Ohmmeter. A typical Arduino example can be found here:

http://www.circuitstoday.com/ohmmeter-using-arduino

multi-source stimulus for Arduino ohmmeter

The problem with this design is that it uses Diodes to prevent reverse currents. Now to ensure accuracy the exact Diode drop of each and every Diode needs to be known. Initially I thought I could order a "high tolerance Diode" like you can resistors (0.1% etc) but apparently there is no way to guarantee a diode drop.

My next bright idea was to replace all diodes with an 8 channel multiplexer. I had assumed that the "switch" in the multiplexer had an independent resistance but soon found that the On resistance(Ron) of a multiplexer is dependent on the input voltage of the channel selected. Due to the fact that the circuit is used as a voltage divider and there will always be an unknown resistance, the input voltage to each channel will never be the same and so it seems impossible to know what the Ron would be at any given time.

I'm really hoping someone knows of a simple alternative method/solution? I guess relays are an option but they are bulky and seem like overkill. I'm almost tempted to just use diodes and individually measure the diode drop but that makes reproducibility difficult.

Best Answer

To expand a bit on the comments. By ordinary DMM standards, it will take an enormous amount of work to get anything like "precision" out of this circuit. The most important factor is one which is not addressed: the Arduino digital outputs are hardly precision voltage sources. Without knowing those voltages there is no way to tell (with any precision) what the resistance is.

Second, even if all your diodes are identical, their voltage will change with current, which means that you need to calibrate all your channels. Voltage drop on the active diode will change with the value of the resistance being measured.

Third, while this is probably unnoticeable at the scale you're working, for a given current the diode voltage will vary with temperature, and that includes temperature changes caused by self-heating.

So perhaps you should define "precision", along with "accuracy" - they are not the same, after all. The circuit strikes me as the work of someone not very knowledgeable about electronics who had "this great idea", and who is demonstrating that when your only tool is a hammer, all your problems look like nails.

EDIT - An alternative would be to use p-type MOSFETs as isolators rather than diodes. This would look like

schematic

simulate this circuit – Schematic created using CircuitLab

with a couple of notes. First, the 5 volts is not the Arduino power supply. It is a separately derived, stable and accurate 5 volts. Second, the gates of the FETs are driven by the Arduino, and their polarities are reversed from your nominal circuit. That is, a HIGH disables a resistor, while a LOW drives it to +5. Third, the FETs should be logic-level FETs. "Regular" FETs are typically not guaranteed to turn on fully with 5 volts on the gate (although they usually will. Sort of).