MPU9250の使い方&測定レンジ設定こんにちは!今回は加速度+ジャイロ+方位が取れる高精度センサであるMPU-9250の使い方をご紹介します。データ取得や測定レンジ変更など基本的な使い方と使用レビューをしようと思います。センサの詳しい仕様はこちらのデータシートを参照すれば分かります。この記事はデータシートを見るのが面倒な時のための備忘録的記事です。この記事は自分で色々試行錯誤した結果でもあるので、間違っている箇所があればぜひご指摘ください。Unoやラズパイなど、I2CまたはSPI通信が使えるなら何でもOKだと思います。今回はArduino系でI2Cを使う想定でサンプルコードをご紹介します。配線はデータシートの通りですが、必要最小限でこれだけになります。ポイントは左下と右下のピンで、左下はアドレス選択ピンで3.3VかGNDどちらに接続してもいいですが通信する時のアドレスが異なります。0x69右下はI2Cの場合3.3Vに接続します。最小構成での配線データの取得I2C通信するライブラリはArduinoならばWire.hが使えます。MPU-9250のデータ読み込みはデバイスアドレスを指定して、メモリアドレスを書き込んだあと、メモリを読み出すことで取得します。加速度、ジャイロの値を取得するサンプルコードをご紹介します。データは16ビットで、上位8ビットと下位8ビットに分かれているので、データの読み込みを2回行い結合する関数i2c_read2を用意しています。この関数に読みたいメモリアドレスを入力するだけで、データを取得することが出来ます。250//[deg/s]//メモリアドレスから2バイト読み込んで整数に直します。データはビッグエンディアンです。//先頭アドレスの読み込み。16bitのshort型に格納。//次のアドレスの読み込み。16bitのshort型に格納。//一つ目のデータを8ビットシフト。//2つのデータを結合して返す。delay(10);}測定レンジと内部LPFの設定このセンサは測定レンジが加速度は±2G~±16G、ジャイロは±250deg/s~±2000deg/sまで設定可能です。設定は特定のメモリアドレスにデータを書き込むことで行います。メモリアドレスに値を書き込む関数i2c_writeを用意しました。Wire.endTransmission(true);}これを使って、次のような感じに設定を行います。メモリアドレス26~29が設定値を書き込むアドレスです。Delay:66.96ms)結果を見てみるX軸とY軸の加速度をプロットしてみました。縦軸が加速度[G]で横軸が時刻です。いい感じに取れてると思います!加速度をプロットしたグラフ。縦軸が加速度[G]、横軸が時間。この例ではLPF設定をカットオフ周波数5Hzに設定したので、かなり強いフィルターがかかっています。それでも手で振ったくらいの加速度は問題なく表示されます。電動歯ブラシを当ててみたところ、殆ど値が変化しませんでした。ここまで強いフィルターが必要な状況はそう無いと思いますが、必要に応じて調整するのがいいと思います。コメントをキャンセルメールアドレスが公開されることはありません。ライセンスで提供されています。当サイトはクリエイティブ・コモンズを利用しています。以下のルールを守って下さい。BY(表示)作品を創作した人(著作者)の氏名や作品のタイトルなど、作品に関する情報を表示しなくてはならないことを表します。