Measuring low resistance values

I am working on a project where we have to measure resistance of ice cores. As far as I understand the arduino will measure voltage and will use a constant current, like a multimeter does. From this I should be able to get the resistance. So I have three questions to begin with: Am I correct in assuming that I can measure the voltage, use Ohm’s Law, and get the resistance that easily? What is the smallest voltage value that the arduino will measure? What current does the arduino use (40 mA, 50 mA,…)? We are going to use a connector that we are designing and we are planning on using the analog inputs so we will measure down all six pins.

Any help is greatly appreciated. Thanks!

Am I correct in assuming that I can measure the voltage, use Ohm's Law, and get the resistance that easily?

Yes, assuming you know the current as well.

What is the smallest voltage value that the arduino will measure?

1.1 volts / 1024 AFAIK, ie about 1mV. So depending on the accuracy you need you would have to organise a constant current source that causes an appropriate voltage to appear across the ice.

use (40 mA, 50 mA,...)?

If you mean what current can the Arduino produce on a pin, we usually recommend 20mA as being the max working current. But that's not a CC source.

I guess you don't really need a CC source, but you do have to be able to measure the current, I think CC would be easier.


and will use a constant current, like a multimeter does

No a multi meter and an arduino do not work like this. Normally you measure a current by measuring the voltage drop it generates when flowing through a known resistance. So you will have a voltage applied across your sample and a referance resistor and measure he voltage across the referance resistor to find the current and thus the resistance of your sample.

What sort of values are you expecting? Any surface melt water film will upset this reading. Pure water has a very high resistance so sometimes the resistance measurement is a measure of impurity in the water but I don't know about ice.

I had the same thought as Grumpy. Unless you understand what you are measuring you will have a hard time to get reasonable results. Probably it might be a good idea to attach 3 or more electrodes and measure through all the combinations and then use mathmatical methods to compute the different resistances. One more point: if you measure with DC you will eventually get electrolytic effects / gas build up at the electrodes which also will disturb your readings.

I strongly recommend to discuss this with an electrical engineer.

You can measure sheet resisivity with the four probe method. But are you after this or the bulk resisivity?

Can't I set a constant current using the arduino? If I can set a current source that is close to constant then I should be able to measure the voltage drop and use Ohm's Law to calculate the resistance. The connector will only be in contact with the ice core for max of one minute. It will be dragged down the ice core, and I will attach a rotating knob that will allow us to take accurate measurements regardless of the speed it is dragged. In response to Grumpy, I thought that using a current source would be easier than a voltage source and a reference resistor. This will be taken to Antarctica later this year and the idea is to have this take measurements very quickly since they will be in less than favorable conditions. We will be measuring across 6 different pins using the following method: measure between 1 and 2, then 2 to 3, then 3 to 4, etc. The idea is to see where the salt water didn't freeze, causing what are known as brine channels. I will speak with my EE professor tomorrow to see what advice she can give me also, but I don't think she has ever dealt with an arduino which is why I am grateful for your input here.

So I guess the parting question for this post is the same as stated above, to make this simple can I use the arduino to be a constant current source and measure the voltage drop then calculate the resistance that way?

Thanks again.

Can't I set a constant current using the arduino?

No you can not. The arduino has only digital outputs.