低功耗 micro-SD 卡存储

电器工程 Arduino 低电量 微信 数据记录仪
2022-01-20 16:08:36

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

据我所知,存储这么多数据的唯一实用解决方案是使用 SD 卡。然而,SD 卡的耗电量似乎比我们所能承受的要多,我们现在拥有的卡的空闲电流为 0.2mA,在写入时更多。

所以有些问题:

  • 高边开关是控制 SD 卡功耗的唯一实用方法吗?
  • 切换卡的电源时我们应该注意哪些警告?例如,磨损均衡是在块写入之后执行的过程,还是可以随时发生。
  • 我们还应该考虑其他替代方案吗?
4个回答

如果您预算每 µA 计数平均 0.3 mA。对于微控制器来说不是什么大问题,但 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卡也是如此。

(用有用的信息回答我自己的帖子)

我用一组有限的 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 6 级

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

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

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

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

对于旧的 256Mb 的 SD 卡,我见过的 SD 卡的最低睡眠电流约为 0.05 mA,并且像 OSBSS 人员一样,我的数据记录器很少低于 0.1 mA,因为典型的 SD 卡似乎消耗大约 0.07 mA。尽管如此,当您达到该领域时,如果您的引导调节器足够高效,您应该可以轻松地从 AA 中获得 3-4 个月的时间。

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

至于切换:为 arduino 编写 SD 库的人警告不要在 Arduino 操场上给 SD 卡断电,所以我没有采用这种方法。我很想知道 OSBSS 人的效果如何(?)