MSP430な超低消費電力、振動ロガー(単3で1年動作)

はてブ数 2009/08/26デバイス::MSP430

MSP430を使用した超低消費電力な加速度(振動)ロガーを製作しました。

概要

ulp_logger_photo01.jpg
ulp_logger_photo02.jpg
ulp-logge_data01.png

  • 単3電池×3で半年~、単3×4で1年動作
  • MicroSDカード(SDHC対応)へのデータ保存(FAT/FAT32)
    • MicroSDなので入出力インターフェイスが不要。
  • カウント機能(万歩計みたいな感じ)

写真は「TAKACHI 防水・防塵アルミダイキャスト(AD10-7-4/W100×D65×H40)」に入れたものです。基板は厚さ約6mm以下になります。

仕様

項目備考
計測加速度範囲±3G重力加速度を含め測定します。換算すると±2943cm/ss
計測精度2.16gal12bit-ADC*1
サンプリング周波数32Hz生データ記録時の最大。カウントのみなら128Hz程度まで可能*2
カウント可能振動8Hz以下サンプリング周波数÷4程度が目安
記録媒体MicroSD (SD/SDHC)SanDisk製を推奨
平均消費電流約0.3mA供給電圧により変化する
連続稼働時間単3×3で半年以上計算上は300日。実証が必要。
生データ記録容量16MB/1日32Hz記録時。4GB-SDHCで200日以上。
時計精度月差5分以内最悪値。常温付近ならば月差1分程度
大きさ(mm)W100×D65×H40TAKACHI 防水・防塵アルミダイキャスト(AD10-7-4)
質量約350g単3電池含む
  • センサーをADXL345に変更すれば平均消費電流が0.1mA程度低下し、単3電池3本で1年動作する見込みです。
  • 本機は加速度センサーですが、本機をベースに温度センサーや湿度センサー等様々なセンサーを接続することが可能です。その場合もスタンドアローンで長期間動作します。

*1 : ノイズの問題があるため常に最小単位で測れるわけではありません。

*2 : ロガー装置に書き換えが必要です。

回路図と部品表

ulp-logger.png

部品部品名型番備考|
U1降圧型DCDCコンバータLTC1878SW内臓。低電時にも低消費電力
U31.8V電圧レギュレータTPS79718Ti製。低静止電流(1.2uA)
U4MSP430マイコンMSP430F5418RTC/ADC/SPI等内臓
U5加速度センサーADXL330180uA(1.8V時)
U6パワースイッチFPF1005低静止電流(1uA)
J1MicroSDコネクタDM3AT-SF-PEJハセヒロ
J2JTAGコネクタ-汎用差込端子。Spy-By-Wire用
SW2,3PUSHスイッチLS6J2Mオフ-モメンタリ。5.2mm×5.2mm×2.5mm
XT132768Hz水晶振動子FC-135 32.7680KA-A3±20ppm。CL12.5pF
L1,L2インダクタNR6045T220M6mm×6mm×2.5mm
L3チップインダクタGLGR2012T4R7M-HC2012サイズ
C*チップ積セラ-電解不可(漏れ電流のため)
D3SBDダイオード-シリコンダイオード不可
  • 回路図と写真の回路は若干異なります。
  • L1がDCDCのコイルです。適当に22uHを選びましたが、この値も突き詰めると変換効率が変わると思います。
  • L2,L3はノイズ除去用です。無くてもよさそうですが。
  • C16はSDカードの定番としては10uFですが、突入電流で電圧降下が起こりMSP430にリセットがかかるため2.2uFにしました。L2を取り払ったり、電源の積セラを増やした方がよさそうです。
  • JTAGコネクタはSpy-By-Wire式での端子になっています。D3のSBDとR9はJTAGから給電する細工です。
  • C20/C21はクリスタル安定用です。温度補償用セラミックコンデンサ(C0G/NP0)で補償を取りたいためMSP430内臓のCLはオフにしてます。*3
  • C26~C28は0.33uに変更した方がいいかも知れません。カットオフは0.22uで22.6Hz、0.33uで15.1Hz。

*3 : クロック測定用にACLK端子を引き出しておいたほうが良いです。

低消費電力動作の細工

  • ADXL330は駆動電圧があがると消費電流が増えます。なおADXL330は生産中止が決まっておりピン互換のADXL335は消費電流が多いため、ADXL345への変更を推奨。
  • LTC1878は1mA以下の領域での変換効率が高いものを選びました。一般に高効率DCDCと言っても1mA以下では変換効率が50%以下というものも少なくありません。LTC1878より良いものがありましたら教えてください。
  • AVccとVddに異なる電圧を与えるとMSP430内で端子が接続されているので発熱してしまいます。ADC基準電圧はVRefで与えるべきです。
  • 動作電圧はなるべく低くしたいのですが、SDをきちんと動作させるために2.7Vが必要です。Vdd=2.7V付近にしています。
  • MSP430F5418Aが登場すればよりCPUコア電圧を下げられるため、より低消費電力にできます。*4
  • FPF1005はSDカードの電源を切断するためのものです。SDは電源を与えるだけで数mAの電流を消費してしまいます。1分に1度、SDへ書き込みするときのみ電源を投入しています。MSP430側もSPIモードに設定するとSDが電流を消費してしまうため、書き込み終了後Outputモードに切り替え、Lowを出力します。*5

ファームウェアの細工

MSP430のアプリケーションノート等にあるように、全体を割り込みによるイベントドリブン型として製作してあります。メインプログラムは、初期化処理終了後に

// CPU halt
__bis_SR_register(LPM3_bits);

しています。

  • ADCは1/32秒に1回センサーを観測
  • RTCは1秒に1回、時刻情報読み取り
  • SDは1分に1回、SPIを初期化しMicroSDに記録

その他、箇条書き。

  • 動作周波数は1MHzで、SPIクロックを同じにしています。ADCクロックもMCLK(1MHz)を参照しています。
  • FatFsは毎回(SD電源投入ごとに)初期化するのではなく、最初に初期化してファイルを開いたままSDの電源を切ります。

    SDの電源投入 → SPI&SD初期化 → FatFsでアクセス(f_sync) → SD&SPIの終了

*4 : 現状ではコア電圧を規定の1.8Vより下げるとハングアップしてしまいます。

*5 : 電源以外の端子も、Hを与えると電流を消費してしまいます。

ソースコード(ファームウェア)

  • logger-src.lzh(中にあるREADME.txtを参照のこと)
    • ソースの一部であっても勝手に流用することは厳禁です。事前にご相談ください。

16KBまでフリーで使用できるTiの統合開発環境Code Composer Essentialsを使用しました。JTAGはMSP-FET430UIF($99)です。

連絡等

興味ありましたら事情を明記の上で連絡ください。研究用途や面白そうな話等、場合によってはサンプルを貸し出したり協力することも可能です*6。上の基板は20枚ぐらいあまっていますが(笑)*7

センサー載せ変えれば加速度以外でもだいたいのものが測れます。

*6 : 目的に対して悲惨すぎる回路設計とか信号処理とか結構見てきたもので……。

*7 : 研究用途なら最低限どのような研究に使いたいか等は書いてください。専門外の人間に話しても意味がないといった「崇高な研究(笑)」をされている方は全く面白くないので他を当たってください。