低功耗Micro SD卡存储


18

我们正在基于ATmega328P构建低功耗数据记录器,以利用Arduino引导加载程序和IDE等。理想情况下,功耗应小于0.3mA @ 3.3V,这样才能一次获得约4个月的使用寿命AA电池。传感器数据将在4个月内最多以76字节/秒的速度存储,从而提供大约750 MiB的数据。因此,我们需要仍然低功耗的大型存储设备。

据我所知,存储这么多数据的唯一实际解决方案是使用SD卡。但是,SD卡似乎消耗的功率超出了我们的承受能力,目前拥有的卡的闲置电流为0.2mA,并且在写入时消耗的电流更多。

所以有些问题:

  • 高端开关是控制SD卡功耗的唯一实用方法吗?
  • 在切换卡的电源时,有什么需要注意的警告吗?例如,损耗均衡是在块写入之后执行的过程,还是可以随时发生的过程。
  • 我们还有其他选择吗?

1
solarduino.net/?p=58是您可能感兴趣的文章
vicatcu,2012年

考虑添加外部RAM,例如23LC1024。然后,您可以缓冲更多并保持SD卡关闭。如果数据存储在易失性存储器中的想法困扰您,Microchip还将提供电池供电的版本。
2012年

Answers:


19

如果预算的平均电流为0.3 mA,则每µA计数。对于微控制器来说并不是什么大问题,但是SD卡将消耗数十mA的电流。您希望尽可能少地打开它。但是ATmega328P只有2 kB的RAM,这意味着您的样本缓冲区将在不到半分钟的时间内充满,然后是时候写入SD卡了。一分钟两次。

我会考虑使用TI MSP430代替AVR。它仍然是功耗最低的常用控制器。这将节省您写入SD卡时所需的µA。该MSP430F5418A也有16 KB的RAM,让你有权力在SD卡上只有一次三个半分。

您可以在MSP430的低频振荡器上运行它,然后切换到高频DCO(数字控制振荡器)以写入SD卡,这样就可以花费最少的时间。

为了给SD卡供电,我确实会使用一个高端开关。所述BSS215P是合适的逻辑电平P-MOSFET。

编辑
如果您不介意BGA封装,则NAND闪存设备可以替代SD卡。这一款可以在MMC或SPI模式下运行。它的消耗少于SD卡,但在待机状态下仍消耗200 µA,因此您仍想通过高端FET将其关闭。在关闭电源之前,请确保将芯片的I / O降低。SD卡也是如此。


谢谢(你的)信息。不幸的是,当前我们仅限于具有Arduino引导加载程序的MCU,但由于RAM增加而正在考虑Atmega644PA。MCU将被RTC中断唤醒以执行测量并在其他时间掉电。SD卡有替代品吗?我没有想到您的建议,那就是选择一个具有大量RAM的MCU作为较大的缓冲区。:)
geometrikal

@stevenvh BSS215P MOSFET的哪些特性使其适合该应用?
ElecEnthusiast 2015年

AVR甚至可以通过GPIO引脚提供SD卡(应为20mA)。
JimmyB

14

(为自己的帖子提供有用的信息)

我已经对一组有限的SD卡进行了一些实验,以检查其功耗。它们似乎在制造商之间和类型之间差异很大,某些卡的睡眠能力是其他卡的10倍。

以下有两个结果。第一个是睡眠时的估计电流消耗,第二个是我的电路板每5秒钟写入大约1个扇区的平均电流消耗。

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

我没有包括峰值电流,因为用万用表测量它似乎不是可靠的测量。可能是因为该卡只被写入了几毫秒。但是我注意到所有的卡都给出了5-6mA的峰值测量值(平滑),而Lexar给出了2-3mA的峰值(平滑)。请注意,实际最大电流比这个值大一个数量级,但这确实表明Lexar卡具有较低的写入电流以及睡眠状态。

现任冠军

雷克沙8GB Class 6

随着更多测试的完成,我将更新此列表。(最新更新:2014-08-14)


您将需要一个uCurrent(eevblog.com/projects/ucurrent)进行实验。连接到示波器,它可以让您深入了解程序中各种序列随时间的功耗。
RJR

2

不错的测试。查看使用Arduino Pro Mini和SD卡的低功耗数据记录器教程:http : //www.osbss.com/tutorials/temperature-relative-humidity/

它可能恰好包含了您所需要的(RTC中断将其唤醒,接近一年的电池寿命,等等。)我们的“主流”功耗在3.3V时约为0.195mA,并且可以降至0.11mA或更低。如果您使用其他板子或裸露的ATmega328P芯片本身。

就像@stevenvh所说的那样,当处理器处于睡眠模式时,您需要一个晶体管来控制SD卡读卡器的电源。


0

对于旧的256Mb Sandisk,我看到的SD卡的最低睡眠电流约为0.05 mA,像OSBSS一样,我很少让数据记录器的电流低于0.1 mA,因为典型的SD卡似乎消耗约0.07 mA的电流。不过,如果您的启动调节器足够有效,那么到达该区域时,您应该可以轻松地从AA中抽出3-4个月。

请确保检查是否拉起了SD卡适配器上未使用的连接,否则睡眠电流可能会更高。还要探索Rocket Screem 的低功耗库,因为它使您可以轻松进入不同的328P睡眠模式。

至于切换:为arduino编写SD库的人警告不要在Arduino操场上关闭SD卡的电源,因此我没有采用这种方法。我很想知道它对OSBSS家伙的效果如何(?)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.