Maker Pro
Maker Pro

Measuring small currents (microamps)

mikeee

Jan 25, 2015
5
Joined
Jan 25, 2015
Messages
5
(Electronics newbie here, please have patience!)

TL;DR:

Which method should I use to measure a small current, in the order of 1uA-1 (3.3-5V)?

Details:

I recently picked up an interest in electronics, and I have been playing around with the Arduino and various sensors and components. As part of that I've been trying to educate myself on how to measure current (DC, microamps all the way up to hundreds of milliamps) without "cheating" by using a multimeter capable of measuring that range or buying the uCurrent - it sure would be easier, but what's the fun in that, right?

Apart from pure curiosity the reason why I'm even looking at this is because I'm going to try my luck wiring up various battery powered devices - think: home automation etc. in the 3.3-5V range - and I want to verify that they live up to the expectations in terms of power consumption. However, I'm at the point where I could really use some helpful nudges in the right direction.

I've read up on everything from transimpedance amplifiers, current sensing amplifiers, hall effect sensors, the uCurrent project, the "lightning bug" as well as a number of threads both here and in various other forums, but I'm afraid they have me more confused now than I was before I started. :)

Specifically, I have tried setting up both a current sensing op amp with a small (0.1ohm) burden resistor as well as a variant of the uCurrent/"lightning bug" with two op amps (one to supply the floating reference voltage and the other for the actual amplification), but so far I haven't been anywhere close to getting the expected results.

I can provide schematics for the circuits I've tried (all of them involving one or more op amps), but before I do so I'd like to take a step back and get some guidance when it comes to what the pros & cons are of the various methods, like:

* transimpedance amplification
* current sensing using a shunt resistor
* hall effect
* <other methods go here>

What is the "best" method for me?

Various data points which may or may not help reduce the scope of the problem:

* I'm expecting to use my Fluke 117 to present the actual data (it can do mV DC, but not mA/uA)
* I'm mostly interested in measuring the current when the devices are idle/powered down, so the primary use case is measuring a mostly steady but small (average) DC current
* the precision and accuracy really isn't so important to me, I'm more after the magnitude of the current (1uA-1A)
* I don't need auto-ranging etc.; if I need to manually switch between resistors or whatever that's all fine
* <further limitations/simplifications as needed>

Any and all help is much appreciated, including pointers to helpful tutorials on the subject!

Thank you!
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
I would either use an opamp as you have tried or maybe using the A to D of the Arduino. You may have to change the value of the resistors to allow for very small currents. Show us your circuits, we may be able to get it going.
Adam
 

mikeee

Jan 25, 2015
5
Joined
Jan 25, 2015
Messages
5
Thank you for the optimism, I can use it ;)

My most recent attempt was trying to replicate/mimic the "Lightning bug" circuit from here:

http://3.bp.blogspot.com/-wyqN744A7...206.1.0%20Standard%208272012%2085225%20PM.jpg

However, the only op amp I happened to have available at home was the LT1179CN, and I'm still struggling to understand the difference between the different op amps so it may well be that it's not up to the task at all. This is the datasheet I've been looking at: http://cds.linear.com/docs/en/datasheet/11789fb.pdf

I tried using two LT1179 (but only one of the op amps per package) - one to replace the MCP601P and another one for the OPA277P. I use a 6V (4x1.5V) battery pack for the equivalent of the MCP601P/reference voltage, and I power the one logically replacing the OPA277P from a separate 5V source (which happens to be from the Arduino). For testing I only included the 1kOhm resistor from the feedback loop.

Finally, I set up a 10kOhm resistor for the load/test circuit, powered using the same 5V source. I was hoping to see a ~5/10k=0.2mA current, amplified 1000x to some ~0.2V. And it does sorta work, only I'm seeing a negative voltage instead of a positive one. I'm aware of the fact that the amplicfication will "turn things around", but I've double and triple checked everything to not avail. And I would accept the negative voltage if it wasn't for...

Maybe more perplexing is that if I vary the resistance of the load I do see the amplified voltage change too, but it's not 1:1 with the resistance, so at 330ohm I'm only seeing -0.7V.

Clearly I'm doing something wrong, and my suspicion is the the LT1179 op amp isn't really good for this, but I'm happy to accept that there's more than that I'm doing wrong (remember: newbie!).
 

Laplace

Apr 4, 2010
1,252
Joined
Apr 4, 2010
Messages
1,252
* I'm expecting to use my Fluke 117 to present the actual data (it can do mV DC, but not mA/uA)
For the low μA range I would try a μA-to-mV converter and read the mV with the multimeter. For the converter try a 1KΩ resistor. It will introduce 1 mV of offset into the circuit for every μA, but the circuit might not notice that. For higher currents use a smaller resistor.
 

mikeee

Jan 25, 2015
5
Joined
Jan 25, 2015
Messages
5
I've attached the schematics I'm using - I hope I got it all right.

Rload is supposed to reflect whatever device I'm trying to measure the current for, and in my experiments I'm using a trim pot to vary the resistance from 10kOhm all the way down to 100Ohms or so. I then measure the voltage between Vpos and Vneg, naively hoping to see roughly 1mV/mA, but I'm not getting the linear amplification I'm expecting.
 

Attachments

  • microamps1.png
    microamps1.png
    226.6 KB · Views: 533

Laplace

Apr 4, 2010
1,252
Joined
Apr 4, 2010
Messages
1,252
The LT1179 is a quad device. Are there two separate packages, since IC1 & IC2 are shown as powered by separate sources? In order for this circuit to work correctly both IC1 & IC2 must be powered by the same 9V source. Please verify whether the circuit is actually wired as shown in the diagram.
 

Arouse1973

Adam
Dec 18, 2013
5,178
Joined
Dec 18, 2013
Messages
5,178
You are also driving the output of IC1 into 0V. I assume you were trying to create a midpoint of the supply? All you are doing with IC2 is switching the output into saturation. You need to be measuring across the load resistor with an op-amp that has rail to rail inputs.

But also make sure the common mode input range is high enough for the supply you are using (high side sensing only). If you are high side sensing then you will need to level shift down so you have a 0V reference output. This can be done normally with a transistor (NPN) across the op-amp configured as emitter follower.

You feed the current generated by the transistor through a resistor which produces a 0V referenced output. You don't need to do this if you are low side sensing. Let us know which way you want to do it and we can do you a diagram
Adam
 

mikeee

Jan 25, 2015
5
Joined
Jan 25, 2015
Messages
5
Thanks for the great answers and feedback. First answers to some questions:

I am indeed using two different LT1179 devices/packages, and only using one of the four op amps in each of the quads (two out of the total eight). If I understand things correctly I might as well use only one device/package, but I wanted to get things to work before "optimizing".

I'm currently aiming for low side sensing. I understand that there are caveats with doing that for the general case, but for this learning exercise...

Now for the good part:

I updated the schematic to use the battery/9V to supply power to both the ICs/both LT1179 packages, and found a small snafu in my wiring and - it works!! I have attached the new, working schematic and by varying Rload and measuring the voltage between Vpos and Vneg I get the expected 1V/mA reading. Thanks guys for nudging me in the right direction!

However, I do have one question: the reading is correct for currents smaller than roughly 2.5mA (reading less than 2.5V of voltage difference), but when the current goes above that the voltage doesn't grow - and over 10mA it even drops a bit. Can anybody give me a helpful hint as to why that is the case?
 

Attachments

  • microamps2.png
    microamps2.png
    232.5 KB · Views: 445
Top