南無ちゃんのブログ    https://namva.net

天下御免の夢中人=南無ちゃんは、今日も元気で明るく楽しく逞しく生きてゆく。

MPU9250で遊ぶ

2019-03-21 19:42:13 | 電子工作
 Amazonで注文していたMPU9250モジュール(ボード)が届きました。850円でした。MPU9250は、各三軸の加速度センサーと磁気センサーとジャイロセンサーを搭載しているので、これをArudinoかRaspberry Piに接続して、アンテナの姿勢制御に使いたいと考えています。

 まずは、Arduinoと接続して動作確認を試みることにします。MPC9250の電源電圧は3.3Vなので、Arduino DuemilenoveやArduino UNOなどとは電圧レベルが異なるため、無理やり接続して壊したくなかったので、M5Stack(開発環境はArduinoと同じ)で試してみることにしました。
 基板(モジュール)にピンヘッダを半田付けして、ブレッドボードに挿入し、M5Stackに付属のケーブルで、VCC(3.3V)、GND、SCL、SDAの4本の線だけを接続しました。

 コタツトップパソコンにはArduinoの開発環境すらインストールされていなかったので、一からインストールしました。一月程前に、M5Stackを入手した時に、同じようなことをしましたが、もうすっかり忘れています。M5Core Quick Startというサイトが役に立ちました。
https://docs.m5stack.com/#/en/quick_start/m5core/m5stack_core_get_started_Arduino_Windows?id=m5core-quick-start

 ArduinoのメニューからM5Stack用のサンプルを探すと、MPU9250BasicAHRSというのがあったので、これをコンパイルして書き込んでみました。M5StackのLCDの文字は小さいので読みにくいのですが、センサーモジュールの角度(ヨー・ロール・ピッチ)を変えると、表示も変わることが確認できました。

 ソースコードを見ると、シリアルポートにも数値が出力されていることが分かったので、シリアルポートを表示すると、少し文字が大きくなって見やすくなりました。
 ロールとピッチの値は、それなりに変化するので、傾斜計としては十分に使えそうです。表示するたびに値が変化しますが、0.1度位の分解能が得られそうです。実際に使うときには、何回分かのデータを移動平均してやれば安定した数値になるでしょう。
 ロールとピッチの値はそれなりなのですが、水平面内でセンサーを回転した時の角度であるヨー(Yaw)の値が変です。360度回転してもあまり変化しないのです。3次元磁気センサーを内蔵しているので、地磁気によってヨーを検出できる筈なのですが・・・プログラムのバグなのか?何が足りないのか?と思ってネットサーフィンしてみると、同じ疑問を持った人達のツイットを見つけました。丁度1週間程前(3月14日)のツイットだったので、タイムリーでした。これよりも私が試すのが早かったら、原因不明で迷宮入りだったかもしれません。感謝!
   https://twitter.com/AmadeusSVX/status/1106268374160433152
 それによると、次のようにすれば改善できるようです。
  1)ボトムモジュールからネオジウム磁石を除去
  2)磁気センサーを手動でキャリブレーションしてバイアス値を変更
  3)磁気センサのz値を正負反転
 1)の件は、私のは外付けモジュールなので、あまり関係ないかもしれません。
 2)の件は次のホームページに詳しく記述されているようです。
   https://appelsiini.net/2018/calibrate-magnetometer/
 3)の件はバグとのことです。

 キャリブレーションの方法を勉強して試してみたいと思います。
コメント    この記事についてブログを書く
« ブドウ苗の定植 | トップ | 山掃除 »
最新の画像もっと見る

コメントを投稿

電子工作」カテゴリの最新記事