Measuring very small changes in a low resistance circuit

I have a circuit where I am trying to detect when a systems resistance drops from ~5-20 mOhms to half or lower (~<1-10 mOhms) with a micro controller. my microcontroller can read between 0-3.3v with 10 bit precision, or about 3.3 mV changes. I was hoping to get much larger changes out to give me confidence that I'm actually measuring the drop in resistance. My MC can also source 15-20mA of current at a pin.

My plan is to make a voltage divider with R1 much higher than R2, since making them even sort of equal will draw too much current from my pin. With V=IR being 3.3/.015= 220 ohms for the lowest resistor I can use for R1. At best this gives me ~ .3 mV of max voltage drop if my test circuit starts with 20 mOhms of resistance. I would like to build a voltage amplifier circuit to boost the voltage signal from the divider. I've drawn up a preliminary circuit ( you can replace "mosfet" with any transistor in your mind), but looking at diagrams of BJT and MOSFET transistor circuits that are used to amplify voltage, I am guessing I am missing something. I need around 1000x amplification.

I'm not sure the voltage that would be at the Gate of a MOSFET would be sufficient to turn it on at all, or that the voltage would be amplified. Maybe a darlington pair of BJTs? I'm worried that the power through the base of a BJT would interfere with my measurements.

• There’s a big overlap between the two limits you wrote at the top of the question. For instance, which camp does 7.5 milli ohms fall into? – Andy aka Feb 29 '20 at 10:46

Make a decent current source that is controlled by the pin. This means that the pin is not loaded.

Remember that milliamps times milliohms gives microvolts. If your DC voltage is in microvolts like, say, 20 $$\mA\$$ through 4 $$\m \Omega\$$ - giving 80 $$\ \mu V\$$ - then even the expensive opamps will struggle to give good accuracy.

If you could source, say, 1 amp, then a simple cheap op-amp circuit could drive the analog input pin without too many offset errors.

The current source is only activated when needed so energy needs should be easy to manage.

Use an op-amp or current sense amplifier IC to boost the voltage. Feed the boosted voltage to your ADC. Use as much gain as you need, just take care that the offset voltage doesn't boost your signal outside the ADC input range.

Also, use some averaging to improve signal to noise ratio. Measure voltage with IO off. Then measure with IO on. Then measure with IO off, then on again. Average all the "on" values and all the "off" values. Use the average values to make your detection.

Consider using a 22-bit ADC, with 2.5 volt VREF. With +- 21 bits resolution, you'll have 1.25 microvolts resolution.

Given 10mA and 1 milliOhm is 10 microVolts, you'll have 4 quanta per milliohm of change.

The MCP3551 has differential inputs, and 10+ samples per second.

No amplification needed.

• I forgot that I have an HX711 laying around. I'll have to try that. – jeffpkamp Mar 2 '20 at 18:06