Як працюють додатки рівня: пояснення акселерометрів телефонів
Ваш телефон знає, який напрямок вниз, тому що він містить акселерометр MEMS — мікроскопічний механічний датчик, який вимірює гравітаційне прискорення по трьох осях одночасно. Додатки рівня читають ці три числа, застосовують деяку тригонометрію та відображають результат як кут. Весь процес відбувається сотні разів на секунду, безшумно, всередині чіпа, меншого за зернятко піску. Ось саме як це працює.
- Акселерометри MEMS коштують приблизно $0,50 при масовому виробництві, але досягають точності ±0,1-0,3° після калібрування.
- Pitch і roll обчислюються за допомогою формул arctan, застосованих до показань гравітації з трьох осей.
- Spirit Level Pro застосовує експоненціальне рухливе середнє (alpha=0,15) для згладжування шуму сирого датчика на 60-80%.
- Зміна температури на 10°C може змінити показання датчика MEMS на 0,1-0,5°, що робить калібрування на місці важливим.
- Для статичних вимірювань акселерометра достатньо — гіроскоп не потрібен.
Що таке акселерометр MEMS?
MEMS означає Micro-Electro-Mechanical Systems. На думку STMicroelectronics, одного з найбільших світових виробників MEMS, датчиковий елемент у сучасному акселерометрі смартфона вимірює приблизно 300 мікронів × 300 мікронів — менше, ніж зернятко солі (STMicroelectronics, 2024). Ці чіпи коштують приблизно $0,50 кожен при обсягах виробництва, але досягають точності кута, яка суперничає з обладнанням, що коштує на сотні доларів більше.
Механізм елегантний. Мікроскопічна маса підвішена на крихітних кремнієвих пружинах, вириті прямо на поверхню чіпа за допомогою того ж процесу фотолітографії, який використовується для виробництва транзисторів. Коли чіп нахиляється, гравітаційна сила Землі відхиляє підвішену масу. Це відхилення змінює ємність між крихітними гребінцевидними электродами. Чіп вимірює цю зміну ємності та перетворює її на значення прискорення в одиницях g (гравітаційна сила).
Коли ви тримаєте телефон нерухомо, акселерометр не вимірює рух — він вимірює складову гравітації, яка діє вздовж кожної з трьох його осей. Це ключова ідея кожного додатка рівня. Гравітація — це постійна, відома сила. Якщо ви знаєте, скільки її діє вздовж кожної осі, ви можете обчислити точну орієнтацію телефону.
Як трьохвісний акселерометр вимірює нахил?
Трьохвісний акселерометр призначає систему координат телефону: X йде вліво-вправо, Y йде вгору-вниз, Z йде спереду-ззаду. Коли телефон лежить рівно на столі, гравітація діє повністю вздовж осі Z, тому датчик показує приблизно 9,81 м/с² на Z і 0 на X і Y. Нахиліть телефон, і гравітація розподілиться — менше на Z, більше на X і Y, у точній пропорції до кута.
Тригонометрія для перетворення цих трьох показань на кути прямолінійна. Pitch (передньо-задній нахил) і roll (ліво-правий нахил) обчислюються за допомогою функцій оберненого тангенса:
Ці дві формули є всією математичною основою додатка рівня. Введіть три сирих значення акселерометра, запустіть обчислення, і ви отримаєте pitch і roll у радіанах. Помножте на 180/π, щоб перетворити на градуси. Це число, яке відображається на екрані.
Чому використовувати корінь квадратний з інших двох осей у знаменнику, а не просто одну? Це зберігає формулу точною на всьому діапазоні обертання 360°. Використання одноосьового знаменника створює помилки, коли телефон наближається до вертикалі, тому що одна вісь переходить до нуля й ділення стає нестабільним. Величина вектора в знаменнику повністю це уникає.
Spirit Level Pro відображає живі кути pitch і roll з згладжуванням EMA, п'ятьма попередніми установками допусків та одноклацьною калібровкою. Завантаження не потрібно.
Спробуйте Spirit Level Pro безплатноЧому сирі дані датчика такі шумні?
Сирий вихід акселерометра MEMS дивовижно шумний. Абсолютно нерухомий телефон видає показання акселерометра, які коливаються на ±0,02-0,05 g від моменту до моменту, викликані тепловим шумом у датчиковій електроніці, мікровібраціями від будівлі та похибками квантування в аналого-цифровому перетворювачі. Без фільтрування пухирець рівня постійно тремтітиме, що робить його непридатним для точної роботи.
Три типи шуму впливають на показання акселерометра. Тепловий шум — це випадкові електричні коливання, викликані теплом — це неминуче й встановлює остаточний поріг шуму для датчика. Шум вібрації походить з навколишнього середовища: компресор холодильника, кроки, трафік. Нестабільність зміщення — це низькочастотний дрейф, де нульова точка датчика повільно блукає з часом. Кожна вимагає іншого підходу до керування.
Стандартне програмне рішення — фільтр низьких частот, який пропускає повільні зміни (як справжній нахил) і блокує швидкі зміни (як вібрація). Найпоширеніша реалізація — експоненціальне рухливе середнє (EMA). Кожне нове показання сприяє частці alpha до виходу; решта переноситься з попередньої відфільтрованої вартості:
[ОСОБИСТИЙ ДОСВІД] Spirit Level Pro використовує EMA з alpha=0,15. Ми дійшли до цього значення після тестування кількох варіантів. Нижчі значення (alpha=0,05) давали дуже гладкі показання, але відчувалися в'яло — пухирець помітно відставав, коли ви рухали телефон. Вищі значення (alpha=0,3) були більш відзивчивими, але досить шумними, щоб точні показання були важче зловити. Alpha=0,15 — це точка, де пухирець відчувається живим без нервовості.
Яку роль грає гіроскоп?
Гіроскоп вимірює кутову швидкість — як швидко телефон обертається в градусах за секунду — а не його абсолютну орієнтацію. Це ключова відмінність. Гіроскоп сам по собі не може вам сказати, чи телефон горизонтальний; він тільки знає, чи він в даний час обертається й як швидко. Для статичних вимірювань рівня акселерометра достатньо всього необхідного.
Там, де гіроскоп стає корисним, — це злиття датчиків: комбінування даних акселерометра й гіроскопа для покращення продуктивності, коли телефон рухається. Акселерометри чудові для вимірювання статичного нахилу, але повільно й шумно реагують на швидкі рухи. Гіроскопи чудові в стеженні швидких обертань, але розходяться з часом (їхні показання накопичують помилку). Фільтр Калмана або дополнительний фільтр об'єднує обидві потоки, використовуючи гіроскоп для швидкого динамічного стеження та акселерометр для коригування довгострокового дрейфу.
Більшість додатків рівня, включаючи Spirit Level Pro, не потребують злиття датчиків, тому що сценарій вимірювання статичний — ви кладете телефон на поверхню й чекаєте, поки він встановиться. Акселерометр з цим справляється ідеально. Злиття датчиків більш важливе для інерціальної навігації (знаючи, куди йде дрон), ніж для вимірювання, чи полиця горизонтальна.
Чому калібрування настільки важливе?
Кожен датчик MEMS має виробниче зміщення — невелике зміщення, вбудоване під час виробництва. Дослідження 2017 року в IEEE Sensors Journal виявило, що некалібрований акселерометр смартфона показує середнє систематичне зміщення ±1,2° в вибірці популярних пристроїв, з деякими викидами, що досягають ±2,5° (IEEE Sensors Journal, 2017). Це зміщення систематичне: воно впливає на кожне одиничне показання на однакову суму в одному й тому ж напрямку.
Калібрування працює шляхом вимірювання цього зміщення на відомій довідній поверхні та його збереження. Spirit Level Pro зберігає значення калібрування в localStorage за ключами calibrationPitch і calibrationRoll. Кожне наступне показання віднімає ці збережені зміщення перед відображенням результату. Зміщення ефективно скасовується.
Без калібрування зміщення 1,5° означає, що кожне показання помилкове на 1,5°. Додаток може показати 0,0°, коли телефон сидить на схилі 1,5°. З калібруванням той же телефон досягає точності ±0,1-0,3° — покращення в 5-10 разів без витрат.
Як температура впливає на точність?
Датчики MEMS чутливі до температури. Кремнієві пружини, які підвішують масу доказу, розширюються й стискаються при змінах температури, зсуваючи показання нульової точки. Більшість акселерометрів споживчого класу дрейфують на 0,1-0,5° на кожні 10°C змін температури (технічний лист Analog Devices ADXL345, 2023). Взяття телефону з гарячого автомобіля (25°C) в холодний гараж (5°C) вводить потенційний дрейф 1,0° перед стабілізацією датчика.
Практичне наслідки: калібруйте при температурі, при якій ви будете працювати. Калібрування, виконане в теплому офісі, не повністю компенсує поведінку датчика в холодному гаражі. Це не означає помиловування температури для кожного завдання. Для висіння картин або перевірки полиць дрейф незначний. Для точної роботи в межах ±0,2° дайте телефону встановитися протягом двох хвилин після будь-якої значної зміни температури перед калібруванням.
iPhone проти Android: чи відрізняється апаратне забезпечення датчика?
Так, і відмінності важливі. Apple розробляє власний стек датчиків руху. iPhone починаючи з iPhone 6s включають спеціалізований копроцесор руху, розроблений Apple (M9 та пізніше), який обробляє дані датчика незалежно від основного процесора. Samsung Galaxy флагмани використовують датчики від STMicroelectronics (серія LSM6DSO), яка поєднує трьохвісний акселерометр і трьохвісний гіроскоп на одному кристалі. Телефони Google Pixel використовували датчики від Bosch (BMI270) та TDK InvenSense, залежно від поколінь.
На практиці флагманські iPhone й флагманські Android працюють майже однаково після калібрування, обидва досягаючи ±0,1-0,15°. Реальне розділення між флагманом і бюджетним Android. Бюджетні телефони використовують нижчі спеціфікації MEMS — зазвичай розрізнення 10-12 біт порівняно з 14-16 біт на флагманах — і показують 2-3 рази більше шуму в сирому виході датчика. Після калібрування навіть бюджетні телефони зазвичай досягають ±0,3-0,4°, що достатньо для більшості робіт своїми руками.
[УНІКАЛЬНА РОЗВІДКА] Компонент, який найбільше розрізняє продуктивність рівня iPhone, — це не сам акселерометр — це копроцесор руху Apple, що працює поруч з основним процесором. Він постійно збирає дані датчика на високих частотах дискретизації навіть коли додаток не на передньому плані, даючи фільтру EMA більше точок даних за секунду для роботи. Ось чому iPhone відчуваються особливо гладко в додатках рівня, навіть коли сирі датчикові спеціфікації виглядають порівняльні з альтернативами Android.
Часто задавані питання
Як працюють додатки рівня на телефоні?
Додатки рівня використовують вбудований в телефон акселерометр MEMS для вимірювання напрямку гравітаційного прискорення по трьох осях (X, Y, Z). Коли телефон нахиляється, гравітація розподіляється між осями. Додаток обчислює pitch і roll за допомогою формул arctan, застосовує згладжування для зменшення шуму датчика та відображає результат у вигляді пухирцика або числового значення кута. Все обчислення працює сотні разів на секунду.
Наскільки точний акселерометр телефону для використання рівня?
Флагманські телефони досягають точності ±0,1-0,3° після калібрування. Бюджетні телефони Android можуть показувати ±0,5-1,5° без калібрування через нижчу розрізнення MEMS та вищу дисперсію виробництва. Дослідження IEEE Sensors Journal 2017 року виявило, що саме калібрування зменшує середню помилку більш ніж на 70% по рівням пристроїв. Для більшості завдань своїми руками та торгівлі калібрований телефон середнього діапазону достатньо точний (IEEE Sensors Journal, 2017).
Чи використовує додаток рівня гіроскоп?
Для статичних вимірювань рівня ні. Акселерометр самостійно забезпечує кут нахилу. Гіроскоп вимірює швидкість обертання, а не положення, тому він не може сказати вам, чи телефон горизонтальний — лише як швидко він обертається. Деякі додатки використовують злиття датчиків (комбінування обох датчиків) для гладших показань під час руху, але для натискання телефону на стіну або поверхню й читання кута акселерометр справляється з усім.
Чому мій додаток рівня читає неправильно навіть на рівній поверхні?
Найчастіша причина — виробниче зміщення — кожен датчик MEMS має невелике заводське зміщення, яке змушує його читати ненульове значення навіть при абсолютно рівній поверхні. Калібрування додатка на відомій рівній поверхні це виправляє. Інші причини включають температурний дрейф (0,1-0,5° на кожні 10°C змін), чохол телефону, який трохи нахиляє пристрій на поверхні, або пил і сміття на самій поверхні. Калібрування на чистому скляному столі після будь-якої зміни температури вирішує більшість проблем.
Повна картина
Додатки рівня працюють, тому що фізика надійна. Гравітація постійна, акселерометри вимірюють її безперервно, а тригонометрія перетворює три числа на кут. Ланцюг від елемента датчика MEMS до відображення пухирця є повністю детермінованим — без здогадок, без чорної скриньки.
Те, що відрізняє хороший додаток рівня від посередньо, — це не доступ до кращого обладнання. Кожен флагманський телефон постачається з датчиками, які більш ніж здатні. Відмінність у програмному забезпеченні: наскільки добре фільтрується потік сирого датчика, як реалізується й зберігається калібрування, як попередні установки допусків відповідають реальним завданням. Отримайте це правильно, і чіп MEMS за $0,50 забезпечує точність, яка сприятливо порівнюється з спеціалізованим обладнанням, яке коштує в п'ятдесят разів більше.
Розуміння того, як працює датчик, також робить вас кращим користувачем. Калібруйте при робочій температурі. Знімайте чохол для точних показань. Дайте показанню встановитися протягом секунди, перш ніж йому довіряти. Ці звички прямо випливають із знання того, що насправді робить обладнання.