Measuring small currents in battery-powered systems

This is a simple method for measuring small currents (μA/nA).

I wanted to see how much current my temperature logger is consuming while in various sleep modes for the various components on the board. I have a good multimeter but unfortunately, its smallest DC current range is 400mA. Even if the burden voltage isn’t that big, it’s impossible to measure anything below 10μA.

As I’m not lucky enough to own one of Dave Jones’ μCurrent I tried to find an other method. I inspired myself of a Microchip App note (AN1416).

The idea is to power a circuit with a charged capacitor and measure the discharge time, thus the current:

I = C*(Vd/t)

Where I is the current(A), C the capacity(F), Vd the voltage drop(V) and t, the time (s).

The method can be easily set up on a breadboard and it’s ideal for measuring small currents that don’t change over time (typically, microcontroller’s sleep modes):


Measuring small currentsIt’s better to use a nomally-opened switch, so a push on it will disconnect the power supply and allow the capacitor to discharge.


Measuring small currents breadboardIn my setup, I’m using a LM317 voltage regulator to have 3,00V (coin cell battery voltage) at the Vd point when my microcontroller is connected and the switch closed.

At the same time I open the circuit with the switch, I start a timer and usually stop it when the capacitor voltage dropped 0,2V  (2,8V at the capacitor)

For example, with a capacitor of 6600uF (measured), a Vd of 0,2 Volts and 50 seconds to reach it:

I=6600*(0,2/50) = 26,4μA

The value of the capacitor can be adjusted, so you don’t need to wait too long when dealing with nA currents. ex:

Vd=0,1V ; C=10uF ; t=30s : I=33nA

And so on..

To make sure the capacitor internal leakage is not affecting the measure too much, repeat it with no load connected to see how fast the current is dropping. It also allows you the see if the voltmeter impedance isn’t too high.

As soon as I get my temperature logger new PCB, I’ll measure the current in sleep / deep sleep mode for the PIC18F26J50, the EEPROM, the temperature sensor and I’ll post them here.