Акселерометр: что это такое и как им определять наклон тела

Акселерометр — это прибор, позволяющий измерять ускорение тела под действием внешних сил. Схематически, этот прибор можно изобразить в виде массивного тела, которое способно передвигаться вдоль некоторой оси и соединено с корпусом пружинами. Смещение тела относительно центра оси можно измерить с помощью механической стрелки, как показано на рисунке.

Акселерометр. Подключение MPU6050 к Ардуино

В состоянии покоя тело находится на равном удалении от стенок прибора и стрелка указывает на середину шкалы. Если весь прибор толкнуть вправо (кадр B), то груз сместится по оси влево до момента, когда сила растянутой пружины уравновесит внешнюю силу. В этот момент, стрелка повернется и укажет на некоторое значение на шкале. Чем больше внешняя сила, тем дальше смещается груз, тем большее значение показывает стрелка. Когда сила перестанет действовать на тело, груз вернется на прежнее положение и прибор покажет на нулевое значение шкалы.

1. Электронный МЭМС-акселерометр

Разумеется, внешний вид современного акселерометра отличается от этой простой модели с пружинками, но не сильно. Как и прежде, для измерения ускорения нам требуется какое-то массивное тело, которое будет скользить по направляющей и удерживаться в нейтральном положении пружинками. При этом, всё это должно быть очень миниатюрным, чтобы поместиться в тот же смартфон.

На помощь приходит технология МЭМС (микроэлектромеханические системы). С помощью МЭМС удаётся выращивать механический акселерометр на кремниевой подложке таким же методом, которым создаются и обычные микросхемы.

Снимок МЭМС акселерометра

Так выглядит МЭМС акселерометр на снимке, полученном при помощи микроскопа. Схема работы такого прибора представлена ниже.

Схема работы МЭМС акселерометра

Чтобы измерить смещение массивного тела вдоль оси прибора здесь применяется дифференциальный конденсатор. В состоянии покоя, расстояния между центральным электродом и двумя обкладками конденсатора (выделены оранжевым цветом) равны. При воздействии силы эти расстояния меняются, что в дальнейшем фиксируется специальной аналоговой измерительной системой.

Современные акселерометры имеют в своем составе сразу три измерительные оси, направленные перпендикулярно друг к другу. Это позволяет измерять ускорение тела в любом направлении.

2. Измерение углов наклона с помощью акселерометра

Все современные смартфоны умеют определять угол своего наклона относительно горизонта. Эта функция используется для автоматического поворота экрана, а также в различных играх, где управление происходит при помощи наклона. И всё это благодаря акселерометру. Но как устройство, определяющее ускорение, может помочь вычислить угол наклона?

Дело в том, что на акселерометр, как и на все тела на этой планете, действует сила гравитации. Эта сила придаёт телам ускорение когда они падают на землю. Повернем акселерометр так, чтобы его ось оказалась в вертикальном положении. В таких условиях груз сместится вниз, растянув при этом верхнюю пружину и сжав нижнюю. В этот момент акселерометр зафиксирует величину ускорения свободного падения — 9.8 м/с².

Схема работы МЭМС акселерометра

Попробуем использовать этот факт для вычисления угла наклона акселерометра относительно горизонта. Изобразим на схеме тело, на котором закреплен трёхосевой акселерометр. Обозначим эти три оси как: Xт, Yт и Zт.

Затем повернём тело на угол a вокруг оси Xт относительно системы координат мира X, Y и Z. Предполагается, что ось мира Z направлена вдоль вектора силы гравитации (вверх), а оси X и Y вдоль горизонта. Мы смотрим на всю эту систему сбоку, так что оси мира — X и тела — Xт смотрят на нас, и мы их не видим.

Вычисления угла наклона с помощью акселерометра

В таком положении акселерометр, находящийся внутри тела зафиксирует проекции силы гравитации на все три оси: Gxт,Gyт,Gzт. При этом проекция Gxт на ось Xт будет равна нулю, так как эта ось расположена вдоль горизонта. Проекции Gyт (зеленый отрезок) и Gzт можно выразить с помощью теоремы о прямоугольном треугольнике:

Gyт = G * cos(b) [1]
Gzт = G * sin(b) [2]

Таким образом, зная G и одну из проекций Gyт или Gzт можно вычислить угол b отклонения акселерометра от вектора гравитации Z (от вертикальной оси):

cos(b) = Gxт/G [3]
b = arccos(Gxт/G) [4]

Делая такие вычисления, важно учитывать, что G и Gyт должны измеряться в одинаковых единицах. Например, если мы преобразуем показания акселерометра к единицам гравитации (другими словами G = 1 — земная гравитация), то выражение для угла b примет вид:

b = arccos(Gxт/1) = arccos(Gxт) [5]

И напоследок, вычислим искомый угол a наклона тела относительно горизонта:

a = 90 - b = 90 - arccos(Gxт) [6]

Помним, что Gxт — это число, которое возвращает нам акселерометр.

Заключение

Итак, мы выяснили, что одного лишь акселерометра вполне достаточно, чтобы вычислить угол наклона тела относительно горизонта. В следующем уроке мы рассмотрим конкретный пример работы с датчиком MPU6050 на Ардуино.

Однако, следует учитывать, что вычисление углов с помощью акселерометра возможно только тогда, когда прибор находится в состоянии покоя. Ведь если на прибор во время измерения подействует любая другая сила, акселерометр непременно её зафиксирует и тем самым внесет ошибку в расчеты.

Частично снять это вредное воздействие внешних сил можно с помощью фильтра низких частот, о котором мы уже рассказывали. Можно пойти вообще по другому пути — использовать не акселерометр, а гироскоп. С помощью него тоже можно вычислять углы наклона. А самый правильный способ — объединить вместе показания разных датчиков, о чем можно узнать в статье про комплементарный фильтр.


Изменено: