 This project describes a simple low-current meter I devised to check the sleep current of different microcontroller circuits, such as ones based on AVR microcontrollers. It’s capable of measuring currents of between 10µA and 30nA with reasonable accuracy, using an ATtiny84 and a few other low-cost parts.

Introduction
Measuring very small currents accurately is notoriously difficult with normal digital multimeters; they either don’t provide a low current range at all, or if they do, they create a voltage drop referred to as the “burden voltage” which can render the display inaccurate. One way round this is to use a precision current adapter, such as David L. Jones’s µCurrent , but such circuits are expensive.

Since I didn’t need high accuracy I decided that an alternative approach would be to calculate the current draw based on the time it takes a capacitor to discharge. A capacitor discharging into a resistive load is exponential, like radioactive decay. The voltage halves for successive fixed time intervals, so if the voltage starts at 5V, after a certain time t it will drop to half this value, 2.5V. After a further time t it will drop to 1.25V, and so on. The time t is called the half life.

The half life is log(2) of the time constant RC, or 0.693 x RC. So for a fixed capacitor C, by measuring the time taken for the voltage to drop to 50% of its initial value we can calculate R, the effective resistance of the load, and hence the current consumption.

Using a microcontroller with ADC inputs it’s easy to do this, and few other components are needed apart from the capacitor; the downside is that measurements of currents in the nanoamps may take a few seconds while the capacitor discharges.”