1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Spresense用のBMI270とAK09918Cを搭載した9軸加速度センサーボードをテストしました

Posted at

設計はずいぶん前に終わっていましたが、製造が2度ほど延期になってしまっていた
9軸加速度センサーボードがやっと届いたのでテストしました。
このボードは以前から販売していたBMI270を使った6軸加速度センサーボード
Asahi Kasei Microdevices(AKM)の3軸磁気センサAK09918Cを追加したボードとなります。

メーカーのAK09918Cのページ

なおBMI270に関してはこちらを参考にしてください
SONY Spresense用の6軸センサーBMI270ボードをArduino IDEで動かしてみた

コチラが回路図になります。
NS-SPR-0315.png

Arduino IDEで使えるAK09918Cのライブラリはこちらから入手できます。
Seeed-Studio/Seeed_ICM20600_AK09918
ここからダウンロードしたzipファイルをArduino IDEのライブラリに追加してください。
exampleフォルダーの中の
test_magnet がAK09918のサンプルプログラムとなります。

test_magnet.ino
#include "AK09918.h"
#include <Wire.h>

AK09918_err_type_t err;
int32_t x, y, z;
AK09918 ak09918;

void setup() {
    // join I2C bus (I2Cdev library doesn't do this automatically)
    Wire.begin();

    err = ak09918.initialize();
    ak09918.switchMode(AK09918_POWER_DOWN);
    ak09918.switchMode(AK09918_CONTINUOUS_100HZ);
    Serial.begin(9600);

    err = ak09918.isDataReady();
    while (err != AK09918_ERR_OK) {
        Serial.println("Waiting Sensor");
        delay(100);
        err = ak09918.isDataReady();
    }
}

void loop() {
    err = ak09918.isDataReady();
    // err = AK09918_ERR_OK;
    if (err == AK09918_ERR_OK) {
        err = ak09918.isDataSkip();
        if (err == AK09918_ERR_DOR) {
            Serial.println(ak09918.strError(err));
        }
        err = ak09918.getData(&x, &y, &z);
        if (err == AK09918_ERR_OK) {
            Serial.print("X: ");
            Serial.print(x);
            Serial.print("uT");
            Serial.print("\tY: ");
            Serial.print(y);
            Serial.print("uT");
            Serial.print("\tZ: ");
            Serial.print(z);
            Serial.println("uT");
        } else {
            Serial.println(ak09918.strError(err));
        }
    } else {
        Serial.println(ak09918.strError(err));
    }
    delay(100);
}

このプログラムは修正無しで実行できます。
実行するとシリアルモニタに以下のようにデータが表示されます。

AK09918_ERR_DOR: Data skipped
X: 0uT	Y: 23uT	Z: -31uT
AK09918_ERR_DOR: Data skipped
X: 0uT	Y: 21uT	Z: -30uT
AK09918_ERR_DOR: Data skipped
X: -2uT	Y: 23uT	Z: -30uT

AK09918_ERR_DOR: Data skipped と表示されているのは
データの読み込みでオーバーフローが発生している警告なので
実際の測定には問題ないと思います。
コチラのデータシートを見て頂くと
mode1 ~ mode4 が連続取り込みとなっていて各モードでサンプリング間隔が変わっています。

これでSpresense用の加速度センサーのラインアップが
3軸センサー
6軸センサー
この9軸センサーと揃いました>

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?