How can I read resistance values to micro ohms accuracy?

I'm trying to make a portable low resistance ohmmeter. And Arduino seems to be the best in terms of cost and portability. Basically I'm trying to measure the resistances of different wires: copper wires, tungsten wires, and lead wires.

Now I tried doing some research and this one circuit:

http://www.thelowtech.com/reading-milliohm-resistances-with-the-arduino/

can measure up to milliohm precision. But it's not enough especially for short wires. I'm trying to measure 10 cm wires to 1 meter wires. (which would still be in micro-ohm range)

In the circuit above I can increase the accuracy by lowering the resistor to 10 ohms. Or I can decrease the voltage, but the Arduino's minimum AREF is 1.1 V. Both will still not get me to read any resistance below 1 milliohm. (I tried by measuring resistance of wires at different lengths of the wires)

Can anyone point me in the right direction? I was thinking of using differential amplifiers/ op-amps to try to decrease the 1.07 mV -4.8 mV minimum voltage reading an Arduino can measure.

And hopefully I can get below the millivolt/milliohm range? Again, if someone can point me in the right direction to help me solve this problem..

Personally, I doubt you'll ever get the accuracy you want, using the methods proposed in that link. You have the resistance of any method you use to connect your sample load. even soldering your specimen into the circuit would have resistance variations that would spoil your data.

just doing a simple bit of maths. Assuming 1.1v referrence voltage and 10 bit ADC. Each bit would represent a voltage difference of (somewhere in the region of ) 1mv

If 1 millivolt represents 1 micro ohm difference. You need to have about 1000 Amps running through your test circuit. Clearly something is amiss.

i don't know of anything capable of producing a killowatt of power at just 1.1v I'm pretty sure that rules out your LM317 as a constant current source :wink:

Perhaps a low-side current shunt OpAmp.
This seems a nice explanation: http://www.ti.com/lit/ml/slyb194/slyb194.pdf
The INA212 has a gain of 1000.
For example 1mOhm and 100mA times 1000 results into 100mV output. That is not much. Is that enough ?
Here is a nice list of OpAmps that can be used : DC current measurement – Renewable Energy Innovation

You have to use four-terminal sensing. That means you have to add the current connectors/clips to the end of the wire and the measurement connectors/clips to the piece you want to measure.
Are you willing to do that every time ? If even those connectors/clips touch each other, your measurement will be wrong.

How much current is available ? For a current source a LM317 will do.
Do you want selectable currents ? Or perhaps some autoranging ?

I don't know how this is normally done, but it sounds VERY tricky. Like Peter says, it is going to take a 4-wire setup.

If you are only testing wires, you should be able to run (relatively) high current through the wire. A normal DMM has to use low voltage and low current so you don't fry components while measuring resistance...

But normally, you wouldn't measure a short length of wire (I'm assuming this is normal conductive wire, like copper wire). You'd measure a long-long length and make a calculation for the shorter piece... Or just look it up in a table. :wink:

At work, I have an old 4-wire HP DMM. It's got 4 digits to the right of the decimal point, so that's a resolution of 100 micro-Ohms.

But, I wouldn't expect accuracy to 100 micro-Ohms... We use it to measure relay contact resistance, and our spec is 0.3 Ohms or less. In our set-up the relays are soldered on a board and the test fixture is plugged into a connector. Wiggling the connector can sometimes make a 0.1 Ohm change. I'm not sure how much the connector resistance and solder normally adds to the total, but I don't see readings much below 0.1 Ohm. "Exercising" the relay can also make a difference, and there's always some difference every time I run the test.

Peter_n:
For example 1mOhm and 100mA times 1000 results into 100mV output. That is not much. Is that enough ?

That's still 10 micro Ohms to each mv. Doesn't sound like it's quite there. Although you could go to 1Amp (instead of 100ma). I still think the whole circuit would be too twitchy. Any measurements that fine are going to be more artifacts of the circuit than the item being tested.

The way they do it in the power utilities is force a constant high current through a resistance and measure the voltage drop.
500 amps :o through 1 micro ohm would give you .5mV

Would this help me? So what I want to amplify my voltage signal so that say 100 micro-ohm would correspond to say 1.1 mV which the Arduino could/would read.

Would this help me?

http://www.e-gizmo.com/KIT/sensoramp.html

And anyway I'll read up on the shunt monitors. But from what I'm understanding is that INA226 should be the best?
How do I set the gain to say 10000 instead to get more accuracy?

At 100 mA, a gain of 10000 can actually allow me to read up to micro-ohm range... right?

Just remember that a gain of 10000 will amplify the noise as well as your signal. If you have a weak signal with noise, and you run it through an amplifier, you end up with a stronger signal with a lot more noise.

You are trying to create a sophisticated lab grade precision instrument. It's not easy. If it were, all portable meters would read with that kind of precision, and the instruments that can read that low wouldn't be so fiendishly expensive and complex.

I can't help, but I'm really curious as to why you need to do this.

