4年目のArduino互換データロガー基板。第三世代ということで、今までのプロジェクトで載せたことのある機能を盛り込んで、独立動作する汎用的なオンボードコンピューターとして使えるようにしてみた。
スリープ機能を重視し、目標消費電流は平均3mW以下。
システムブロック図
今回はATmega644PA/1284Pを8MHzで動作させて、3.3V単電源とした。
オンボードの機器として、MPU-9250とRTCに加えて、気圧センサ(MS5611)とシャントモニタ(INA226)を追加。
外部電源出力は、この基板では主にGPSやUART接続の通信モジュール等の接続を想定している。
基板の電源と独立した2つのレギュレータを載せ、マイコンから個別に出力をONOFFできるようにした。 EN出力付きのレギュレータは、ロードスイッチとしても使うことができる。レギュレータの各種保護機能により、下流での電源異常時の波及故障を分離できるのも良い。 とショートモードばかり気にするお仕事の癖が出てしまった…。 いろいろな故障モードを発生させることで、システムは強くなっていく。
また、SPI接続の各種ROMに対応。SO-8サイズのFlashROMやFRAMを搭載できる。
microSDカードでも、ブランド製品は初期化後アクセスしない期間の待機電流は100μA程度まで下がるが、大容量のデータを貯める必要が無ければ、オンボードのメモリは電力的に有利だ。
初めて素子を45°配置してみたが、なかなかかっこいい。
基板はelecrowにいくつかの基板を一緒に発注している。発注して6日で届くので便利だ。(輸送はShenzenDHL)年々品質が上がっているような気がする。
実装が一通り終わったところで、スリープモードに移行した場合の消費電流を調べた。
MPU-9250やINA226はデフォルトだと電源投入後すぐに動作を始めるため、何もしなくても数mA消費してしまう。こうしたセンサはパワーダウンを有効化するためにコマンド送信が必要だ。センサをシャットダウンすることで、基板全体での待機電流値は200μA程度にまで落ちた。
消費電流の調査(デバッグ)
200μAは小さいほうだけど、想定よりかなり多い。
ためしに設計的には共通な第二世代のロガー基板を使って同じコードを走らせたところ、こちらは79μAだった。実装途中のマイコンとレギュレーターだけ載せた基板でも200μAとなる。原因を探ると実装したレギュレーターの消費電力にあった。 試作で安く手に入る型番を使っていたけれど、これがかなり自己消費していた様子だ。
いつも使うLT1761に交換してみると、待機時の電流は72μAまで落ちた。一個で安いレギュレータが10個買える値段なのだけれど、逆電流防止機能もあるので使っている。
とりあえず、常時通電するマイコンの系統だけは自己消費の少ないものにするのがよさそうだ。TIのTPSシリーズでは500nAレベルのものもある。効率を目指すのであれば、昇降圧DC/DCも視野に入ってくる。
せっかくなので段階的に部品を実装しながら調べてみた。
マイコンは端子の初期化とデジタルICのスリープコマンドを送った後、WDTで指定時間経過で間欠駆動するコードを入れたもの。(RAMが保持されているので、完全なディープスリープではない)
レギュレータ無しで電源装置から3Vを与えたとき、
・ATmega1284P 8MHz 23uA
・ATmega644AP 8MHz 23uA
・ATmega644AP 8MHz 23uA
LT1761ES5を実装し、3.7Vで動作させたとき
・ATmega1284P 8MHz +LT1761ES5 45uA
・第三世代 フル実装基板 72uA
参考 第二世代基板(ATmega644AP 16MHz)
3.7V時 79uA
5V時 110μA
20μAほどは、RTCの動作電流、FlashROMやセンサの待機電流などが現れているようだ。
・ATmega1284P 8MHz +LT1761ES5 45uA
+MPU-9250 55μA (データシートでは8μA)
+MS5611 55μA
第二世代は5V系なので、第三世代で追加した機能以上に増えてしまっているようだ。第二世代まではArduino互換であることを重視していたので、電源系統は単純な常時供給としていた。
RTCの割り込み出力はATmegaのINT2に接続されており、外部割込みをつかうことで、長期間にわたり正確なタイミングで動作させられる。
時折、GPSから時刻情報を得てRTCを補正するという運用なら、かなりの省電力化になる。
実験用に特小長距離無線機とGPSを組み込んだ例 |