Take the 2-minute tour ×
Electrical Engineering Stack Exchange is a question and answer site for electronics and electrical engineering professionals, students, and enthusiasts. It's 100% free, no registration required.

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?
share|improve this question
solarduino.net/?p=58 is an article that might be of some interest to you –  vicatcu Aug 4 '12 at 15:13
Consider adding external RAM like 23LC1024. Then you can buffer more and keep the SD card shut down. Microchip also makes a battery-backed version, if the idea of data sitting around in volatile memory bothers you. –  markrages Oct 15 '12 at 19:01
add comment

1 Answer 1

up vote 11 down vote accepted

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.

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.

share|improve this answer
Thanks for the info. Unfortunately, current we are limited to MCUs with Arduino boot loaders available, but are considering the Atmega644PA due to the increased RAM. The MCU will be woken up by an RTC interrupt to perform the measurements and be in power down at other times. Are there alternatives to the SD card? Your suggestion to get a MCU with lots of RAM for a large buffer is a good one that I didn't think of. :) –  geometrikal Aug 4 '12 at 7:25
add comment

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.