重力
観察してみると、Micro:bit をチップ側(LED マトリクスの反対側)を上にしてテーブルの上に置いておくと、Z 値はおよそ +1000 になります。ですが、ちょっと待ってください。加速度の定義は、時間に対する速度の変化率です。では、Micro:bit が動いていないのに、なぜ 0 ではない値が得られるのでしょうか?
それは、重力があるからです。
地球上の標準的な重力加速度を表す 1 g(1000 mg)は、約 9.8 m/s² です。そして、加速度計が反応しているのはまさにこれです。
チップ側が上向きなのに、なぜ正になるのか?
チップ側が上向きのときに Z 値が正で、LED マトリクス側が上向きのときに負になることが実際には何を意味しているのだろう、と疑問に思っているなら、私と同じです。私も不思議に思いました。最初は気にしないようにしていましたが、ずっと引っかかっていました。そこで、ついにもう一度調べてみたところ、その混乱を解消してくれる Movella の素晴らしい記事 を見つけました。
簡略化した単軸 MEMS 加速度計 - 画像の元資料: Movella
ご存じのとおり、センサーチップは Micro:bit の裏側(LED マトリクスの反対側)に搭載されています。チップ側が上を向いている状態で、上の画像のように加速度計が配置されているところを想像してください。m と記された黒い箱が質量であり(専門的には「プルーフマス」と呼ばれます)、ばねのように見える部分は実際にばねであって、抵抗器と混同してはいけません。
センサーが重力と動きにどう反応するか
MEMS 加速度計の基本原理は、ごく小さな質量がチップの内部でばねによって支えられているというものです。加速度が発生すると、その質量はその場にとどまろうとし(慣性によるものです)、加速度の向きに応じてばねは圧縮されたり伸びたりします。
さて、重力は常に下向き、つまり地球の中心に向かって引っ張っています。そのため、Micro:bit をチップ側を上にしてテーブルの上に置いていると、重力は内部の質量を下向きに引っ張ります。これによってばねは圧縮され、これまで触ったことのあるどんなばねと同じように、元の形に戻ろうとします。その押し返す力は上向き、つまり正の Z 方向です。そして、センサーが +1 g として測定しているのがこれです。
加速度計が上向き(正の Z 軸方向)に加速されると、内部の質量は慣性によってその場にとどまろうとします。これによってばねも圧縮され、上向きの力が生じます。センサーは、この増加した力を Z 軸方向の正の加速度として解釈します。
同様に、加速度計が下向き(負の Z 軸方向)に加速されると、内部のプルーフマスは上向きに引っ張られ、ばね・ダンパー系は伸びます。加速度計はこれを負の加速度として検出します。
Micro:bit を裏返して LED マトリクスが上を向くようにすると、Z 軸は今度は下向きになります。重力は依然として質量を下向きに引っ張りますが、Z 軸が反転しているので、その引っ張る向きは今度は負の Z 方向になります。これによってばねは伸びます。なぜなら、質量は依然としてその引っ張りに抵抗しているからです。ばねは下向き(-Z 方向)に引っ張り、そのためセンサーの読み取り値はおよそ -1000 になります。