Measuring small currents over a small sense resistor

I have been having some difficulty recently when trying to measure very low currents when using a small sense resistor.

I am trying to measure in the range of uA (1 - 150uA) with a supply voltage of 3.3V. Now, usually this is not too much of an issue, but the problem I am getting here is that this particular project uses a WiFi module that peaks at around 600mA.

I am needing to use a small current sense resistor (0.1R) because I just can not afford the voltage drop over higher values at peak current consumption. I tried a few different current sense amplifiers but found them to be not quite accurate enough at these small levels. I eventually settled for a chopper stabilised amplifier (TLC2652) because even though it wasnt a specific current sense amplifier, it offered my <1uV offset which I thought was great. I set it up as a differential amplifier with a gain of 100 however, it still struggled with accuracy when getting tot he very low current range. Annoyingly, it works perfectly when using a 1R current sense resistor, but as previously mentioned, I cannot afford this voltage drop. With the 0.1R resistor, it is fine untill it gets below round about 20ish uA then it gets a bit noisy.

Does anyone have any suggestions on a good workaround for this to get it to work?

Here is the way I have it set up:

simulate this circuit – Schematic created using CircuitLab

I will say that it is not highly critical for it to be supremely accurate, this is just part of a circuit to do functionality checks, so I am fine with it being a little noisy in these very low currents, however, it does not stop my curiosity and my desire to find a way to solve it!

I hope I have worded my question alright, please let me know if I have missed any information or if there is something I have not explained correctly.

Also, as a side note, I must state I am still learning electronics so apologies if I have done something incorrectly or done something that some more experienced people may find silly!

• One way would be to use an 1Ω current sense resistor, and then shunt it with a low Rds(on) MOSFET whenever you're not actually measuring the current. – Dampmaskin Mar 31 '17 at 13:21
• or if the Wifi module is not important for the current measurement, just source it directly from the voltage regulator and use a higher resistance to source the circuitry you need to measure – LuisF Mar 31 '17 at 13:23
• This will be constantly measuring the current and displaying it on an LCD. and with the voltage drop over a 1R resistor I get all sorts of issues – MCG Mar 31 '17 at 13:23
• What does a little noisy mean in terms of signal numbers and noise numbers. It's not a particularly quiet op amp btw. Also the LM317 is a particularly good noise generator and made significantly worse by the lack of input and output capacitors. Maybe you should show the exact circuit including ALL power decoupling. – Andy aka Mar 31 '17 at 13:24
• @LuisF This project is a test rig to test the functionality of something that uses a WiFi module. It provides the power to this unit and is constantly measuring the current consumed by the device and display it on an LCD – MCG Mar 31 '17 at 13:26

Try this

simulate this circuit – Schematic created using CircuitLab

How much noise to expect?

1uVrms, 48dB SNR

And now, with time and frequency combined, in SWE; here is 3Volt Peak signal at 50Hz, with 0dB RMS noise of bandwidth 250Hertz, into 20Hz LowPass filter:

The frequency response of the 20Hz LPF is

$$1 / sqrt(1 + (Freq/20Hz)^2)$$

At DC, gain is unity.

At 20Hz, gain is 1/sqrt(1 + 1) = 1/1.414 = 0.707 == -3dB

At 200Hz, gain is nearly 0.1

At 2,000Hz gain is nearly 0.01

EDIT>>> In the first schematic, the 100Kohm and 1uF create a 0.1 second TAU or TimeConstant. For accurate measurements, you need to WAIT after the current changes; 1Tau provides 1 Neper of accuracy (9dB or 1.5bits); 2tau provides 2 Nepers of accuracy because the RC has had twice as long to settle (18dB, 3 bits, or approximately 16% error); 5 TAU or 0.5 seconds achieves 45 dB of accuracy, nearly 0.5% accuracy.

Thus the bandwidth of the system, here set by that 100Kohm and 1uF, determines how LONG YOU MUST WAIT after a big step change to accurately measure that big step change. Small changes only need proportionately less time, before you can accurately measure the value. Of course, small changes may be almost buried in the noise.

