低電力マイクロSDカードストレージ


18

ArduinoブートローダーやIDEなどを利用するために、ATmega328Pをベースにした低電力データロガーを構築しています。単三電池。センサーデータは4か月間、最大76バイト/秒で保存され、約750 MiBのデータを提供します。したがって、大容量のメモリデバイスが必要ですが、それでも低電力です。

私が言えることから、これだけのデータを保存する唯一の実用的な解決策は、SDカードを使用することです。ただし、SDカードは、余裕があるよりも少し多くの電力、現在使用しているカードの0.2mAのアイドル電流、および書き込み中にさらに多くの電力を使用するようです。

いくつかの質問:

  • SDカードの消費電力を制御する唯一の実用的な方法は、ハイサイドスイッチですか?
  • カードの電源を切り替える際に注意すべき注意事項はありますか?たとえば、ブロックの書き込み後に実行されるプロセスのウェアレベリング、またはいつでも発生する可能性があります。
  • 他に検討すべき選択肢はありますか?

1
solarduino.net/?p=58はあなたに興味があるかもしれない記事です
-vicatcu

23LC1024などの外部RAMを追加することを検討してください。その後、さらにバッファリングして、SDカードをシャットダウンしたままにすることができます。揮発性メモリにデータが存在するという考えが気に入らない場合、Microchipはバッテリーバックアップバージョンも作成します。
Markrages

回答:


19

0.3 mAの平均をµAカウントごとに予算設定している場合。マイクロコントローラーにとってはそれほど大きな問題ではありませんが、SDカードは数十mAを消費します。スイッチをできるだけオンにしたくない場合。しかし、ATmega328PのRAMは2 kBしかないため、サンプルバッファーは30分以内に満杯になり、SDカードに書き込みます。1分間に2回。

AVRの代わりにTI MSP430を検討します。まだ一般的に利用可能な最低電力のコントローラーです。SDカードへの書き込み時に必要なµAが節約されます。MSP430F5418Aはまた、あなたがSDカードの電源をオンにする必要がありそうという、16キロバイトのRAMを持っているだけに一度3半分。

MSP430を低周波オシレーターで実行し、SDカードへの書き込み用に高周波DCO(デジタル制御オシレーター)に切り替えると、できるだけ時間がかかりません。

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

AVRは、GPIOピンからSDカードを供給することさえできます(20mAが可能です)。
JimmyB

14

(有用な情報で自分の投稿に回答する)

SDカードの限られたセットでいくつかの実験を行って、消費電力を確認しました。それらはメーカー間およびタイプ内で大きく異なるようで、一部のカードは他のカードよりも10倍のスリープ電力を消費します。

以下の2つの結果があります。1つ目はスリープ時の推定消費電流、2つ目はボードの 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(平滑化)を示したことに気付きました。実際の最大電流はこれよりも1桁大きいことに注意してください。ただし、これは、Lexarカードの書き込み電流が低く、スリープ状態であることを示しています。

現在の勝者

レキサー8GBクラス6

さらにテストが行​​われると、このリストを更新します。(最終更新:2014-08-14)


実験にはuCurrent(eevblog.com/projects/ucurrent)が必要です。オシロスコープに接続すると、プログラムのさまざまなシーケンス中の経時的な消費電力の優れた洞察を得ることができます。
RJR

2

素敵なテスト。Arduino Pro MiniおよびSDカードを使用した低電力データロガーチュートリアルをご覧くださいhttp : //www.osbss.com/tutorials/temperature-relative-humidity/

おそらく、必要なものが正確に含まれています(RTC割り込みにより起動され、1年のバッテリー寿命に近い、など)。当社の「主流」消費電力は約0.195mA @ 3.3Vであり、これは0.11mAまたはそれよりはるかに低くなります。他のボードまたはベアATmega328Pチップ自体を使用する場合。

@stevenvhが言ったように、プロセッサがスリープモードのときにSDカードリーダーへの電力を制御するためにトランジスタが必要になります。


0

SDカードで見た中で最も低いスリープ電流は、古いsandisk 256Mbで約0.05 mAであり、OSBSSの人々のように、典型的なSDカードでは約0.07 mAを消費するため、データロガーのビルドが0.1 mA未満になることはめったにありません。それでも、その領域に到達したときに、ブートレギュレータが十分に効率的であれば、AAを3〜4か月で簡単に取得できるはずです。

SDカードアダプターの未使用の接続をプルアップしていることを確認してください。そうしないと、スリープ電流が非常に高くなる可能性があります。Rocket Screemの低電力ライブラリも検討してください。これにより、さまざまな328Pスリープモードを簡単に開始できます。

切り替えに関しては、arduinoのSDライブラリを作成したフェローは、ArduinoのプレイグラウンドでSDカードの電源を切ることを警告しているため、そのアプローチを追求していません。OSBSSの人たちにどのように作用したのか聞きたいです(?)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.