Arduino

Arduinoを用いて6軸加速度センサを使う

2018年11月25日

こんばんは!
今回は6軸加速度センサを使っていきます。

概要

6軸加速度センサ(MPU6050)を使ってxyz方向の加速度と角速度を検出する。

使用するもの

・Arduinoメインボード(https://amzn.to/2vkPIUH)
・USBケーブル(https://amzn.to/2UHhntl)
・ジャンパワイヤ (https://amzn.to/39uBU8T)
・LED(https://amzn.to/2TvEPGc)
・6軸加速度センサMPU6050(https://amzn.to/2FoaTci)

加速度センサとは

加速度センサとは名前の通り、加速度を検出するセンサです。
揺れや衝撃などを検出することができ、スマートフォンにも内蔵されており、カメラの手ぶれ防止やL〇NEのふるふる機能なども加速度センサを利用しています。
加速度センサからの検出はxyzそれぞれの軸に対して単位をgとして値を取得できます。

ジャイロセンサとは

ジャイロセンサとは角速度が検知できるセンサです。
検知した角速度から角度を計算することや、振動を検知することができ、こちらもゲームコントローラやカメラの手ぶれ防止などに利用されています。

MPU-6050について

MPU-6050はInven Sense(インベンセンス)製の6軸加速度センサです。
xyz方向の加速度、xyz軸周りの角速度を検出することができます。
・ジャイロの最大範囲±250,±500,±1000,±2000(°/sec)
・加速度の最大範囲±2,±4,±8,±16(g)
の中から適切なものを選ぶことができます。
今回は±250(°/sec),±2(g)を選択しました。

全部で8ピンあり、上からVCC,GND,SCL,SDA,XDA,XCL,AD0,INTとなっています。
今回はVCC,GND,SCL,SDA,AD0のみ使用します。

安価で性能が高いのですが、日本語のデータシートがなく(あるかもしれませんが自分は見つけられませんでした。)英語のデータシートを見なければならなく、しかも文量がとても多く、少々扱うのが面倒です。

手順

まずハード側からやっていきます。
以下の図のようにArduinoとMPU-6050を接続します。

ArduinoMPU-6050
GNDGND
3.3VVCC
A5SCL
A4SDA

これでハード側は終わりです。

次にArduino IDEに次のプログラムを書きます。

 

こちらのプログラムはほとんどこの動画を参考にしました(一部見やすくするようコメントを記述し、改変しています)。

プログラムの説明をしていきます。

まず#include <Wire.h> でWire.hというI2C通信をする処理が書かれているファイルを取り込みます。
ダウンロードはこちらからできます。

次にsetup内でシリアル通信の開始、I2c通信の初期化、MPU-6050とI2c通信の開始をしています。
loop内では加速度、角加速度の読み取り、また、シリアルモニタへの出力をしています。

 

これをマイコンボードに書き込み、シリアルモニタを見ると

ほぼ水平状態の机の上においているので、z軸の加速度がほぼ1gになっており、正しく読み取れていることがわかると思います。
回したり、動かしたりすると数値が変化するので試してみてください。

まとめ

今回は6軸加速度センサを使ってみました。
MPU-6050は扱いが少し難しいですが、安価で精度もよいので使えるようになると便利だと思います。

今回はこれでおわります。
ではまた!

-Arduino

Copyright© 物を作る者 , 2024 All Rights Reserved.