Данные акселерометра: как интерпретировать? - PullRequest
11 голосов
/ 03 мая 2011

Я экспериментирую с панелью управления с 3-мя акселерометрами.Ось X и Y очень просты в управлении, но ось Z немного загадочна.Я пытаюсь найти способ интерпретации данных в моем коде, чтобы увеличить выход при поднятии устройства в воздух и уменьшить при его опускании.Это возможно?Если так, то как?Может быть, если кто-то может указать мне на хороший справочный источник, который поможет.

Ответы [ 4 ]

28 голосов
/ 26 января 2012

Основные сведения об акселерометрах: (Только для некоторых концептуальных пояснений)

Акселерометры измеряют ускорение, часто вызываемое движением.Но когда они стоят на месте, единственное ускорение, которое ощущает акселерометр, происходит из-за того, что на него надвигается сила тяжести.

Представьте себе коробку с маленькими пружинами, торчащими прямо из боковых сторон коробки, и которую акселерометр измеряеткак сильно гравитация растягивает эти источники.Все боковые пружины изгибаются одинаково, пружина снизу все вытянута, а верхняя совсем не растянута (потому что пружина втягивается обратно в себя), поэтому акселерометр видит это какне чувствуя гравитации, или 0g (гравитация).Если повернуть коробку на 90º и следовать пружине сверху.Сейчас он сбоку и немного свисает, и датчик видит, что теперь чувствует себя .5g.Поверните еще раз на 90º, и он внизу растянется и почувствует 1г.Поверните снова на 90º, и мы снова окажемся на стороне, чувствуя, что 5 г, и снова на 90 °, мы снова на вершине, и мы чувствуем 0g.Итак, мы сделали полный оборот, и акселерометр увидел это: 0g-> .5g -> 1g -> .5g -> 0g.

Если вы посмотрите на это, это означает, что акселерометр действительно может чувствовать только различияв 180º движения, так как остальные 180 градусов - это просто зеркальное отражение.Итак, как мы можем ощутить движение на 360 градусов?

Хитрость в том, что хотя одна ось может воспринимать только разницу в 180 градусов, то же самое можно сказать и о другой оси, но они чувствуют ее по-разному.Если вы посмотрите на график справа, вы можете увидеть измеренные значения, вращаясь вокруг оси X.(X никогда не меняется, потому что он всегда направлен в одно и то же направление). Таким образом, мы можем объединить значения y и z, чтобы найти x, используя функцию тригонометрии Atan2, которая затем возвращает нам значения от -180º до 180º (но в радианах,так что это от -π до π, и мы должны его охранять).

Sensed gravity during rotation around X-axis

Если вам интересно, вам следует прочитать статью полностью Ощущение ориентации с помощьюADXL335 + Arduino .Вы также можете получить некоторую полезную информацию из принятого ответа на этот вопрос , если решите использовать гироскоп вместе с акселерометром, что вполне вероятно, что вы в конечном итоге будете делать.

18 голосов
/ 03 мая 2011

Без какого-либо контекста трудно ответить ...

Акселерометр измеряет ускорение :

В физике ускорение - это скоростьизменения скорости во времени.В одном измерении ускорение - это скорость, с которой что-то ускоряется или замедляется.

  • Положительные значения указывают на увеличение скорости.
  • Отрицательные значения указывают на снижение скорости.
  • Нулевые значения указывают на постоянную скорость (которая может быть не нулевой).
1 голос
/ 27 января 2012

Я могу сказать, что сила тяжести (притяжение Земли) равна постоянному ускорению приблизительно 9,8 м / с / с. Поэтому, прежде чем рассчитывать ускорение, нужно вычесть это значение из меры.

0 голосов
/ 24 марта 2016

Я написал код, который использует акселерометр.Он измеряет вращение устройства на каждой из трех собственных осей.Отлично подходит для создания игр.Акселерометр измеряет угловое ускорение вместо линейного.В принципе, вы можете использовать его для определения ориентации устройства в трех измерениях.Подумайте о трех различных способах вращения объекта, и вы поймете, что это за числа x, y и z.

...