読者です 読者をやめる 読者になる 読者になる

【めも】GY521を使う

Amazonで買える超安価なジャイロモジュールを使ってみたのでメモ.

f:id:katosunmemo:20141002232853j:plain

価格としては400円から500円ちょいくらいの価格帯を推移してるっぽい.
ロボットの回転角度をセンシングしたかったため使ってみた.
そのため,回転角度を計測することをメインにメモをする.
GY521にはいくつかのモードがあるが,今回はデフォルトを使用.


  • 駆動電圧

駆動電圧としては3-5Vとなっているので,3.3V系でも5V系でもそのままつなげて使用できる.
ちなみに,3.3Vでも5Vでもレベル変換しなくても大丈夫だった.

  • センサの読み出し

読み出しにはI2Cを使用しており,
3軸の加速度センサの数値(x→y→z)

温度

3軸のジャイロセンサの数値(x→y→z)
の順に2byte,合計14byteのデータを送信してくる.

ここで注意が必要なのが,受信の順番では上位8ビットと下位8ビットが逆になっているので,交換してやる必要がある.

また,I2Cに必要なプルアップは基板上で行われている.

I2CアドレスはAD0ピンで設定することが出来る.
AD0ピンは基板上でプルダウンされている.
LOW→0x68
HIGH→0x69

処理のアウトラインとしては
GY521にコマンド(0x6B)を送信(初回のみ)
↓(以下ループ)
GY521にコマンド(0x3B)を送信

一度の受信で14byte分を受け取る

変換式を使って変換

  • 生データ変換式

加速度 (生データ)/16384(g)
傾斜角度 (生データ)*360/2.0/3.14
回転速度 (生データ)/131(°/s)

ソースコードについては特に縛りなく様を参考に,0.1sの割り込みで受信し,回転角度を積分で求めるプログラムを作った.
特に縛りなく様に載っているソースコードで加速度,傾斜,回転速度を求めることは可能.
特に縛りなく: 加速度+ジャイロのGY-521(MPU-6050)を使ってみた -1-


  • 問題点

第一の目標としての回転角度の計測は前の項目で述べたとおり,0.1sの割り込みで受信して積分する.
(0.1sという値については今後変更する可能性があり,とりあえずでこの割り込み間隔にしてある)
ところで,下がジャイロの静止状態での生データである.
f:id:katosunmemo:20141003003604j:plain
常に角速度が検出され,これを積分すると発散してしまう.

カルマンフィルタの実装かなぁ...