• I shall indeed give that a go. I am just about to leave work though so that will have to be a Monday job, I shall let you know how I get on. Would you be able to explain this 'bandwidth' to me and how you came to those values? That would be very helpful for the future. Many thanks for your answer! – MCG Mar 31 '17 at 14:53
• Brilliant, thanks for the edit! I'll try this Monday when I'm back at work! – MCG Mar 31 '17 at 15:42
• @MCG This is a nice idea. But am suspecting it may not help your noise problem...the ADC you'll use for displaying current is likely dual-slope integrator type, which is an even-narrower BW noise filter than this! – glen_geek Mar 31 '17 at 19:06
• The thing I'm using to display current is a lascar dpm 1as bl which has everything built in – MCG Mar 31 '17 at 19:18
• This circuit did improve it, as in it was more reliable than mine, plus the explanation was very good about noise etc so I will accept this one as the answer. But thanks to everyone for their help! – MCG Apr 3 '17 at 7:47

I have been having some difficulty recently when trying to measure very low currents.

Quite simple.

edit:

I am trying to measure in the range of uA (1 - 150uA) ... that peaks at around 600mA.

that's a range of 600k:1.

I would say that it is (way) beyond even what 99.99% of expert analog engineers can do. any one coming out with a solution here would be an instant multi-millionaire.

HP happens to have a patent on that front - less than the range you are looking for - that may serve as a starting point for you.

• I will try to make a schematic with this. To OP: please say how much capacitance there is on the board to be powered, and its type (ie, 10µF ceramic, etc) – peufeu Mar 31 '17 at 15:14

When the problem is problematic, why not change the problem?

simulate this circuit – Schematic created using CircuitLab

This is a simple opamp-based voltage regulator, with an extra current-sense. Compensation and stability is on you, but it's not that hard. Pick a FET which can pass the current...

R3 (100R here) is your sense resistor, so 10µA gives you 1mV on the resistor. Plug your diff-amp input across R3. Choose a proper value for R3. You can use a switch with several value if you want.

D1, of course, solves your dynamic range problem, by limiting the voltage across R3 to one diode drop, so you can use a large resistor AND have your high current, too.

Say you want to measure 150µA... no problem, set R3 to 2k2 kOhm. 150µA gives you 330mV. Easy to mesure. And you set your current sense amp gain to make sure that it does not clip when voltage on R3 reaches one diode drop and it begins conducting.

Because if your current sense amp clips, then its input stage will have a thermal tail, delaying settling by potentially milliseconds. Which is why none of the circuits proposed here will work. You don't use an opamp to measure microvolts on a sense resistor, and trust the results if it occasionnally clips.

• Sounds like a good idea. Is it necessary to build your own regulator, or could you just do the parallel resistor/diode before the input to an integrated LDO? – Justin Mar 31 '17 at 20:47
• Yes, using an off the shelf LDO would be my preferred choice. It would need to be stable with the caps in the load, and have a ground current low enough not to screw up the measurement, so you need a micropower LDO. You will need to add a cap in parallel with the current sense resistor, or a cap to GND at the LDO input, to ensure it is stable, because a 100 ohm impedance in the input may upset it – peufeu Mar 31 '17 at 21:20

Ignoring the schematic error showing the opamp output connected to the positive power rail.....

The opamp noise is about 30 nano volts per root hertz so, if you have a 1 MHz measurement bandwidth, the rms noise at the input will be about 30 uV rms. You have a gain of 100 so this becomes 3 mV of noise at the output.

Now, these are just ballpark figures for you to muse over. If the bandwidth of your measuring circuit is only 10 kHz then the noise will be about 300 uV rms.

This and the LM317 are the likely culprits.

Another problem is the tolerances on the resistors. With such a high gain differential circuit and 1% resistors, the common mode rejection will be pretty bad and noise from the LM317 power rail will be amplified. There are chips that will do this job for you. Linear Technology make "high side" current monitors that will be much more suitable than a diff opamp circuit.

• Could you suggest an alternative op amp? All I saw was the low offset and just assumed it would do the job. Poor way of thinking I suppose! And to be honest I have no idea what the bandwidth is or how to find that... I didn't even consider that as I don't quite understand that side of it – MCG Mar 31 '17 at 13:39
• What do you connect the output of the opamp to and how much bandwidth do you need to measure over? – Andy aka Mar 31 '17 at 13:41
• I am connecting it to a Lascar DPM 1AS BL. ( farnell.com/datasheets/… ) – MCG Mar 31 '17 at 13:44
• And I don't really understand bandwidth so I am quite unsure about that...... I'll have a google of it but I am sure you would probably make it easier to explain than wikipedia or something! – MCG Mar 31 '17 at 13:45