FC2カウンター FPGAの部屋 ”L3GD20H使用3軸ジャイロセンサーモジュールキット”を使用する1(ジャイロセンサーの仕様を検討)
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

”L3GD20H使用3軸ジャイロセンサーモジュールキット”を使用する1(ジャイロセンサーの仕様を検討)

秋月電子の”L3GD20H使用3軸ジャイロセンサーモジュールキット”を ZYBO Z7-20 に接続して使用したいということで、今回は、”L3GD20H PDFデータシート”をざっと読んでみた。

まずは、ジャイロセンサーの原理を知らなかったので、”いまさら聞けないジャイロセンサー入門"でお勉強した。ふ〜ん、コリオリの力を利用しているんだね。

L3GD20H の使用方法については、”3軸ジャイロセンサーL3GD20Hの使い方(I2C通信/SPI通信)”を参考にさせていただいた。

L3GD20H は I2C と SPI インターフェースに対応した 3 軸ジャイロセンサーで、精度は、±245/±500/±2000 dps を切り替えて使用することができる。

機能を並べて書く。
・ I2C と SPI インターフェースに対応した 3 軸ジャイロセンサー(インターフェースは I2C を使用する)
・ 出力データは 16 ビット長
・ 精度は、±245/±500/±2000 dps
・ 電源電圧は 2.2 V 〜 3.6V (3.3V で使える)
・ データ用FIFO があるけど、バイパスもできる(Bypass mode)
・ ODR(Digital output data rate) を 12.5, 25, 50, 100, 200, 400, 800 Hz に設定可能

ブロック図を示す。
L3GD20H PDFデータシート”から 18 ページの”Figure 6. Block diagram”を引用する。
gyro_sensor_1_230406.png

2 つの LPF と 1 個の HPF がある。
HPF はスルーする予定だ。

まずは、使用する精度は ±245 dps とする。ビット長が 16 ビットなので、1 digit の精度を計算する。
245 ÷ 2 の 15 乗 = 0.007476807 dps/digit

AE-L3GD20H取扱説明書”によると I2C のアドレス 7 ビットは SA0 ピンに電源電圧を入れた時に 0x6B, GND を入れた時は 0x6A だそうだ。8 ビットアドレスに直すと 0xD6 と 0xD4 になる。その内の SA0 ピンに GND を入れた時の 0xD4 アドレスを使用することにする。

I2C インターフェースで読み書きできる設定用やデータのレジスタ・マップを示す。
L3GD20H PDFデータシート”から 34 ページの”Table 17. Register address map”を引用する。
gyro_sensor_2_230406.png

設定の検討を行う。
まずは、CTRL1 (20h) の設定をする。
DR と BW の設定だが、300 Hz 毎にデータを取得したいので、ODR = 400 Hz に設定してみる。その時の Cut-Off 周波数(LPF のカットオフ周波数だと思っている)を一番高い 110 Hz とした。
(2023/04/07 :追記)ODR =800 Hz 、Cut-off 周波数 ー に変更した。DR = 11, BW = 10 に設定した。(BW = 10 - LPF1 Cut off 211 Hz, LPF2 Cut off - )

L3GD20H PDFデータシート”から 37 ページの”Table 21. DR and BW configuration setting”を引用する。
gyro_sensor_3_230406.png

DR = 10, BW = 11 とする。
PD = 1, Zen = 1, Xen = 1, Yen = 1 にすると CTRL1 (20h) の設定値は 0xbf となった。

CTRL4 (23h) は、FS1 〜 FS0 で精度を設定できるが 245 dps の値は 00 でデフォルト値なので設定は必要ない。

LOW_ODR (39h) は”Table 21. DR and BW configuration setting”から Low_ODR = 0 なので、0x00 を設定するのだが、デフォルト値なので、設定する必要はない。(修正済み)

次にデータの取り出し方だ。
ODR で動作周波数を設定できるということは、測定完了のレディ信号を見てからデータを取るのじゃないだろうか?
レディ信号を探すと ZYXDA(X, Y, Z -axis new data available) が STATUS (27h) にある。これが 1 になるのを確認すれば良いのではないだろうか?
L3GD20H PDFデータシート”から 42 ページの”7.9 STATUS (27h)”を引用する。
gyro_sensor_4_230406.png

たぶん 27h を Read して、0x08 でマスクして 0 で無いのを確認すれば良いのではないだろうか?

その後、OUT_X_L (28h), OUT_X_H (29h)、OUT_Y_L (2Ah), OUT_Y_H (2Bh)、OUT_Z_L (2Ch), OUT_Z_H (2Dh)を Read して、OUT_?_L に 8 ビット左シフトした OUT_?_H を加えればデータを取得することができるはず。。。

ST の”L3GD20H 3-axis gyroscope, I2C/SPI digital output, low-power 3-axis angular rate sensor”のページ。
  1. 2023年04月06日 05:05 |
  2. FPGAを使用したシステム
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5899-47ebf47f
この記事にトラックバックする(FC2ブログユーザー)