Reading low resistance using an lt3092 constant current source

Status
Not open for further replies.

ddmods

Active member
I'm using an lt3092 constant current source set to 68ma via teensy 3.1 3.3v pin. Using an lm4040 2.5v voltage reference diode on aref. This just isn't acting the way it should. When I short out it out, it reads around 1 ohm. I tried to calibrate it for wire length and diameter using a 1ohm resistor(reads 1.4ohm with my meter) and using math for the resistance that's already present in the wiring. I'm trying to read down to around 0.02 ohms. When I completely disconnect the resistor to be measured, it reads around 40ohms. I used this code from lowtech.com and changed the couple things. I'm sure I just have something wrong here. Please let me know what you think. I am using a 0.1uf cap between input and ground.

If there's a better way to read low resistance, I'm all ears.

Code:
const float currentSupply = 0.068; // The current generated by the lt3092 with 10ohm resistor on vOut and 68k resistor on rSet.
const float referenceVolts = 2.5;        // lm4040 2.5v
const float resistorFactor = 8191; //Full scale this time.
const int resistancePin = A0;         //Resistor / output from lt3092 circuit connected to analog pin 0
void setup()
{
Serial.begin(9600);
analogReadRes(13);
analogReadAverage(32);
analogReference(EXTERNAL);
}

void loop()
{
int val = analogRead(resistancePin); // read the value from the sensor
float volts = (val / resistorFactor) * referenceVolts ; // calculate the voltage
float resistance = volts / currentSupply; //Use voltage to calculate the resistance
Serial.println(resistance);
}

IMG_0135.jpg
 
Last edited:
If you can run 2 extra wires directly from A10 and A11 to the resistor, and use the differential input feature, you can probably get a more accurate measurement.

This is what's commonly called a 4-wire resistance measurement. The idea is to avoid also measuring the resistance of the wires carrying the 68 mA current.
 
Ahh, nice. :) I'll check that out, thanks! Do you think it'll read down to say 0.02 ohms? Is there an example of this anywhere? Can research later, have to leave for second job... Definitely will, though.
 
Last edited:
I read up on 4 wire measurement. I was trying to read the voltage across a known resistor with my dmm, and using V/I=R, I just wasn't coming up with good calculations. I used the exact same diagram as above, but disconnected the wire to A0 and was using my dmm. Do you see any error with that setup?
 
Last edited:
It is possible to use a two-wire DMM to perform what is effectively four-wire resistance measurement, with a bit of extra circuitry. As an example i needed to measure the power supply to distribution board wiring resistance in my modular synth. I used a 120 ohm 5W resistor, measured the resistance, measured the rail voltage, calculated the current that would pass through it. I then measured the voltage drop between PSU and my dummy module, obraining the wiring resistance R =V/I of 19 milli-ohms and an error analysis (check the spec sheet for each voltage and resistance range used on your DMM) indicated this would be accurate to within 5 miili-ohms in that case. This was with a not very expensive 4.5 digit meter.
 
Thanks for the tip! I got it to read correctly with my meter. I dropped the constant current to 10ma and it's working perfectly. Reading a 1 ohm resistor right at 1 ohms. Read down to .35 accurately, but didn't try any lower just yet. My next obstacle is getting the code to work for analogReadDifferential. I loaded up the example from the adc library and it works. Need more testing. Doesn't look like everything in there is needed. It's a very involved example. Guess to show what you can do with the library.
 
Status
Not open for further replies.
Back
Top