【めも】GY521を使う
Amazonで買える超安価なジャイロモジュールを使ってみたのでメモ.
価格としては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という値については今後変更する可能性があり,とりあえずでこの割り込み間隔にしてある)
ところで,下がジャイロの静止状態での生データである.
常に角速度が検出され,これを積分すると発散してしまう.
カルマンフィルタの実装かなぁ...