рассчитать наклон с помощью акселерометра?

16

У меня есть акселерометр ADXL203 для аналоговых устройств на хлебной плате, и я хотел использовать его для измерения наклона некоторого оборудования на достаточно высокой частоте (20-30 Гц). я подключаю его к регистратору кэмпбеллс cr3000, чтобы провести зондирование. У кого-нибудь есть указания, как интерпретировать выходы датчика. Благодарность

Трой Дженсен
источник
спасибо всем за комментарии. очень полезно С уважением Трой
Трой Дженсен
Я знаю, что у меня самый высокий, но если вам не нравится мой, по крайней мере, принимает кого-то.
Кортук

Ответы:

12

У меня есть несколько вещей, чтобы сказать здесь, и некоторые из них включают в себя согласие с pingswept, а некоторые с penjuin.

cr3000

Частота дискретизации cr3000 с частотой 16 битов и частотой 100 Гц будет немного медленной, чтобы вы могли легко удалить шум из ваших данных, но со значительно более высокой точностью, чем тогда, будет использоваться. Я сомневаюсь, что вы можете получить 13 или 14 бит точности без каких-либо довольно хороших алгоритмов фильтрации. Акселерометры научили меня, что вибрация - это дьявол, взорванный фонон.

Выходной конденсатор

Вы должны убедиться, что вы делаете так, как указано в техническом описании, и теория сигналов диктует. Цитировать данные:

Выход ADXL103 / ADXL203 имеет типичную полосу пропускания 2,5 кГц. Пользователь должен фильтровать сигнал в этой точке, чтобы ограничить ошибки наложения. Аналоговая ширина полосы должна составлять не более половины аналого-цифровой частоты дискретизации, чтобы минимизировать алиасы. Аналоговая полоса пропускания может быть дополнительно уменьшена, чтобы уменьшить шум и улучшить разрешение.

Это означает, что вам нужно выбрать конденсатор, чтобы поддерживать частоту ниже 50 Гц. Если вы поместите его выше этого уровня, вы можете получить псевдонимы, а псевдонимы превращают шум вибрации в дьявола, с которым вы подписали соглашение. Они утверждают, как рассчитать уровни шума от устройства, и при полосе пропускания 50 Гц от пика до пика 0,006 * Гравитация даже не будет замечена, если вы используете это на устройстве с вибрациями.

Интерпретация данных

Это, вероятно, то, что вас больше всего интересует, и сделать это относительно легко. Вам нужно пометить время, когда устройство находится в нейтральном положении, когда оно плоское и у вас оно относительно неподвижно. Дайте ему секунду или две в этот момент, а затем вы можете взять медиану этих данных, чтобы определить напряжение не-G. Затем вы можете использовать это как точку, с которой вы сравниваете устройство. Теперь, с этого момента, я могу прямо процитировать паспорт:

Когда акселерометр перпендикулярен гравитации, его выходная мощность изменяется почти на 17,5 мг на градус наклона .

Таким образом, вы можете просто использовать это приближение, если вы не собираетесь сильно наклонять, но вам нужно будет использовать геометрию, если вы планируете наклонять в обоих направлениях и в углах, которые не очень малы.

Если вы собираетесь увеличиваться, у них даже есть уравнения, прописанные как:

PITCH = ASIN (AX / 1 г)
ROLL = ASIN (AY / 1 г)

Насколько я могу сказать, ваше устройство дает изменение 1 В на 1 Г ускорения, установленного на нем. Если вы выполнили фазу калибровки, то вы должны быть в состоянии провести измерения, вычесть смещение, и у вас будет количество испытываемых G.

Хватит читать здесь, если вы не столкнетесь с проблемами или не хотели бы получить больше информации для улучшения подхода.

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

Частота дискретизации

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

3-х осевой акселерометр

Во-вторых, если у вас есть трехосевой акселерометр, то вы можете легко распознать, когда одна ось теряет часть ускорения из-за силы тяжести (т. Е. Когда ось z имеет величину падения на 2 м / с ^ 2, вы знаете, что усиление, которое вы видели на другой оси, является гравитацией). Это все еще будет грязно, но в целом будет добавлено ускорение, которое дает скорость, необходимую для изменения вашей ориентации, а затем изменение ускорения из-за изменения ориентации, часто позволяющее вам распознать ориентацию.

Проблемы с 2-осью

Это будет, как сказал Penjuin, почти невозможно с 2-осевым акселерометром, и в лучшем случае схематично, если у вас есть система, которая может иметь 20-30 различных ориентаций в секунду, или если вам нужно иметь точную меру ориентации в все время. Я уверен, что студент магистратуры мог бы написать довольно хорошую диссертацию на эту тему, или докторская диссертация могла бы написать диссертацию по улучшению этого алгоритма.

Вибрационный шум

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

Цифровой акселерометр

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

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

Kortuk
источник
1
Просто для протокола, этот ответ эпичен.
pingswept
1
Доктор Кортюк, доктор философии по акселерометрам! :-)
Джей Аткинсон
Я написал этот ответ, потому что продолжал думать, что что-то забыл, потом понял, что это немного длинно, и добавил очень быстро, как это сделать, но люди, кажется, предпочитают длинный ответ.
Кортук
Что касается вибрационного шума, я мог иметь большее количество во время работы из-за присутствия бесщеточного двигателя постоянного тока (BLDC), но до того, как он был включен, все еще были значительные показатели вибрации.
Кортук
3

