MPU9150

InvenSense?社の3軸(ジャイロ+加速度+コンパス)センサ。大きさは4mm四方。
Invensenseのジャイロ&加速度MPU6050と旭化成のコンパスAK8975を1チップに集めたもので、コンパスはオマケでついてる感じで使い勝手が悪い。
これはマイクロマウスなどのロボコン用にMPU9150を開発するときの参考になるように作成した。

2013年中におそらく後継機MPU9250 が発売される。MPU9150に比べ、小型化、省エネ化、コンパス高分解能化、SPI対応など、良い方向の仕様変更が多い。興味のある方はこちらをどうぞ。
あくまでこのページはMPU9150についての情報のみを書く。

発注

InvenSenseの直販ページ にて購入。単価$17、送料$53.95だった。
実質3営業日で届く。Fedexだから到着は速い。送料は高い。

写真左の袋の中に右のようなリールで入っている。Digi-Keyと似たような感じ。

package.JPG

To Do

データシートを読む

有用そうな情報をメモ

実際に使用するときはMPU-9150 Register Map and Register Descriptions documentというのもあわせて読むと良い。

テスト用基板作成

横からパッドが見えないので、素子の外形(4mm四方の正方形)をシルクで書いて、その上に素子を乗せてはんだ付けするしかないかも。
配線はデータシートの28ページ通りが無難。
以下はテスト用に作成した基板の回路図である。
マイコンの内部プルアップ抵抗を使えばSCL,SDAのプルアップは不要。
テスト用基板では通信障害の原因になりうるのであえてつけておいた。

MPU_9150_circuit.png

I2C仕様の確認、通信テスト

を指定する。AD変換値の入ったデータレジスタはこの意味で連続でなく、また、それぞれのICのレジスタマップを参照すればADデータを受け取ることができる。

通信用プログラム

STMF4マイコン用に書かれたプログラムである。
F1でもライブラリ関数の仕様変更にだけ注意して書きなおせば使えるはずである。
ある程度汎用性のあるI2C通信プログラム
F4_I2C_program_for_MPU9150_ver0.0.zip
これをもとに実際にマウス用プログラムに組み込めるようなプログラムを作成。
とりあえずMPU9150はADCサンプル間隔がジャイロ8kHz、加速度1kHzなので、I2C通信速度も踏まえて、
ジャイロ3軸AD変換値取得を3回(1回につき総時間約240us)した後ジャイロと加速度両方の3軸AD変換値取得を1回(約440us)するのを繰り返すことにした。
つまり、約1200usで3軸ジャイロの値4つずつ、加速度の値1つずつをとる。再開処理は1回に着き100usほどかかるので、1200us中400usは再開処理として、CPUリソースを消費する。
初期化さえすればDMA転送完了割り込みで通信停止と再開を繰り返すので、半自動(定期的に割り込み処理が必要だが、別の関数で起動命令を出す必要はない)にAD変換値を取得できる。
ちなみにコンパスは申し訳程度にAD変換値を取得するプログラムが入っているだけ。

F4_I2C_program_for_MPU9150_ver0.1.zip
両プログラムとも、TIM2を使ってタイムアウト処理をしているが、上手く動作しないことがあるので必要に応じてコメントアウト。

AD変換値諸特性

時間変化

50ms間隔で12000回、10分間サンプリングし、各分ごとの平均と標準偏差を求めてみる
分解能はコンパス13ビット、それ以外16ビットで、符号付き整数 レンジは加速度±4g、ジャイロ±2000deg/s
ローパスフィルターの設定は加速度、260Hz、ジャイロ、256Hz



縦軸はAD変換値、横軸はサンプルした順番

3axis_time_change_graph.png

こちらは縦軸AD変換値、0〜1分から9〜10分

3axis_time_change_graph_mean_stdev.png

二つのグラフからなんとなく思うことをメモ

コメント


更新履歴