обчислення нахилу за допомогою акселерометра?


16

У мене є аналогові пристрої ADXL203 акселерометр на шифрованій дошці і хотів використовувати це для вимірювання нахилу деякого обладнання на досить високій частоті (20-30 Гц). я підключаю його до лісоруба Campbells cr3000, щоб зробити зондування. Хтось має вказівки, як інтерпретувати виходи датчика. Спасибі


дякую всім за коментарі. дуже корисно з повагою TROY
troy jensen

Я знаю, що у мене найвищий, але якщо ти не любиш мого, принаймні приймаєш когось.
Кортук

Відповіді:


12

Тут я можу сказати ряд речей, і деякі з них стосуються узгодження з pingswept, а деякі з penjuin.

cr3000

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

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

Вам потрібно переконатися, що ви робите так, як пише таблиця даних та теорія сигналів. Для цитування даних:

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

Це означає, що вам потрібно вибрати конденсатор, щоб утримувати швидкість нижче 50 Гц. Якщо розмістити його вище цього, ви зможете отримати згладжування, і згладжування робить вібраційний шум чортом, з яким ви підписали угоду. Вони вказують, як обчислити рівень шуму від пристрою, а при пропускній здатності 50 Гц пік до пікового шуму .006 * Гравітація навіть не помітить, якщо у вас це є на пристрої з вібраціями.

Інтерпретація даних

Це, мабуть, те, що вас найбільше цікавить, і зробити це досить просто. Потрібно позначити час, коли пристрій перебуває на нейтралі, і це тоді, коли він плоский і у вас відносно нерухомий. Дайте йому цю секунду або дві в цей момент, і тоді ви можете взяти медіану цих даних для визначення напруги no-G. Потім ви можете використовувати це як точку, з якою ви порівнюєте пристрій. Тепер, з цього моменту, я можу безпосередньо цитувати опис:

Коли акселерометр перпендикулярний до сили тяжіння, його вихід змінюється майже на 17,5 мг на ступінь нахилу .

Тож ви можете просто просто скористатися цим наближенням, якщо ви не збираєтесь дуже нахилятись, але вам знадобиться використовувати геометрію, якщо ви плануєте нахилятись як в напрямку, так і в кутах, не дуже малих.

Якщо ви збираєтеся збільшуватись, у них навіть є рівняння, записані як:

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

Наскільки я можу повідомити, що ваш пристрій дає зміну 1В на 1G прискорення, розміщеного на ньому. Якщо ви виконали етап калібрування, ви повинні мати можливість проводити вимірювання, віднімати зсув, і у вас є кількість Gs, які зазнали.

Перестаньте читати тут, якщо ви не стикаєтеся з проблемами або не хочете отримати більше інформації для покращення підходу.

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

Частота вибірки

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

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

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

Проблеми з 2-осі

Це буде, як сказав пеньюйн, майже неможливо з двохосьовим акселерометром, а в кращому випадку схематичним, якщо у вас є система, яка може мати 20-30 різних орієнтацій на секунду, або якщо вам потрібно мати точну міру орієнтації на весь час. Я впевнений, що студент магістра може написати досить гарну дисертацію з цього приводу, або доктор може написати дисертацію щодо вдосконалення цього алгоритму.

Вібраційний шум

Щоб додати більше, якщо ви зможете поставити свій пристрій поверх чогось, що дозволить статично заблокувати його при русі вашого пристрою, але зменшує вібрацію, ви отримаєте набагато кращі номери та не потребуєте стільки фільтрації програмного забезпечення. Деякі прості прокладки з пінопласту можуть розміщуватися між акселерометром та пристроєм, і якщо він цифровий, це не повинно збільшувати електричний шум і допомагати поглинати вібраційний шум. Це слід робити, лише якщо ви бачите проблеми із шумом вібрації.

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

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

Будь ласка, дайте мені знати, чи є щось, що я можу додати, щоб зробити цю відповідь більш зрозумілою або застосовною до того, що ви шукали.


1
Тільки для запису ця відповідь епічна.
pingswept

1
Доктор Кортук, доктор наук з акселерометрів! :-)
Джей Аткінсон

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

Що стосується шумів вібрацій, у мене, можливо, була більша кількість за час роботи через наявність безщіткового двигуна постійного струму (BLDC), але до його включення були ще значні показники вібрації.
Кортук

3

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

  • Об'єкт перестає рухатися
  • Об'єкт має постійну швидкість
  • Об'єкт вдаряється про удар / ти його набиваєш
  • Сила, що створюється, рухаючись вгору по нахилу, нижче роздільної здатності по осі Z

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


Акселерометри призначені для цього насправді, є цілий розділ про те, як це зробити. Акселерометри в багатьох випадках дуже низькі, і іноді вартість є більшою проблемою, ніж досконала функціональність.
Кортук

3
Я завжди намагаюся пояснити це студентам, і збираюся додати це сюди, тому що вважаю це важливою концепцією. Інженерія не завжди полягає в тому, щоб зробити це найкращим чином, це зробити так, щоб користувач не міг визначити різницю ні в чому, крім цінника.
Кортук

2
Існує щось сказати, щоб зробити це першим, і є багато сказати, щоб зробити це краще, ніж останній хлопець.
Кортук

Я погоджуюся, але це залежить від ваших мотивів (який трой не заявив); ти хочеш, щоб це добре працювало, чи ти хочеш вчитися? Вони не обов'язково взаємовиключні, але ви б не писали власний компілятор, щоб просто блимати світлодіод, якщо ви спеціально не хотіли дізнатися про дизайн компілятора.
єремі

Так, я додаю, що для обговорення вашої відповіді, взагалі, якщо йому потрібно вміти розповідати різну орієнтацію 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 Гц, але ваші сигнали почнуть ослаблюватися.


Я не думаю, що це пом'якшить сигнали, якщо ви не посилаєтесь на більш високі частоти, що є точкою кришки. Йому потрібно перейти на 50 Гц або нижче, щоб відповідати його пристрою відбору даних.
Кортук

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

3

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

Ваша кришка фільтра повинна бути 0,10 мкФай або більше, щоб ви не перевищували швидкість збитку (50 ГГц). Вам потрібно дати фазу калібрування пару секунд, коли ваш пристрій буде сидіти на рівні з усіма гравітаційними прискореннями в напрямку Z, це для визначення нульової точки G.

Напруга, яку ви вимірюєте для вашої нульової точки G, ймовірно, буде різною для напрямку X та Y, нічого не представляє. Просто візьміть ту напругу, яку ви отримаєте, і відніміть її. Ця напруга з відрахуванням зміщення - це кількість Gs, яке ви отримуєте в цьому напрямку.

Візьміть дугу, і ви збираєтеся отримати кут у цьому напрямку.

При цьому ігнорується шум та інші прискорення. будьте готові до того, що NaN буде результатом, якщо ви повністю нахилилися і є шум.


0

Щоб отримати будь-який кут, потрібно виміряти прискорення сили тяжіння в напрямку X- і Y-. відняти середню напругу (2,5 В) так, що нуль "не має прискорення".

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


Поза темою, оскільки ви не використовуєте мікро: Якщо ви шукаєте atan2 () для використання на мікроконтролері, на моєму веб-сайті є генератор atan2 (): http://vivara.net/cgi-bin/ cordic.cgi


Це не гарантовані 2,5 В для 0G. оскільки він, ймовірно, буде використовувати комп’ютер, щоб займатися математикою, я сумніваюся, що метод, який він використовує для математики, матиме значення.
Кортук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.