[Arduinoのすすめ][ArduinoConf][ArduinoMonitor][iArduino]

InvenSense のジャイロ・加速度センサ MPU-6050 を使う

MPU-6050 は InvenSense 製のI2C接続のジャイロ・加速度センサICです。 DMP (Digital Motion Processor) という機能を使うことで、補正済みのデータを簡単に利用できるのが特徴です(一般にジャイロ(角速度センサ)の特性は温度によって変化しますし、ノイズも多めなので適切な処理が必要です)。 Arduino Playgroundにあるように DIP 変換モジュールが各社から販売されています。 ここではアマゾンで安く買えたGY-521を使いました。GY-521をSNS-1007V2という型番で販売しているandrodcitiのWikiに日本語の情報がまとまっています。

MPU-6050の電源電圧は 3.3[V] ですが、GY-521に3.3[V]のレギュレータICが載っていて、I2Cバスのプルアップ抵抗が 3.3[V] へ繋がっているので、5[V]電源の Arduino に直接つないで使うことが出来ます(レベル変換をしていないので条件によっては、うまく動作しない可能性があることに注意)。 以下では、次のように配線して試しています。

名称Arduinoのピン備考
VCC5V 
GNDGND 
SCLSCL (A5) 
SDASDA (A4) 
INTD2 

スケッチ

androdcitiのWikiにあったライブラリ(Jeff Rowberg氏のライブラリ)を少し改変しました(パラメータのバグフィクス(最新のものと同じ)とサンプルスケッチの改造)。

展開したライブラリ(I2CdevとMPU6050)を Arduino の libraries フォルダへおき、スケッチの例→MPU6050→MPU6050_DMP6を開きます。 そのままスケッチを書き込み(アップロードし)、シリアルモニタなどで 115200bps で Arduino のシリアルポートを開くと、 "Send any character to begin DMP programming and demo:"と出ているはずです。 なんでもいい(「a」とか)ので、文字を Arudinoへ送る(シリアルモニタでは上の箱に文字を入れて「送信」をクリック)と初期化が始まり、加速度や各速度が表示されます。 初期設定で最大加速度が±2g、最大角速度が±2000deg/sのモードに設定されています。

左から順に、重力加速度(単位はG)、角速度(16.4で割るとdeg/sになる)、角度(ヨー、ピッチ、ロール)、加速度(8192で割るとGになる)、重力加速度を除いた加速度(8192で割るとGになる、センサを基準にした座標系)、重力加速度を除いた加速度(8192で割るとGになる、初期姿勢と重力加速度を基準にした座標系)です。 重力加速度はセンサを移動(加減速)しても変わりません。加速度の方は変化します。図ではセンサは静止していますが、加速度の値が出ています。これはセンサのオフセットのようです。各値が落ち着くまでにはしばらく時間がかかるようです。

ダウンロード

上記の改変済みライブラリです。

リンク


Arduinoのすすめ
Copyright (c) 2014, Noriaki Mitsunaga