Я написал и переписал этот ответ несколько раз со многими сумасшедшими математическими идеями, но, честно говоря, я не думаю, что это можно сделать с какой-либо точностью. Вы можете сделать некоторые векторные математики, но что если:

  • Объект перестает двигаться
  • Объект имеет постоянную скорость
  • Объект ударяется о бугорок / вы натыкаетесь на него
  • Сила, создаваемая при движении вверх по наклону, ниже разрешения оси Z

Хотя я уверен, что есть какой-то сумасшедший обходной путь для такого рода вещей, я не уверен, что оно того стоит; акселерометры просто не предназначены для этой задачи (по крайней мере, насколько мне известно). Для того, чего вы пытаетесь достичь, я бы предложил гироскопический подход с использованием любого из них , каждый из которых был бы достаточно устойчивым ко всем вышеперечисленным проблемам.

penjuin
источник
Акселерометры предназначены для этого на самом деле, есть целый раздел о том, как это сделать. Акселерометры во многих случаях очень и очень дешевы, и иногда стоимость является более важной проблемой, чем идеальная функциональность.
Кортук
3
Я всегда пытаюсь объяснить это студентам, и я собираюсь добавить это здесь, потому что я думаю, что это важная концепция. Инжиниринг не всегда заключается в том, чтобы делать это наилучшим образом, а в том, чтобы пользователь не мог отличить что-либо, кроме ценника.
Кортук
2
Есть кое-что, что нужно сказать, чтобы сделать это первым, и есть много чего сказать, чтобы сделать это лучше, чем последний парень.
Кортук
Я согласен, но это зависит от ваших мотивов (о которых Трой не заявил); Вы хотите, чтобы это работало хорошо, или вы хотите учиться? Они не обязательно являются взаимоисключающими, но вы бы не написали свой собственный компилятор, чтобы просто мигать светодиодом, если бы вы специально не хотели узнать о дизайне компилятора.
Penjuin
Да, я добавляю это, чтобы обсудить ваш ответ, в общем, если ему нужно уметь различать ориентацию 30 раз в секунду, у него будут гигантские ускорения, а это, в свою очередь, означает, что вам нужно более 100 образцов в второй.
Кортук
3

Если я правильно понимаю таблицу данных, выходной сигнал для каждой оси будет варьироваться от 1,5 В до 3,5 В при наклоне вокруг оси. Если устройство плоское (без учета ошибки выравнивания пакета ± 1 градус), оба выхода должны показывать 2,5 В.

Если вам нужно измерить наклон только в одном направлении, вы можете взять арксинус отклонения от 2,5 В, чтобы получить угол в радианах, а затем преобразовать в градусы. Если устройство может наклоняться в любом направлении, вы можете рассчитать два угла, а затем рассчитать составной угол из них.

Чтобы быть точным: угол вокруг одной оси = (180 / π) * arcsin (Vout - 2.5)

Чтобы получить хорошую частотную характеристику, вам понадобятся небольшие выходные конденсаторы, Cx и Cy. Из сноски 6 на стр. 3 таблицы данных, похоже, что 0,02 мкФ даст вам полосу пропускания 250 Гц, что, вероятно, примерно соответствует вашей частоте дискретизации. Возможно, вы могли бы подняться до 0,1 мкФ, ограничив полосу пропускания до 50 Гц, но ваши сигналы начнут ослабевать.

pingswept
источник
Я не думаю, что это ослабит сигналы, если вы не ссылаетесь на более высокие частоты, что является точкой ограничения. Ему нужно перейти на частоту 50 Гц или ниже, чтобы соответствовать его устройству выборки данных.
Кортук
1
Ах, я не думал об этом с точки зрения псевдонимов. Я все еще думаю, что большие заглушки будут ослаблять высокочастотные сигналы, но это действительно хорошая вещь в этом случае. Так что да, установка полосы пропускания около 50 Гц - это хорошо.
pingswept
3

Я добавляю второй ответ, потому что мой второй большой, и вы можете просто захотеть простой.

Колпачок фильтра должен быть 0,10 мкФ или более, чтобы поддерживать уровень псевдонима ниже 50 Гц. Вам нужно дать фазу калибровки в пару секунд, когда ваше устройство находится на уровне со всем ускорением силы тяжести в направлении Z, чтобы определить вашу нулевую точку G.

Напряжение, которое вы измеряете для своей нулевой точки G, оно, вероятно, будет различным для направлений X и Y, ничего не представляет. Просто возьмите любое напряжение и вычтите его из него. Это напряжение с вычтенным смещением - это число Гс, которое вы получаете в этом направлении.

Возьмите арксин и вы получите свой угол в этом направлении.

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

Kortuk
источник
0

Чтобы получить любой угол, вам нужно измерить ускорение силы тяжести в обоих направлениях - X и Y. вычтите среднее напряжение (2,5 В) так, чтобы ноль был «без ускорения».

Теперь вы можете найти угол с помощью arcsin (y / x). Но это раздражает в использовании, из-за деления и потому, что знак неоднозначен, так что вы действительно хотите, чтобы функция C atan2 (y, x). atan2 () получает знак правильно для всех 360 градусов.


Не по теме, так как вы не используете micro: если вы ищете atan2 () для использования на микроконтроллере, на моем сайте есть генератор atan2 (): http://vivara.net/cgi-bin/ cordic.cgi

markrages
источник
Это не гарантируется 2,5 В для 0G. так как он, вероятно, будет использовать компьютер для математики, я сомневаюсь, что метод, который он использует для математики, будет иметь значение.
Кортук