Arduino でジャイロセンサーを試してみた [Arduino]
Arduino でジャイロセンサーを試してみました。使用したジャイロセンサーは、STマイクロ社製の L3GD20 です。加速度センサーは直線方向の加速度を検出しますが、ジャイロセンサーは回転方向の速度(角速度)を検出します。
MEMS motion sensor: three-axis digital output gyroscope
http://www.pololu.com/file/0J563/L3GD20.pdf
今回使用する秋月モジュールのピン配は下記のようになっています。
http://akizukidenshi.com/download/ds/akizuki/ae-l3gd20.pdf
秋月モジュールはI2CとSPIを選択できるようになっています。今回はI2Cで接続したいと思います。
CSはGNDに接続しますので、デバイスアドレスはW/Rビットを除いた7bitなので、右に1ビットシフトした 0x6A になります。
Arduino UNO は 5V駆動で、ジャイロセンサーは3.3V駆動ですので、I2Cを接続するにはレベル変換回路を使う必要があります。
実際に組んだ回路がこちらです。
位置関係が分かりにくいので斜めからのアングルです。
加速度センサー同様、使用する前にデバイスのパラメータを設定しなければなりません。データシートからコンフィギュレーションレジスタの設定を確認します。
DR<1:0>、BW<1:0>の設定値はデータシートに次のように定義されています。
今回は試しに使うだけなので、DR<1:0>、BW<1:0>両方とも "00", "00" つまり、データ出力レート(ODR):95Hz、カットオフ周波数:12.5Hz に設定します。
スケッチは下記のようにプログラムしました。多くの部分で加速度センサーのスケッチを流用しています。
出力データを確認します。最初にZ方向(基板に対して左右に振る)、次にX方向(基板に対して手前に傾ける)、最後にY方向(基板に対して左右に傾ける)を試してみました。
角速度を検出しているみたいですね。加速度センサーと組み合わせれば、ロボットの状態を検出することができそうです。
(^_^)/~
関連記事
Arduino 3軸加速度センサーのI2C接続うまく行きましたー
http://makers-with-myson.blog.so-net.ne.jp/2014-03-16
Arduino 3軸加速度センサーで大ハマリ中。。
http://makers-with-myson.blog.so-net.ne.jp/2014-03-15
Arduino で3軸加速度センサーを試してみた!
http://makers-with-myson.blog.so-net.ne.jp/2014-03-08
※I2Cレベル変換回路を加えた図を差し替え・追加ました。(2016.4.9)
MEMS motion sensor: three-axis digital output gyroscope
http://www.pololu.com/file/0J563/L3GD20.pdf
今回使用する秋月モジュールのピン配は下記のようになっています。
http://akizukidenshi.com/download/ds/akizuki/ae-l3gd20.pdf
秋月モジュールはI2CとSPIを選択できるようになっています。今回はI2Cで接続したいと思います。
CSはGNDに接続しますので、デバイスアドレスはW/Rビットを除いた7bitなので、右に1ビットシフトした 0x6A になります。
Arduino UNO は 5V駆動で、ジャイロセンサーは3.3V駆動ですので、I2Cを接続するにはレベル変換回路を使う必要があります。
実際に組んだ回路がこちらです。
位置関係が分かりにくいので斜めからのアングルです。
加速度センサー同様、使用する前にデバイスのパラメータを設定しなければなりません。データシートからコンフィギュレーションレジスタの設定を確認します。
DR<1:0>、BW<1:0>の設定値はデータシートに次のように定義されています。
今回は試しに使うだけなので、DR<1:0>、BW<1:0>両方とも "00", "00" つまり、データ出力レート(ODR):95Hz、カットオフ周波数:12.5Hz に設定します。
スケッチは下記のようにプログラムしました。多くの部分で加速度センサーのスケッチを流用しています。
出力データを確認します。最初にZ方向(基板に対して左右に振る)、次にX方向(基板に対して手前に傾ける)、最後にY方向(基板に対して左右に傾ける)を試してみました。
角速度を検出しているみたいですね。加速度センサーと組み合わせれば、ロボットの状態を検出することができそうです。
(^_^)/~
関連記事
Arduino 3軸加速度センサーのI2C接続うまく行きましたー
http://makers-with-myson.blog.so-net.ne.jp/2014-03-16
Arduino 3軸加速度センサーで大ハマリ中。。
http://makers-with-myson.blog.so-net.ne.jp/2014-03-15
Arduino で3軸加速度センサーを試してみた!
http://makers-with-myson.blog.so-net.ne.jp/2014-03-08
※I2Cレベル変換回路を加えた図を差し替え・追加ました。(2016.4.9)
MPU-6050 使用 3軸ジャイロスコープ・3軸加速度センサー モジュール
- 出版社/メーカー: OEM
- メディア: その他
大変参考にさせて頂いております。
非常にわかりやすく、ありがたいのですが、一点だけ質問させて下さい。
ジャイロは角速度センサではないでしょうか?
私の勘違いですいません。。
by セブハワイ (2014-11-06 10:19)
大変参考になる記事ありがとうございます。
ジャイロのSCLとSDAのプルアップについて教えてください。
・Arduino UNOのアナログ入力・・・0~5V
・L3GD20のVdd・・・3.3V
両者の違いは考慮しなくてもよいのでしょうか?
<ご参考>少し調べたところ、このような記事がありました。
http://www.eleki-jack.com/FC/2013/12/i2c2.html
by こんにちは (2015-01-11 14:32)
ご指摘ありがとうございます!確かにこれはレベル変換回路が必要ですね。下記のようなモジュールを間にかますべきでした。
http://akizukidenshi.com/catalog/g/gM-05452/
http://androciti.com/?pid=68727595
現場から遠のいているのがバレバレですね。お恥ずかしい。しかし、よく動いたなぁ。出てきた値を物理値に変換すると無茶苦茶な値が出てきそうです。近いうちに訂正記事を出さなくては・・・。
by ys_oota (2015-01-11 17:32)
遅ればせながら記事修正対応いたしました。大変遅い対応となってしまい、お恥ずかしい限りです。( ̄▽ ̄;)
by ys_oota (2016-04-10 00:52)
ご対応ありがとうございますm(_ _)m
by お名前(必須) (2016-04-10 18:58)
質問失礼します。
I2Cバス用双方向電圧レベル変換モジュール(PCA9306)を使ってジャイロセンサーを代わりに使ってジャイロセンサーを使っている者です。
ジャイロセンサーの8 GNDに何も繋いでいないのはなぜでしょうか?
by 無記名 (2016-08-18 13:55)
おお、これはご指摘ありがとうございます。これは、GNDにつなげるのが正しい接続ですね。
なんでサボったのか今となっては昔の自分が信じられませんが、これは配線を減らすために、4ピンのGND接続でGNDレベルが決まるので、4ピンをGNDとして代用してしてしまったというのが真相です。でもICの中で電位が保証されるわけではないので、GNDに接続するのが確実です。近日中に修正をしておきますね。
by ys_oota (2016-08-18 23:49)