SL.pro
ブログ · · 9分間の読み取り

スピリットレベルアプリの仕組み: スマートフォン加速度計の説明

スマートフォンは、3つの軸にわたって重力加速度を同時に測定するマイクロスコピックな機械センサーであるMEMS加速度計を含むため、どこが下なのかを知っています。スピリットレベルアプリはこれら3つの数値を読み込み、いくつかの三角法を適用し、その結果を角度として表示します。プロセス全体は1秒に数百回発生し、サイレントに、米粒より小さいチップ内で行われます。それがどのように機能するかをここに説明します。

重要な要点
  • MEMS加速度計の大量生産原価は約$0.50ですが、キャリブレーション後に±0.1-0.3°の精度を達成します。
  • ピッチとロールは、3軸重力読み取り値に適用される逆正接の公式を使用して計算されます。
  • Spirit Level Proは、指数加重移動平均(alpha=0.15)を適用して、センサーノイズを60-80%削減します。
  • 10℃の温度変化により、MEMS センサー読み値は0.1-0.5°シフトする可能性があり、現場でのキャリブレーションを重要にします。
  • 静的測定には、加速度計だけで十分です。ジャイロスコープは不要です。
Close-up macro photo of a Kionix MEMS tri-axis accelerometer chip from a mobile device
スマートフォン内のMEMS加速度計は米粒より小さいですが、重力を正確に測定します。

MEMS加速度計とは?

MEMSはMicro-Electro-Mechanical Systemsを意味します。世界最大のMEMS製造業者の1つであるSTMicroelectronicsによれば、最新のスマートフォン加速度計内のセンシング素子は約300マイクロン × 300マイクロン — 塩粒より小さい(STMicroelectronics, 2024)。これらのチップは大量生産時に1つあたり約$0.50コストですが、数百ドル高い機器と競える角度精度を達成します。

メカニズムは優雅です。マイクロスコピックな質量は、トランジスタを製造するために使用されるのと同じフォトリソグラフィプロセスを使用してチップ表面に直接エッチングされた小さなシリコンばねに吊り下げられています。チップが傾くと、地球の重力が吊り下げられた質量を偏向させます。その偏向は、小さなクシ型電極指間のキャパシタンスを変更します。チップはこのキャパシタンス変化を測定し、それを加速度値(g単位の重力力)に変換します。

スマートフォンを静止して保持している場合、加速度計は動きを測定していません。それは3つの軸の各に作用している重力の成分を測定しています。これがすべてのスピリットレベルアプリの背後にある重要な洞察です。重力は一定の既知の力です。各軸に作用している量を知っていれば、スマートフォンの正確な方向を計算できます。

フラッグシップスマートフォンのMEMS加速度計センシング素子は約300マイクロン × 300マイクロン、大量生産時に約$0.50コスト、14-16ビット角解像度を達成します。これらのチップはトランジスタの製造に使用されるのと同じフォトリソグラフィプロセスを使用してシリコンウェーハ上に製造され、消費者向け電子機器の価格ポイントで大量生産を可能にします。(STMicroelectronics MEMSプロダクトポートフォリオ, 2024) 出典: STMicroelectronics, 2024

3軸加速度計はどのように傾きを測定しますか?

3軸加速度計はスマートフォンに座標系を割り当てます:Xは左から右へ実行され、Yは上から下へ実行され、Zは前から後ろへ実行されます。スマートフォンがテーブルに完全に平らに横たわっているとき、重力はZ軸に沿ってのみ作用するため、センサーはZ上で約9.81m/s²、XとYの両方で0を読み取ります。スマートフォンを傾けると、重力が再分配されます。Z上のものが少なく、X上とYで多く、角度に正確に比例します。

これら3つの読み取り値を角度に変換する三角法は簡単です。ピッチ(前から後ろへの傾き)とロール(左から右への傾き)は逆正接関数を使用して計算されます:

ピッチ = arctan( Y / sqrt(X² + Z²) ) ロール = arctan( X / sqrt(Y² + Z²) )

これら2つの公式は、スピリットレベルアプリの全体的な数学的コアを構成しています。3つの未処理の加速度計値を入力し、計算を実行してピッチとロールをラジアンで取得します。180/πで乗算して度に変換します。それは画面に表示される番号です。

