Arduinoで9軸センサーを使用する SparkFun 9DoF IMU (ICM-20948)

組み込み
スポンサーリンク

仕事で使う機会があったので、内容をまとめておきます。

基本構成

公式情報としてはSparkFun 9DoF IMU (ICM-20948) Breakout Hookup Guideになります。
日本語でカタログを見たい場合はSWITCHSCIENCEのサイトを参照します。

基本的には9軸センサーなのですが、実際には温度も測定できるのでセンサーは10個になります。
SWITCHSCIENCEのサイトでは供給電力が1.95〜3.6 Vとなっていますが、本家のサイトでは1.8-5.5Vとなっています。
判断難しいですが、本家のサイトを信用しましょう。

ジャンパは特に変更することは無いように思いますが、消費電力を下げたい場合は「LED Jumper」を切断してLEDを光らないようにしておきましょう。

サンプルプログラムを動かしてみる(「Example1_Basics」)

デフォルトではI2Cで通信を行う設定になっています。
SPIで通信をしたい場合はコメントアウトされている以下行を有効にする必要があります。

//#define USE_SPI       // Uncomment this to use SPI

setup()では初期化処理を行っています。
I2Cの場合は以下の部分になります。

myICM.begin( WIRE_PORT, AD0_VAL );

データの取得、表示はサンプルコードのままで良いと思います。

サンプルプログラムを動かしてみる(「Example2_Advanced」)

「Example1_Basics」との違いについてみていきます。

まず、setupで「sleep」と「lowPower」の2つがあります。
これはセンサーのON/OFF制御になっています。消費電力を抑えたい場合は制御しましょう。

myICM.sleep( false );
myICM.lowPower( false );

また、ドキュメントを見ると以下記述があります。
復旧後は記載されている時間待った方が良いと思われます。

DS-000189-ICM-20948-v1.3.pdf
 GYROSCOPE START-UP TIME From Full-Chip Sleep mode 35 ms
 ACCELEROMETER STARTUP TIME From Sleep mode 20 ms

samplemodeの部分では加速度、角速度のサンプリングを設定しています。

次はLow-Passフィルタ設定になります。
これは、データのノイズ除去用になります。
センサーのLow-Passフィルタを使用するか、ソフトウェア処理でノイズ除去を行うか考えて使用しましょう。

コメント

タイトルとURLをコピーしました