3軸ジャイロセンサー(L3GD20)のテスト

XYZの角速度を取得できるジャイロセンサーが秋月電子さんから販売されていたので試してみました。I2CとSPI接続に対応しています。電源は3.3Vで5Vに対応していない点が要注意です。

使用機器

使用機器は下記のとおり。他、パソコンや電源、PICKIT2も当然ながら必要です。

ジャイロセンサー STマイクロL3GD20使用 3軸ジャイロセンサーモジュール
AE-L3GD20

シリアル変換 USB-USART変換基盤_ZT-FTDI03
マイコンボード(PIC16F1947搭載) ZEATEC co.,ltd. ZT-PIC16F194701(3.3V仕様)

接続は下記のとおりです。

マイコンボード
1 5V
2 GND
3 SCL
4 SDA
I2C
 
 
 
 
 
----- 赤 ------
----- 黒 ------
----- 白 ------
----- 白 ------
 
 
 
 
 
AE-L3GD20
1 VDD
8 GND
2 SCL
3 SDA
4 SA0
5 CS
6 INT2
7 INT1
IO PORT
 
 
 
 
 
GNDと接続
VDDと接続
 
 
 

ちょっと解説

    long l3gd20_x = 0;//X軸値
    long l3gd20_y = 0;//Y軸値
    long l3gd20_z = 0;//Z軸値
    //アドレス設定
    int l3gd20_addr_r = 0b11010101;//0xd5
    int l3gd20_addr_w = 0b11010100;//0xd4
    
    void l3gd20_write(int reg, int val){
        i2c_start();
        i2c_write(l3gd20_addr_w);//書込みアドレス送信
        i2c_write(reg);//
        i2c_write(val);//
        i2c_stop();
    }
    
    int l3gd20_read(int reg){
        int ans = 0;
        i2c_start();
        i2c_write(l3gd20_addr_w);//書き込みアドレス送信
        i2c_write(reg);//
        i2c_start();
        i2c_write(l3gd20_addr_r);//読み込みアドレス送信
        ans = i2c_read(0);
        i2c_stop();
    
        return ans;
    }
    
    int l3gd20_init(){
        //XYZのセンサーを有効にしてパワーダウンをOFFに設定
        l3gd20_write(0x20, 0b00001111);//REG1
        //l3gd20_write(0x21, 0b00001000);//REG2
        //l3gd20_write(0x22, 0b00001000);//REG3
        //l3gd20_write(0x23, 0b10110000);//REG4
        //l3gd20_write(0x24, 0b00000000);//REG5
    }
    
    void l3gd20_getval(){
        l3gd20_x = l3gd20_read(0x29) << 8;l3gd20_x = l3gd20_x + l3gd20_read(0x28);
        l3gd20_y = l3gd20_read(0x2b) << 8;l3gd20_y = l3gd20_y + l3gd20_read(0x2a);
        l3gd20_z = l3gd20_read(0x2d) << 8;l3gd20_z = l3gd20_z + l3gd20_read(0x2c);
    }  

プロジェクトファイルも含めたサンプル 16f1947_l3gd20.zip
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132

カテゴリーから探す


関西ドローン安全協議会修了済み

モバイルショップ

広告