IoT何をいまさら(45) MPU9250、ノイズとLPF

JosephHalfmoon
JosephHalfmoon

前回の投稿はMPU9250センサモジュールの9軸あるセンサのうち3軸分の加速度センサの目盛りがどのくらいの細かさかというところで終わっておりました。今回は、引き続きMPU9250センサの加速度部分がどのくらいの精度で加速度を測れるものだか調べていきたいと思います。それにはノイズについても押さえて置かないと。

前回、M5Stack GreyのMPU9250搭載機は、加速度センサのデフォルト設定としてフルスケール±2G設定。1Gが16384目盛りだと書きました。すると、1000を16384で割ればmG単位での目盛りが求まります。

1目盛りは約0.061035mG

ということになります。しかし、1目盛りが大体0.06mG単位だからといってその最小目盛りで加速度が測れると思うなよ、というのが今回の話です。なにせセンサの測定値にはノイズが乗っています。そのノイズに「埋もれて」しまうような小さな加速度の変化は測定できない筈。どのくらいなところが測定限界なんでしょうか。今回参照したのは前回と異なる

MPU-9250 Register Map and Descriptions (Revision:1.4)

というInvenSense社の文書です。前回の MPU-9250 Product Specificationは、センサ・ハードウエア上の各種仕様の数値が列挙されているのですが、プログラムするときに参照したいセンサ内の各レジスタについての説明は詳しく書いてありません。実際にプログラムする、あるいはMPU-9250制御用の関数内部を詳しくみていくためにはどんなレジスタが何番地にあって、そこにどんな数値を書いたらどうなる、という情報が必要です。上記の文書にはそこが書かれています。ただ、後で述べますが私がWebから拾ってこれたRevisionは、Product SpecificationとRegister Map and Descriptionsで若干矛盾するような数値が書いてありました。多分、Product Specificationの方が日付が新しいのでそちらを優先するべきかとも思われるのですが、Register Map and Descriptionsの方が詳しい数値がでているので、まずはそちらで計算してみたことをお断りしておきます。

注目するのは Register 29 – Accelerometer Configuration 2 というレジスタです。ここには2つのフィールドがありました。

  • ACCEL_FCHOICE、LPF(ローパス・フィルタ)を効かせるのかバイパスするのかの選択ビット
  • A_DLPFCFG、LPFの設定を8種のうちから1つ選択するためのフィールド

つまり、ACCEL_FCHOICEが0(デフォルト状態)であるとLPFは効かず

  • Bandwidth 1.13K Hz
  • Delay 0.75ms
  • Noise Density (ug/rtHz) 250

だと言うのです。そしてACCEL_FCHOICEが1の場合は、A_DLPFCFGが0から7の値に応じて

  • Bandwidth 460 Hzから5Hz
  • Delay 1.94ms から66.96ms
  • Noise Density (ug/rtHz) は常に250

に変化することが書かれています。この数値から、入力加速度換算でどの位のノイズが見込まれているのか計算を試みました。

まず、ローパス・フィルタを効かせない場合を求めてみます。

バンド幅 1.13kHzとあるので、その平方根をとれば 「rtHz」がもとまる筈、これにNoise Density 250マイクロG/rtHzを乗じると

8404マイクロG≒8.4ミリG

つまり、デフォルト設定のままでまったくLPFを効かせないと、遅延時間0.75msで、生の出力データレート4kHzと高速なデータの取得ができるようですが、反面、ノイズは8.4ミリGも乗っている可能性があり、最小目盛り約0.06ミリGなどというのは、ノイズに埋もれてしまっていることが分かりました。デルタ・シグマADCの生の出力の整数値で140くらいあっても誤差のウチということになります。

これに対してLPF(勿論デジタルフィルタであります)を最大に効かせると、実に66.96msも遅延が入り(その大部分はデジタルフィルタを通過するのに必要な時間でしょう)、出力データレートも1kHzに落ちるのですが、バンド幅は5Hzに制限されます。平方根をとってNoise Densityを乗ずれば

559マイクロG≒0.56ミリG

それでも最小メモリよりは1桁大きいですが、デフォルト設定のままに比べると1桁高い精度で加速度が求まることが分かります。

ただし、LPFを最大に効かせるとせいぜいサンプリング周期10Hzくらいで信号を取得できるようなゆっくりした加速度変化しかとれないことになります。これに対してLPFを効かせなければ2桁以上速い変化を捉えられるけれども精度はかなり悪くなることが分かりました。

どのような設定にするかは、測定する対象次第です。

なお、データシートの話に戻ると、Product Specificationでは、

  • Noise Power Spectral Density(ただしLow noise mode) 300 ug/rtHz
  • Low Pass Filter Response 5Hz ~ 260Hz

という数字が挙げられていました。このあたりの違いはモードの違いによるものなのか、なんなのか対応関係不明です。もっとよく読んでいったらどこかに書いてあるのかも。。。

IoT何をいまさら(44) MPU9250、9軸センサモジュール

IoT何をいまさら(46) 加速度センサ、静止と落下