加速度センサ/ジャイロモジュール GY-521(MPU-6050)をArduinoで動かす①チュートリアル通りに動かす

2022/05/15

Arduino GY-521 IMUセンサ

t f B! P L

加速度センサ/ジャイロモジュール GY-521をArduinoで動かします。

 目次:

今回の目的

ELEGOOのチュートリアル「GY-521モジュール」をチュートリアル通りに動かします。

※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。

Download ⇒「Arduino Kits & ~」⇒「UNO R3 Starter Kits」⇒ 「ELEGOO UNO R3 The Most Complete Starter Kit」 からダウンロードリンクに辿り着けます。


加速度センサ/ジャイロモジュール GY-521(MPU-6050)

GY-521はTDK製(元々はInvenSense製) Motion Processing Unit MPU-6050を搭載したモジュールです。

このMPU-6050については下記リンク先の製品仕様書(英語)等、文書をネット上で読むことができます。

(https://invensense.tdk.com/products/motion-tracking/6-axis/mpu-6050/)

それによれば、MPU-6050は3軸のジャイロ、3軸の加速度計を内蔵した物理挙動を検出するデバイスであり、MEMS(Micro Electro Mechanical System)技術を用いて同一チップ上にジャイロと加速度計を埋め込んでいるとのこと。このようなデバイスを「IMU」(Inertial Measeurement Unit 慣性計測装置)と呼ぶようですが、ところによってINU (Inertial Navigation Unit)、IGU (Inertial Guidance Unit)、IRU (Inertial Reference Unit)とも呼んだりするようです。

用途例としてスマートフォン、タブレット端末、ゲームコントローラ等。

また、他にも温度センサ、DMP(Digital Motion Processor)を内蔵しており、ArduinoとはI2C(Inter Integrated Circuit)プロトコルで通信できます。


(1)表

(2)裏

図1.GY-521

GY-521の外部端子は8本。今回Arduinoにつなぐのはその内の4本(後述)。

図1-(1)中央の24ピンQFPがMPU-6050です。表面の刻印は細か過ぎて手持ちのルーペでは読み取れませんでした。また、基板左端シルクに矢印表記があり、センサのX軸、Y軸とその回転方向とを示しております。Z軸は垂直上方向になります。


器材接続

モジュールはArduino直結です。I2C通信のためArduinoとGY-521のSDA(Serial Data)、SCL(Serial Clock)同士を接続し、Arduinoの3.3V、GNDをGY-521のVCC、GNDに接続します。

シリアルモニタをパソコン画面で表示するため、USBはパソコンに接続します。


図2.機材接続


スケッチ

詳細は省略です。

I2C用標準ライブラリ「Wire」をインクルードして、Wire.begin()、Wire.beginTransmission()、Wire.write()、Wire.endTransmission()、Wire.requestFrom()、Wire.read()。。。I2C通信でMPU-6050のアドレスを指定してデータを送受信、受け取ったデータをビット演算してパラメータ毎の変数に格納。その変数をシリアル通信でPCのシリアルモニタに出力、を繰り返しているらしいことはわかりましたが。。。

短いスケッチながら、詳細は読み解けませんでした。


動作

パソコンのArduino IDEの「ツール」→「シリアルモニタ」でウインドウを立ち上げます。シリアルモニタには1行ずつ連続して測定結果が出力されます。



図3.シリアルモニタ(GY-521をくるくる振ってます)

「AcX」、「AcY」、「AcZ」はX、Y、Z軸方向の傾斜。X、Y軸ならX、Y軸矢印(図1-(1))を垂直上方向に向けて最大値、水平方向に向けて0、垂直下方向に向けて最小値を示すようです。

「Tmp」は温度です。手持ちの室温計より数℃高めの値が表示されました。

「GyX」、「GyY」、「GyZ」はX、Y、Z軸周りの回転方向の加速度。回せば回した方向によって正・負の値が返ってきます。


(1)AcX,Y,Z

(2)GyX,Y,Z

図4.測定値(GY-521を水平に放置)


図4はGY-521を(なるべく)水平に放置した状態で出力値を表計算ソフトでプロットしました。

図4-(1)のAcX、AcYが0にならないのはオフセットや測定ばらつき以前に、置き場所が完全な水平ではないということが少なからずあります。

図4-(2)のGyX,GyY,GyZに表れているのはオフセットと測定ばらつきが大部分でしょう。横軸NO.64あたりで跳ね上がっているのは置いた場所に衝撃を与えてしまったからかもしれませんが。



図5.測定値(GY-521をZ軸水平に、Z軸周りに回転)

図5はGY-521をZ軸方向を水平に保ってZ軸周りに回転させてAcX、AcYそれぞれをX、Y座標にプロットしたものです。一回転した様子が見て取れます。


所感

今回扱ったMPU-6050についてはネットで情報が充分見つかったものの、読解しきれませんでした。もう少し原理やスケッチ上の処理も踏み込んで理解できればとは思いましたが、それは次があったときの課題としましょう。

このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