# How to Measure Power Consumption on Extremely Low Power Devices?

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.

• Well, if the current is DC a good bench top multimeter can measure it... – Vladimir Cravero Mar 23 '17 at 0:31
• @VladimirCravero, but can it measure it without actually affecting the measurement. Heisenburg rocks. – Trevor_G Mar 23 '17 at 0:32
• 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 0:49
• 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? – Sunnyskyguy EE75 Mar 23 '17 at 1:03
• The EEVBlog uCurrent GOLD 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 1:53

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):

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).

• 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 1:55
• 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 2:56
• Ok, here is the link: electronics.stackexchange.com/q/255646/117785 – Ale..chenski Mar 23 '17 at 3:39
• 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 4: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 9 '17 at 1:55

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.

Below the document from Microchip.

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.

• There are also multimeters with ranges below 1 µA, 200 nA, 20 nA, 2 nA. – Uwe Mar 23 '17 at 21:20

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.

• EEVBlog uCurrent GOLD is much cheaper. – Chupacabras Mar 23 '17 at 6:15
• @Chupacabras An IKEA fork is also cheaper, they don't do the same things. – pipe Feb 21 at 14:40

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.

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

New contributor
BEE is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
• If you're going to promote a product that you developed, you must disclose your affiliation with it! – Dave Tweed Oct 10 at 18:48

## protected by Dave Tweed♦Oct 10 at 18:40

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?