MPU-9150をArduinoに接続して9軸モーションデータを取得する
MPU-9150
MPU-9150はGoogle Grassにも使用されている(らしい)
9軸(加速度・角速度・地磁気)モーションセンサー。
ストロベリーリナックス等でモジュールが購入できます。
https://strawberry-linux.com/catalog/items?code=12150
Arduinoに繋いでセンサーと仲良くなるためのメモ。
Arduinoを使用したデータ取得
単純に9軸データを取得するだけなら、
SparkfunがGitHubで公開している以下のソースを使うと楽。
https://github.com/sparkfun/MPU-9150_Breakout
MPU-9150_Breakoutを使った9軸データ取得
3.Arduino IDEでスケッチを送信
「MPU-9150_Breakout-master.zip」を解凍し解凍したフォルダから、
firmware\MPU6050\Examples\MPU9150_raw\MPU9150_raw.ino
のArduinoスケッチを書き込めば、
シリアル通信で9軸のデータ値が取得できます。
4.物理量として利用するには
このサンプルでは全てのセンサー値が符号付き16ビットで格納されていますが、
値磁気センサーのみ分解能が13ビットなので注意が必要です。
デフォルトでは以下のようにセンサー情報が表されています。
- 加速度:±2G
- 角速度:±250(degree/sec)
- 地磁気:±1200(μT)
また物理量に変換するなら次の式を利用します。
・ 加速度:
・ 角速度:
・ 地磁気:
ちなみに地磁気は周囲の影響を受けまくっているので、
ぐりぐりと8の字に動かしてこの値からオフセットを求めて
補正することが必要になります。
5.もうちょっとできる子なんですが
実はこのセンサー実はもうちょっとできる子です。
センサー公式に概要が書かれていますがセンサーの中に、
Digital Motion Processing™ (DMP™) エンジンが搭載されており、
センサーフュージョンによる姿勢計算をして出力してくれます。
MEMS Gyro-Accel | Gyroscope | Accelerometer | Processing - MPU-9150 9軸(ジャイロ+加速度+コンパス)MEMS MotionTracking™ デバイス
MPU-9150_Breakout-master内の「MPU6050_DMP6.ino」は
DMPエンジンを利用したサンプルスケッチなんですが、
値磁気センサーが組み込まれていない下位モデルのMPU-6050用で、
このままだと6軸のみで地磁気のデータが取れてこない。
そこでまた色々と試行錯誤したわけですがそれは書く機会があれば。