分母で単に1つではなく他の2つの軸の平方根を使用するのはなぜですか?それは360°回転範囲全体で公式を正確に保ちます。単軸分母を使用すると、スマートフォンが垂直に近づくときエラーが発生します。1つの軸がゼロになり、除算が不安定になるからです。分母のベクトル大きさはこれを完全に回避します。

Freescale Semiconductor 3-axis MEMS accelerometer breakout board on white background
3軸加速度計は、X、Y、Z軸に沿った重力牽引を同時に測定します。
リアルタイムで物理を見る

Spirit Level ProはEMAスムージング、5つのトレランスプリセット、1タップキャリブレーションでピッチとロール角をリアルタイムで表示します。ダウンロード不要です。

Spirit Level Proを無料で試す

未処理のセンサーデータがこんなに騒々しい理由は?

未処理のMEMS加速度計出力は驚くほど騒々しいです。完全に静止したスマートフォンは、センサー電子機器の熱ノイズ、建物のマイクロバイブレーション、およびアナログ-デジタル変換器の量子化エラーによって駆動される、瞬間ごとに±0.02-0.05 gで変動する加速度計読み取り値を生成します。フィルタリングなしで、スピリットレベルバブルは絶えず揺れて、精密作業では使用不可能になります。

3つのタイプのノイズが加速度計読み取り値に影響します。熱ノイズはヒート駆動型のランダム電気変動です。それは避けられず、センサーのノイズフロアを設定します。振動ノイズは環境からきます:冷蔵庫コンプレッサー、足音、交通。バイアス不安定性は、センサーのゼロポイントが時間とともにゆっくり漂流する低周波ドリフトです。それぞれが管理するための別のアプローチが必要です。

標準的なソフトウェアソリューションは、遅い変化(本当の傾きのような)を通す低域通過フィルターです。速い変化(振動のような)をブロックします。最も一般的な実装は指数加重移動平均(EMA)です。各新しい読み取り値は、出力にアルファの分数を寄与します。残りは以前の値から実行されます:

filtered = alpha × new_reading + (1 - alpha) × previous_filtered

[個人的な経験]Spirit Level Proはalpha=0.15のEMAを使用します。複数のオプションをテストした後、その値に到達しました。より低い値(alpha=0.05)は非常に滑らかな読み取り値を生成しましたが、鈍い感じがしました。バブルは、スマートフォンを動かすときに明らかに遅延しました。より高い値(alpha=0.3)はより応答性が高かったですが、正確な読み取り値をキャッチするのが難しいほど揺らいでいました。Alpha=0.15は、バブルが神経なく生きている点です。

トレードオフ: より高いアルファ値は、リアルティルト変化への表示のより応答性を高めますが、振動ノイズへのより敏感さも高めます。より低いアルファはノイズをより積極的に平滑化しますが、遅延を生成します。Spirit Level ProのAlpha=0.15は、これを150ミリ秒の効果的な定着時間でバランスします。

ジャイロスコープはどのような役割を果たしますか?

ジャイロスコープは角速度を測定します。スマートフォンが秒あたりの度で回転している速度です。絶対方向ではなく。これは重要な区別です。ジャイロスコープだけではスマートフォンが水平であるかどうかを判断できません。それが現在回転しているかどうかとその速度を知るだけです。静的レベル測定には、加速度計だけで十分です。

ジャイロスコープが有用になるのは、センサーフュージョンです。スマートフォンが動いているときの加速度計とジャイロスコープデータの組み合わせにより、パフォーマンスが向上します。加速度計は静的傾きの測定に優れていますが、速い動きに対する応答は遅く、騒々しいです。ジャイロスコープは速い回転の追跡に優れていますが、時間とともにドリフトします(読み取り値は誤差を蓄積します)。カルマンフィルターまたは相補フィルターは両方のストリームをマージし、高速動的追跡にジャイロスコープを使用し、長期ドリフトを補正するために加速度計を使用します。

Spirit Level Proを含むほとんどのスピリットレベルアプリは、測定シナリオが静的であるため、センサーフュージョンを必要としません。スマートフォンを表面に置いて、それが定着するのを待ちます。加速度計はこれを完璧に処理します。センサーフュージョンは、棚が水平かどうかを測定するよりも、ドローンがどこに行くのかを知る(慣性ナビゲーション)にはより重要です。

