14

This might be old news in a half a decade or two but by today's means, I am referring to electronic prototypes and designs which would draw in a μA (uA) and even nA range of current.

Some recent MCUs, such as SAMD21 that I am using atm are armed with internal clocks such as ,always on, Ultra Low Power Internal 32kHz RC Oscillators which would draw only 125nA, and the whole microcontroller is capable of consuming only 6.2μA on STANDBY mode with a live RTC.

In these type of quiescent current and power consumption levels the smallest limitations in the internal machinery of bench measurement devices such as multimeters and oscilloscopes could add a fair bit of error to the overall measurement or even measure a flat out wrong value in situations like a different relay kicking in when changing the resolution from 6 to 8 decimal places accuracy on your multimeter.

What is the most precise method of measuring the overall quiescent current/power consumption for such applications?


Update:

As I mentioned in one of the replies, measuring low currents is hard but very possible, however, making conclusions on the integrated amount of current consumption to come up with numbers for the realistic over all power consumption is more what I had in mind.

I have bumped into some solutions such as wide range current to frequency converter, however the wide range in this application note is only limited to the max of 200uA and in my case, my max current can rise to milliamps when my radio is transmitting and could drop to as low as 3uA when the whole system goes to sleep.

Mehrad
  • 656
  • 2
  • 7
  • 20
  • 2
    Well, if the current is DC a good bench top multimeter can measure it... – Vladimir Cravero Mar 23 '17 at 00:31
  • 1
    @VladimirCravero, but can it measure it without actually affecting the measurement. Heisenburg rocks. – Trevor_G Mar 23 '17 at 00:32
  • You would probably have to go back 50 years and use a traditional, and sensitive, moving coil current meter. – Trevor_G Mar 23 '17 at 00:33
  • or maybe one of these if you have deep pockets. http://www.rbdinstruments.com/products/picoammeter.html – Trevor_G Mar 23 '17 at 00:47
  • 2
    But you may be able to get a fairly good guestimate by powering the device from a capacitor instead of a battery and comparing the discharge plot with and without the device connected. – Trevor_G Mar 23 '17 at 00:49
  • 7
    A 125nA current can easily be measured with a 1M current sense R to create 125mV and thus the source voltage can be raised by the same amount. What's the problem? – Tony Stewart EE75 Mar 23 '17 at 01:03
  • Have thought about this Trevor, however, as you know, self discharge of a cap could be significant and if you would want to have a worthy measurement you gotta go into trouble of characterizing the cap. In the meanwhile even though your overall power consumption would be extremely reliable, you would lose the visibility of short spikes which would contribute to the overall consumption (if any). – Mehrad Mar 23 '17 at 01:04
  • additional 75 mV current sense R between 1M + decoupling and load to detect the expected spike current easily with a Diff amp. What's the problem? – Tony Stewart EE75 Mar 23 '17 at 01:11
  • 10
    The [EEVBlog uCurrent GOLD](https://www.eevblog.com/product/ucurrentgold/) is cheap, has a bandwidth of >300 kHz, and a resolution of 1 pA with a 5.5 digit meter when measuring nA. You could connect it to a multimeter for accurate DC measurements and an oscilloscope for transient measurements. – uint128_t Mar 23 '17 at 01:53
  • Simple and often workable solution is to supply a capacitor via a series R and power the device from the capacitor (supply still connected). Dimension Rseries to give useful voltage drop at lowest current of interest but also if possible such that at Imax the meter is on the same range. eg for 100 nA resolution and 10 uA Imax then say I_10 uA = 100 mV and I_100 nA = 0.1 mV - or whatever suits meter used. In this case Rseries = V/I = 0.100V/10 uA = 10K. | THEN short Rs if desired to bring cap up to full supply. Unshort Rs and allow to stabilise. ... – Russell McMahon Mar 23 '17 at 08:31
  • ... If V_Rs is measured with a meter always in parallel and Rin_meter >> Rs then system can be either calibrated or calculated to allow for Rmeter. Using a known test load so Iload is known will allow calibration. – Russell McMahon Mar 23 '17 at 08:32
  • Amplify the low signal – Keno Mar 23 '17 at 20:56

5 Answers5

12

One solution is to use an instrumentation amplifier to measure the voltage drop across a shunt resistor. These are designed to offer an extremely high input impedance to both inputs of the amplifier (in excess of 1 giga-ohm), while allowing you to amplify this signal by relatively large factors (1000x is not uncommon). Note that the fact that there is a really high input impedance isn't too terribly important for this particular application, however the high amplification factor is.

The basic schematic looks like this (I'm using IA is a self-contained package for an instrumentation amplifier; often, these have an external gain resistor so you can choose whatever gain you want):

schematic

simulate this circuit – Schematic created using CircuitLab

The large amplification factor allows you to use a relatively small sense resistor, mitigating a large portion of the effect of the burden voltage on your DUT.

If you're just looking to buy an off-the-shelf solution which does effectively this, you could look into something like the uCurrent. There are probably also specific IC's designed for this current range.

Since the outputs of these type of current sensors is just a relatively isolated analog voltage, you can use any standard oscilloscope or voltage meter to measure the current.

These very simple devices are good enough for things in the nano and micro ampere ranges and are relatively easy to use.

For even smaller currents (pico or fempto ampere ranges), there are specially designed chips such as the LMP7721, along with a few pages of application notes on low current design. It's unlikely you'll want something like this for measuring power current draw. These are typically used by the scientific community for measuring sensor outputs (photodiodes/other very low current sensors).

helloworld922
  • 16,600
  • 10
  • 54
  • 87
  • 1
    Heh, I commented above, and then noticed your uCurrent link. The uCurrent is definitely the easiest OTS solution to this, and +1 for explaining the DIY approach. – uint128_t Mar 23 '17 at 01:55
  • 2
    The problem will arise when the device will wake up, and the current will jump many orders of magnitude. To accommodate possibly enormous range, the shunt must be either dynamically variable, or have logarithmic resistance. One solution (using schottky diode as variable shunt) was discussed here few moths back, but I can't find the link. – Ale..chenski Mar 23 '17 at 02:56
  • Ok, here is the link: http://electronics.stackexchange.com/q/255646/117785 – Ale..chenski Mar 23 '17 at 03:39
  • 1
    That was a great discussion link you provided @AliChen, thanks. The uCurrent is a great product, but for my home dev I can do without accuracy, providing I can do reasonable comparisons down to about 1 uA. I work a lot with AVR's and simply put a 1N914 and parallel 100k resistor in the ground lead. I use my CRO to watch the current across the resistor. I manually set the power supply to 5 V initially and manually adjust it down to 3.3 V when it's asleep. I have no problem comparing deep sleep options this way. No great accuracy, but it works for comparing both processors and sleep options. – Jack Creasey Mar 23 '17 at 04:52
  • Would you have any recommendation on how to measure the overall "power consumption" by any chance? Measuring the current is one side of the problem, however, integrating the measurements and making an overall power consumption conclusion is a totally different maze. I was expecting people come up with ideas such as current to frequency converters, etc. – Mehrad Jun 09 '17 at 01:55
  • If you're expecting reasonably often power up and transmit cycles, then you can low-pass filter the inputs to the current sensor and this will make measuring the accumulated current easier (that's effectively what many Coulomb counters do). If you're expecting relatively infrequent transmits, then measure the background separately from the transmit periods, and do math to estimate your application's power consumption given a certain transmit duty cycle. – helloworld922 Jun 13 '17 at 23:07
10

The Microchip AN1416: Low Power Design Guide, on page 6 specifies a very interesting and simple solution to measure very low current static consumption, using what it called 'the capacitor method'.

A known charge is set on a known capacitor. This charge is then used to supply power for the Device under Test. After a known time, you disconnect the capacitor from the DUT and measure their residual voltage. With this delta and with a formula supplied by the same document, you can estimate how much current your device consumes over a period of time.

The document also points out which types of capacitors to use and to how to account the leakage current of the capacitor.

The document Low-Power Design Guide from Microchip has further explanation.

Mahendra Gunawardena
  • 1,746
  • 1
  • 14
  • 18
4

The professional solution is to use a sufficiently good bench multimeter.

I've met people who measured the average current consumption (< 10µA) as part of their software development routine, using something like a Keysight 34465A with the 50000 measurements/s option.

starblue
  • 6,462
  • 2
  • 21
  • 35
1

An off-the-shelf solution is a uCurrent from CMicrotek, worth the price. I easily measured 1uA currents. With a scope I can see when different functions of my application are running. You can connect it to a scope or a benchtop voltmeter.

filo
  • 8,801
  • 1
  • 25
  • 46
1

I've been developing battery powered IoT devices now for over 10 years, and have found multiple methods to do this depending on what I'm trying to accomplish. If simply trying to find the low sleep current of a static system, I like to keep my setup relatively simple, and use common items you can find in most labs, and use basic electrical concepts. Referencing the image below, choose a sense resistor (R1) value that gives roughly a few hundred milivolts with the expected current draw. This will allow a standard DMM to get a relatively accurate measurement while still providing adequate voltage to the DUT, even at low supply voltages. Using Ohms's Law, you can calculate the current: I = V/R. Using the expected current value from the original post of 6.2 uA, a sense resistor value of 20k-30k (0.1 to 1%) would be sufficient.

In a case where the DUT needs to be initialized to a low power state, a shorting jumper could be placed across the sense resistor R1 until the low power state is maintained. This would allow the DUT to draw as much current as it needs without causing an excessive voltage drop. Once the DUT gets to the expected low power state, the shorting jumper can be removed, and the idle current measurement can be taken.

enter image description here

While the above method works well under static conditions, it will not work under dynamic conditions, especially with the peak currents typically seen in battery powered devices due to the high impedance that the measurement method presents. For these more real world operating conditions as you describe in your update, you will need a device that accurately measures and records the current over a very wide dynamic range, possibly up to 100,000:1 (100mA down to 1uA), do it with enough speed to capture the quick turn on and off transitions, and continuously integrate the results.


This was something that always took a great deal of time and effort in my early days. So much so that I decided to create a device that was purpose built to handle this for me. Check out the link below:

Better Embedded Engineering Battery Energy Estimator 300

JRE
  • 67,678
  • 8
  • 104
  • 179
BEE
  • 546
  • 2
  • 4