MPU-6050加速度計およびジャイロスコープモジュールの使い方

MPU-6050加速度計およびジャイロスコープモジュールの使い方

MPU-6050は、3軸加速度計と3軸ジャイロスコープを1つのパッケージに組み合わせた多用途センサーです。このチュートリアルでは、このモジュールをArduinoと接続して加速度と角速度を測定する方法を解説します。結果として得られるのは、センサーからのリアルタイムデータを表示するシンプルなプログラムで、デバイスの加速度と姿勢の両方を監視できるようになります。

このガイドに従えば、ハードウェアのセットアップ、部品の正しい配線方法、そしてMPU-6050を稼働させるために必要なコードの記述方法を学べます。これにより、モーションセンシングや姿勢検出を含む今後のプロジェクトの基盤が築けます。さらに分かりやすくするために、このチュートリアルに付随するビデオ(動画の00:00)も必ずご確認ください。

ハードウェアの解説

このプロジェクトの主要な構成要素はMPU-6050センサーで、加速度計とジャイロスコープの両方のデータを提供します。加速度計はX、Y、Z軸方向の直線加速度を測定し、ジャイロスコープは同じ軸まわりの角速度を測定します。この組み合わせにより、MPU-6050は動きの追跡を必要とするアプリケーションに非常に適した選択肢となります。

さらに、このモジュールは通信にI2Cインターフェースを使用しており、接続が簡素化され、同じバス上に複数のデバイスを接続することができます。センサーはVCCピンから給電され、通常は3.3V〜5Vの電圧を必要とします。グラウンドはArduinoの共通グラウンドに接続されます。

データシートの詳細

製造元インベンセンス
部品番号MPU-6050
ロジック/IO電圧3.3〜5V
供給電圧3.3〜5V
出力電流(チャンネルあたり)
ピーク電流(チャンネルあたり)
PWM周波数に関する指針
入力ロジックの閾値
電圧降下 / RDS(on)/ 彩度
熱制限
パッケージQFN(クアッドフラット・ノーリード)
備考 / バリエーション

  • VCCピンを3.3Vまたは5Vに接続してください。
  • GNDピンを接地に接続してください。
  • SDA(データ)とSCL(クロック)を用いてI2C通信を行ってください。
  • SDAおよびSCLラインにプルアップ抵抗が接続されていることを確認してください。
  • センサーが損傷するのを避けるため、適切な電圧レベルを確認してください。

配線手順

arduino_wiring_MPU-6050

MPU-6050をArduinoに配線するには、まずMPU-6050のVCCピンをArduinoの5Vピンに接続します。次にMPU-6050のGNDピンをArduinoのGNDピンのいずれかに接続します。I2C通信を行う場合は、MPU-6050のSDAピンをArduinoのA4ピンに、SCLピンをA5ピンに接続します。適切なライブラリをコードに含めて、ArduinoがI2C通信を使用するように設定されていることを確認してください。

システムに電源を入れる前に接続を再確認してください。ブレッドボードを使用している場合は、接続が確実でショートや短絡がないことを確認してください。モジュールが期待どおりに応答しない場合は配線を点検し、コード内のMPU-6050のI2Cアドレスを確認してください。

コード例とウォークスルー

次のコードスニペットはMPU-6050を初期化し、そこからデータの読み取りを開始します。主要な識別子には以下が含まれます。mpu6050MPU6050クラスのインスタンスであり、およびtimer、これはデータ出力のタイミングを制御するために使用されます。

MPU6050 mpu6050(Wire);
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  mpu6050.calcGyroOffsets(true);
}

この setup 関数では、シリアル通信と MPU-6050 センサーを初期化します。そのmpu6050.calcGyroOffsets(true)この呼び出しは、ジャイロスコープのオフセットを補正し、正確な測定値を確保するために重要です。

loop()関数内ではセンサーデータを継続的に更新し、シリアルモニタに出力します。以下のコードスニペットは温度と加速度のデータを読み取り、出力する方法を示しています:

if(millis() - timer > 1000){
  Serial.print("temp : ");Serial.println(mpu6050.getTemp());
  Serial.print("accX : ");Serial.print(mpu6050.getAccX());
  Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
  Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
}

このブロックは前回の出力から1秒が経過したかをチェックします。続いてMPU-6050から温度と加速度の値を取得し、それらをシリアルモニタに出力します。これらの値がリアルタイムで更新される様子を確認できます。

デモンストレーション / 当日の流れ

配線がすべて完了してコードがアップロードされると、温度と加速度のデータがシリアルモニターに毎秒表示されるはずです。MPU-6050を傾けたり動かしたりすると、加速度の値もそれに応じて変化します。配線不良や電源不足があると、読み取りが不安定になったりまったくデータが出ないことがあるので注意してください(動画の01:30で)。

画像

arduino_wiring_MPU-6050
arduino_wiring_MPU-6050
MPU-6050-module-1
MPU-6050-module-1
MPU-6050-module-2
MPU-6050-module-2
MPU-6050-module-schematic
MPU-6050-module-schematic
MPU-6050-module-1
MPU-6050-module-1
116-Arduino code for the MPU-6050 accelerometer and gyroscope sensor (all data)
言語: C++
117-Arduino code for an MPU-6050 accelerometer and gyroscope sensor (just angle)
言語: C++
コピーしました!

必要かもしれないもの

リソースと参考文献

ファイル📁

Arduinoライブラリ(zip)