Electronic – arduino – Low power micro-SD card storage

arduinodataloggerlow-powermicrosd

We are building a low-power data logger based upon the ATmega328P, in order to make use of the Arduino boot loader and IDE, etc. Ideally power consumption should be less than 0.3mA @ 3.3V to get around 4 months life on a single AA battery. Sensor data will stored at a maximum of 76 bytes/sec for the 4 months, giving around 750 MiB of data. Therefore we have the need for a large memory device, that is still low-power.

From what I can tell, the only practical solution to store this much data is to use an SD card. However SD cards seem to use a little more power than we can afford, 0.2mA idle current for the cards we have now, and more when they are writing.

So some questions:

  • Is a high-side switch the only practical way of controlling power consumption of the SD card?
  • Are the any caveats we should be aware of when switching power to the card? For example, is wear-levelling a process that will be performed after a block write, or can it happen at any time.
  • Are there any other alternatives we should consider?

Best Answer

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.