地磁気センサー(Honeywell HMC5883L)のテスト

I2C接続地磁気センサーが秋月電子さんから販売されていたので試してみました。コンパスセンサーや方位センサーとも言われ、方位を取得する際に用いられます。正確な方位を取得するには物理的なコンパスと並べてキャリブレーションした方がいいみたいです。 3.3V電源という部分に注意が必要です。

使用機器

 

製品製作の流れ

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

地磁気センサー HMC5883L使用 デジタルコンパスモジュール
3軸地磁気センサ DIP化キット

シリアル変換 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
4 GND
3 SCL
2 SDA
5 RDY
6 N.C
7 N.C
8 N.C
IO PORT

ちょっと解説

使い方としてはhmc5883l_init()をスタート時に実行し、hmc5883l_getval()を定期的に実行するだけで、各変数に値が書き込まれます。

    int hmc5883l_addr_r = 0b00111101;//0x3d
    int hmc5883l_addr_w = 0b00111100;//0x3c
    long hmc5883l_x = 0;//X軸値
    long hmc5883l_y = 0;//Y軸値
    long hmc5883l_z = 0;//Z軸値
    
    void hmc5883l_write(int reg, int val){
        i2c_start();
        i2c_write(hmc5883l_addr_w);//書込みアドレス送信
        i2c_write(reg);//
        i2c_write(val);//
        i2c_stop();
    }
    
    int hmc5883l_read(int reg){
    
        int ans = 0;
    
        i2c_start();
        i2c_write(hmc5883l_addr_w);//書込みアドレス送信
        i2c_write(reg);//
        i2c_start();
        i2c_write(hmc5883l_addr_r);//読み込みアドレス送信
        ans = i2c_read(0);
        i2c_stop();
    
        return ans;
    }
    
    //コンパスモジュールの初期化
    void hmc5883l_init(){
        hmc5883l_write(0x00,0x70);
        hmc5883l_write(0x01,0xA0);
        hmc5883l_write(0x02,0x00);
    }
    
    void hmc5883l_getval(){
        hmc5883l_x = hmc5883l_read(0x03) << 8;hmc5883l_x = hmc5883l_x + hmc5883l_read(0x04);
        hmc5883l_y = hmc5883l_read(0x05) << 8;hmc5883l_y = hmc5883l_y + hmc5883l_read(0x06);
        hmc5883l_z = hmc5883l_read(0x07) << 8;hmc5883l_z = hmc5883l_z + hmc5883l_read(0x08);
    }
プロジェクトファイルも含めたサンプル 16f1947_hmc5883l.zip
開発環境:MPLAB_IDE_8_92 + CCS-C PCMコンパイラVer.4.132

カテゴリーから探す


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

モバイルショップ

広告