フライトコンピューターをつくる #2 ~MEMSセンサ編~

目次

MEMSセンサ

フライトコンピューターの姿勢角を算出するためには、加速度センサと角速度(ジャイロ)センサが必要になります。今回はそのセンサにTDKのICM-45686を使用してみたいと思います。ICM-45686の評価ボード(EV_ICM-45686)を購入したので、さっそくデバイスにアクセスしてみたいと思います。

EV_ICM-45686

アクセスできるか確認

まずは配線していきたいと思います。評価ボードにはピンヘッダにSPIの信号が出ていますが、EV_ICM-45686のユーザーガイドが見つからなかっため、EV_IIM-42652の評価ボードのピン配を参考に配線しました。SCK(AP_SCLK)、MISO(AP_SDO)、MOSI(SP_SDIO)、CS(AP_CS)はピン配が変更されておらず、そのままのようでした。

次にCPUの評価ボード(STM32F407G-DISC1)に接続します。今回はレベル変換(3.3V⇔1.8V)を使用していますが、変換なしでも接続できると思います。

配線が完了したので、いよいよデバイスにアクセスしてみます。WHO_AM_I(0x72)のレジスタを読んでみたところ、ちゃんとデータシート通り0xE9(233)が返ってきています。

オシロスコープでも確認してみました。少し見づらいですが、黄色がクロック(SCK)で、青色がデバイスから出力されるデータ(MISO)です。左側の8ビットがR/W+アドレスで、右側の8ビットがレジスタの値になります。波形でも、00011001(=0xE9)となっていることが分かります。

加速度センサと角速度センサの値を読み取る

デバイスにアクセスできることが確認できたので、次は加速度センサと角速度センサの値を読み取ってみたいと思います。起動直後は加速度と角速度センサの出力がONとなっていないため、コンフィグレーションのレジスタ(PWR_MGMT0)に0x0Fを書きます。そして、加速度と角速度のレジスタにアクセスしてみると、ちゃんと波形がでていることが分かります。(センサ温度も読み取っているので、全部で14個のレジスタにアクセスしています。)

今度はその読み取った値を加速度もしくは角速度の値に変換する必要があります。データシートを確認すると1ビットあたりのウェイトが以下のように記載されています。

【加速度】
・フルスケールのレンジ(最大測定範囲)が±16Gの場合、2048LSB/Gと記載されているので、読み取った値(16ビット)を2048で割ることで加速度が算出できます。

【角速度】
・フルスケールの値が±2000°/sの場合、16.834LBS/°/sと記載されているので、読み取った値(16ビット)を13.846で割ることで角速度が算出できます。

IDEで確認するとそれらしい値がでていることが確認できました。

次回

次回はFIFOを利用して加速度と角速度のデータを取得してみたいと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次