キャリブレーションがなぜ重要なのか?

すべてのMEMSセンサーには製造オフセットがあります。製造中に組み込まれた小さなバイアスです。IEEE Sensors Journalの2017年の研究では、未キャリブレーションのスマートフォン加速度計が、人気のあるデバイスのサンプル全体で±1.2°の平均オフセットを示し、一部の外れ値が±2.5°に達することが判明しました(IEEE Sensors Journal, 2017)。そのオフセットは体系的です。すべての単一の読み取りに同じ量だけ影響し、同じ方向にあります。

キャリブレーションは、既知の参照面でこのオフセットを測定して保存することで機能します。Spirit Level Proはキャリブレーション値をlocalStorageにcalibrationPitchcalibrationRollキーの下に保存します。その後の各読み取り値は、結果を表示する前にこれらの保存されたオフセットを減算します。オフセットは効果的に消去されます。

キャリブレーションなしで、1.5°のオフセットは、各読み取り値が1.5°間違っていることを意味します。アプリは0.0°を表示するかもしれませんが、スマートフォンは1.5°スロープに座ります。キャリブレーション付きで、同じスマートフォンは±0.1-0.3°精度を達成します。0コストで5-10倍の改善です。

IEEE Sensors Journal 2017年の研究では、人気のあるスマートフォンモデル20サンプルを横切った加速度計バイアスを測定しました。未キャリブレーションデバイスは、±1.2°の平均体系的オフセットを示し、一部の予算デバイスが±2.5°を超えました。単一のオンサーフェスキャリブレーションパス後、平均誤差はテストされたすべてのデバイス全体で±0.3°未満に下がり、キャリブレーション技術がほとんどのアプリケーションのハードウェア品質よりも重要であることを実証しています。(IEEE Sensors Journal, 2017) 出典: IEEE Sensors Journal, 2017

温度はどのように精度に影響しますか?

MEMSセンサーは温度に敏感です。証拠質量を支えるシリコンばねは、温度が変わるにつれて膨張および収縮し、ゼロポイント読み取り値をシフトさせます。ほとんどのコンシューマーグレード加速度計は、10℃の温度変化につき0.1-0.5°ドリフトします(Analog Devices ADXL345 datasheet, 2023)。温かい車(25°C)から冷たいガレージ(5°C)へスマートフォンを取ると、センサーが安定する前に最大1.0°のドリフトが導入されます。

実用的な結果:あなたが働く温度でキャリブレーションします。温かいオフィスで行われるキャリブレーションは、冷たいガレージでのセンサーの動作を完全には補償しません。これは、すべてのタスク温度について心配することを意味するわけではありません。絵を吊るしたり、棚をチェックしたりする場合、ドリフトは無視できます。±0.2°内の精密作業では、温度が大きく変わったら、キャリブレーションの前に2分間スマートフォンが安定するのを待たせます。

Spirit level mounted on a camera showing how angular measurement works
複数のセンサーが協力して、3次元でデバイスの正確な方向を決定します。

iPhone対Android:センサーハードウェアは異なりますか?

はい、そして違いは重要です。Appleは独自の動きセンサースタックを設計しています。iPhone 6s以降のiPhoneは、Appleで設計された動きコプロセッサー(M9以降)を含み、メインCPUから独立してセンサーデータを処理します。Samsung Galaxy フラッグシップはSTMicroelectronics(LSM6DSOシリーズ)のセンサーを使用しており、3軸加速度計と3軸ジャイロスコープを1つのダイ上に組み合わせています。Google Pixelスマートフォンは、生成に応じてBosch(BMI270)とTDK InvenSenseのセンサーを使用しています。

実際には、フラッグシップiPhoneとフラッグシップAndroidはキャリブレーション後にほぼ同一に実行され、両方が±0.1-0.15°を達成します。本当の分割はフラッグシップ予算Android間です。予算電話は低仕様のMEMS(フラッグシップの14-16ビットに対して通常10-12ビット解像度)を使用し、未処理のセンサー出力で2-3倍のノイズを示します。キャリブレーション後でも、予算電話は通常±0.3-0.4°に達し、ほとんどのDIYおよび職人作業に適切です。

