Low power micro-SD card storage

If you're budgeting 0.3 mA average every µA counts. Not so much of a problem for the microcontroller, but the SD card will consume tens of mAs. You want to have it switched on as little as possible. But the ATmega328P has only 2 kB of RAM, so that means your sample buffer will be full in less than half a minute, and then it's time to write to the SD card. Two times a minute.

I would consider a TI MSP430 instead of the AVR. It's still the lowest power commonly available controller. It will save you the µA you'll need when writing to the SD card. The MSP430F5418A also has 16 kB RAM, so that you have to power on the SD card only once every three and a half minute.

You can run the MSP430 on its low frequency oscillator, and switch to the high frequency DCO (Digitally Controlled Oscillator) for writing to the SD card, so that this takes as little time as possible.

For powering the SD card I would indeed use a high-side switch. The BSS215P is a suitable logic-level P-MOSFET.

edit
If you don't mind a BGA package a NAND Flash device may be an alternative to the SD card. This one can operate in MMC or SPI mode. It consumes less than an SD card, but still consumes 200 µA in standby, so you'll still want to shut it off with the high-side FET. Be sure to make the I/Os to the chip low before switching off power. That goes for the SD card as well.


(Answering my own post with useful information)

I have performed some experiments with a limited set of SD cards to check their power consumption. They seem to vary widely between manufacturers and within types, some cards consume 10 times more sleep power than others.

There are two results below. The first is a the estimated current consumption when sleeping, and the second is the average current consumption for approximately 1 sector write every 5 second for my board.

Card                     Sleep (mA)         Cyclic write (mA)   Number of cards tested

Sandisk 4GB Class 4      0.34-0.95 (0.69)   0.64-1.25 (1.05)    5
Verbatim 4GB Class 4     0.06-0.12 (0.09)   0.12-0.17 (0.16)    6
Kingston 4GB Class 4     1.34-1.34 (1.34)   1.47-1.47 (1.47)    1
Lexar 4GB Class 4        0.09-0.09 (0.09)   0.11-0.12 (0.12)    2

Lexar 8GB Class 6        0.06-0.09 (0.08)   0.09-0.12 (0.10)    4 (best so far)

Toshiba 16GB Class 10    0.12-0.12 (0.12)   0.18-0.18 (0.18)    1

I haven't included peak current because it seems not a reliable measurement with my multimeter. Probably because the card is only written to for a few ms. But I noticed that all the cards gave around a 5 - 6mA peak measurement (smoothed) whereas the Lexar gave 2 - 3mA (smoothed). Note, the real max current is an order of magnitude greater than this, but is does indicate the Lexar card has low write current as well as sleep.

Current winner

Lexar 8GB Class 6

I will update this list as more tests are done. (Last update: 2014-08-14)


Nice tests. Check out our low power datalogger tutorial using Arduino Pro Mini and SD cards: http://www.osbss.com/tutorials/temperature-relative-humidity/

It probably contains exactly what you need (RTC interrupt wakes it up, close to one year battery life, etc.) Our "mainstream" power consumption is around 0.195mA @ 3.3V, and this can go down to 0.11mA or much lower, if you use other boards or the bare ATmega328P chip itself.

Just like @stevenvh said, you'll need a transistor to control power to the SD card reader when the processor is in sleep mode.