Hi, I have micro and milli ohm meters go through the workshop for calibration.
4 wire method is essential, the simple units only measuring with a resolution of 10mOhms.
The more substantial units that measure 1uOhm, use high current ( >50A) , and have special probes and operating procedures.

I'd also like to know what the application is to require such low resistance measurement.

Tom..... :slight_smile:

I want to measure the resistance values of different conducting wires. (Copper wires, tungsten wires, etc.) They have different lengths and diameters.

The more substantial units that measure 1uOhm, use high current ( >50A) , and have special probes and operating procedures.

V/R = I
Let V = 50 uV
Let R = 1 uOhm

0.00005 V /0.000001 ohm = 50 A.

You need a precision instrumentation amplifier capable of amplifying very small voltages.

ptingzon:
I want to measure the resistance values of different conducting wires. (Copper wires, tungsten wires, etc.) They have different lengths and diameters.

I suggest using longer lengths of wire, and doing appropriate arithmetic afterwards.

I also suggest you Google:

measuring micro ohms

There are quite a few articles there which should give you some ideas.

Do I just measure across the load and not worry about the high amperage?

In a perfect world, you'll have low voltage across the low resistance and everything will be fine. In the real world, your Arduino needs [u]protection[/u]. For example, the Fluke meter on my bench says "600V". It's inputs are protected and I can safely connect it to the power line no matter what range or setting (including Ohms) I'm on. (The current measurement terminal is separate and you cannot connect that across the power line!)

Should I tie the grounds together (power supply and arduino), or should I use the arduino like a floating ground?

Normally the grounds should be floating because otherwise you can potentially short the "wrong" part of your circuit to ground and bad things can happen! Normal multimeters (and oscilloscopes) are isolated (most-often battery operated). There are + & - terminals but no "ground" terminal. (A 'scope usually has a floating "ground".)

I'm confused because the arduino isn't "pulling the amperage", the power supply is a constant source. So would the arduino only pull what's necessary... or does the whole 100A get "pushed" into the Arduino?

Right! You don't "push" current into the Arduino. The Arduino's inputs are several megohms and [u]Ohm's Law[/u] tells you it's impossible to get more than a few microamps at 5V. However, if you go above 5V or negative, the Arduino's internal protection diodes will conduct, you'll suddenly have super-low resistance, and if the power source has more than a few milliamps of current capability, you'll smoke your Arduino.

A constant current power supply has some maximum rated voltage... If you connect a high-resistance load (or if you leave the output open), the constant-current supply will go out of regulation, voltage will max-out and you'll get whatever current results from the applied voltage and the load resistance (Ohm's Law).

With no load, your 100A constant-current supply is going to put-out zero current,and the voltage might be 5V or 5000 V, depending on its design.

DVDdoug:
(A 'scope usually has a floating "ground".)

EVERY o'scope I've used in the past 35 years has not had a floating ground: the ground clips of each probe have been connected to the power cord ground pin. I've always had to use differential probes, or a three-prong-to-two-prong adapter to disconnect the ground pin to "float the scope".

At work we use the TEK TPS-2024 on battery power to make floating measurements.

Features & Benefits

2 or 4 Fully Isolated and
Floating Channels, Plus
Isolated External Trigger

DATASHEET

At home I use the same method you describe with my old scope and a 2-prong to 3-prong adaptor and leave the green grounding wire unconnected.

raschemmel:
on battery power to make floating measurements.

Good point, when I said every scope I've used was grounded, I should've been more clear that all of them are/were AC powered with a line cord. Of course, a battery powered scope would be floating by definition, but I've not used one. Note that a USB scope is probably grounded by virtue of the computer to which it's connected, unless it's a laptop with no AC adapter and no other ground connection.

ptingzon:
I want to measure the resistance values of different conducting wires. (Copper wires, tungsten wires, etc.) They have different lengths and diameters.

You can find the resistivity of common conductors ("Electrical Resistivity Handbook" or several other library sources) and from there calculate the resistance for different wire gauges of each conductor. No need to reinvent the wheel.

If you insist on investing the time and money to do the measurement yourself you will need a four probe setup. Two probes to force the current and two probes to measure the voltage. You cannot force current through the same contacts you use to measure the voltage without suffering huge error.

TomGeorge:
Hi, I have micro and milli ohm meters go through the workshop for calibration.
4 wire method is essential, the simple units only measuring with a resolution of 10mOhms.
The more substantial units that measure 1uOhm, use high current ( >50A) , and have special probes and operating procedures.

I'd also like to know what the application is to require such low resistance measurement.

Tom..... :slight_smile:

And all the expensive equipment and special procedures have to take into account EVERY connection between dissimilar metal will produce a very tiny voltage that will appear to the equipment as either adding to the resistance or reducing the resistance.

If you have any hope of measuring the resistance of wires of various metals, you really need to set up a laboratory specifically to do the measurements. Each measurement may take a day to set up and perform and verify the results.

Paul

Keep in mind that if you are taking measurements with a floating ground, your scope chassis (or laptop if using a USB scope) is now floating at some voltage.