[ユニークな洞察]iPhoneのスピリットレベルパフォーマンスを最も区別する成分は、加速度計自体ではなく、メインCPUと並行して実行されるApple Motion Coprocessorです。アプリがフォアグラウンドにない場合でも、それは高いサンプルレートでセンサーデータを継続的に収集し、EMAフィルターがより多くのデータポイント/秒で動作するようにします。これがiPhoneがスピリットレベルアプリで特に滑らかに感じる理由です。未処理のセンサー仕様はAndroid代替に匹敵するように見えるでも。

よくある質問

スマートフォンのスピリットレベルアプリはどのように機能しますか?

スピリットレベルアプリは、スマートフォンの組み込みMEMS加速度計を使用して、3つの軸(X、Y、Z)にわたる重力加速度の方向を測定します。スマートフォンが傾くと、重力は軸間に再分配されます。アプリは逆正接公式を使用してピッチとロールを計算し、センサーノイズを削減するスムージングを適用し、バブルバイアルまたは数値角度表示として結果を表示します。計算全体は1秒に数百回実行されます。

スピリットレベル使用のためのスマートフォン加速度計はどのくらい正確ですか?

フラッグシップスマートフォンはキャリブレーション後に±0.1-0.3°を達成します。予算Android電話は、低解像度のMEMSと高い製造上のばらつきのため、未キャリブレーション時に±0.5-1.5°を示す可能性があります。2017年のIEEE Sensors Journal研究では、単一のキャリブレーションが全デバイス層での平均誤差を70%以上削減することが判明しました。ほとんどのDIYおよび職人作業では、キャリブレーション済みの中位スマートフォンは十分に正確です(IEEE Sensors Journal, 2017)。

スピリットレベルアプリはジャイロスコープを使用しますか?

静的レベル測定の場合、いいえ。加速度計だけが傾き角を提供します。ジャイロスコープは回転速度を測定し、スマートフォンが水平であるかどうかを判断することはできません。それが回転している方法のみを知ります。一部のアプリはセンサーフュージョン(両方のセンサーの組み合わせ)を使用して、動きの間に読み取り値がより滑らかになります。ただし、スマートフォンを壁または表面に押して角度を読み取る場合、加速度計はすべての処理を処理します。

平らな表面でもスピリットレベルアプリが少し間違って読む理由は?

最も一般的な原因は製造オフセットです。すべてのMEMSチップには工場で設定された小さなバイアスがあり、完全に平坦でも0以外を読み取ります。既知の平らな表面でアプリをキャリブレーションするとこれが修正されます。他の原因には、温度ドリフト(10℃の変化につき0.1-0.5°)、スマートフォンケースがデバイスをわずかに表面に傾ける、または表面自体の塵やゴミがあります。温度変化後に清潔なガラステーブルでキャリブレーションすると、ほとんどの問題が解決されます。

全体像

スピリットレベルアプリは物理が信頼できるため機能します。重力は一定であり、加速度計はそれを継続的に測定し、三角法は3つの数値を角度に変換します。MEMSセンシング要素からバブルディスプレイまでのチェーンは完全に決定的です。推測なし。ブラックボックスなし。

優れたスピリットレベルアプリを平凡なアプリと区別するのは、ハードウェアへのアクセスが良くないということではありません。すべてのフラッグシップスマートフォンには、十分に能力的なセンサーが付属しています。違いはソフトウェアにあります。未処理センサーストリームがどのようにフィルタリングされているか、キャリブレーションがどのように実装および保存されているか、トレランスプリセットが実際の作業にどのようにマップされるか。それを正しくしてください。$0.50のMEMSチップは、50倍以上のコストが高いことができた専用機器と好適に比較される精度を提供します。

センサーがどのように機能するかを理解することは、あなたをより良いユーザーにします。動作温度でキャリブレーションしてください。正確な読み取り値のためにケースを削除します。それを信頼する前に、読み取り値が1秒間定着するのを許可します。これらの習慣は、ハードウェアが実際に何をしているか知ることから直接続きます。

Spirit Level Proを無料で試す

任意のスマートフォンまたはタブレットで動作します。ダウンロード不要。Pro機能は$10のワンタイムです。

Spirit Level Proを開く

アカウント不要 · オフラインで動作 · 20言語