株式会社ジーテック

制御機器を小ロット多品種で設計製作

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仕様)

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

ちょっと解説

コードは下記のとおりで、l3gd20_init()をスタートアップで処理し、定期的にl3gd20_getval()を実行する事で値が更新されます。

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

©ZEATEC co.,ltd.