Шановні друзі!
26 та 31 грудня магазин працюватиме до 16 години. 1 та 2 січня магазин працювати не буде.
Вітаємо всіх з Різдвом та Новим Роком!
Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Шукаємо нуль в акселерометрі

2021-07-13

Всі статті →

Шукаємо нуль в акселерометрі

В реальних проєктах акселерометри часто використовують для визначення просторового положення різних технічних об'єктів. Дуже часто вони міряють кути нахилу, такі пристрої навіть отримали спеціальну назву - інклінометри, від латинських слів inclio - нахиляю та metiri - міряти. Наприклад, автомобільний інклінометр.

Або танковий - який міряє кут нахилу гармати.

Інклінометр на гарматі українського танку Т-84УД

Зустріти схожі прилади можна і на морських суднах будь якого класу. Ось кренометр невеличкого катеру.

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

Система телеметрії бурової головки

Однак, перед тим як міряти кути нахилу треба визначити звідки вести відлік. Іншими словами - треба встановити нуль, бо навіть такий простий прилад, як шкільна лінійка має нуль. Для пошуку нуля треба виміряти напруги по осях чутливості. При цьому акселерометр повинен бути у горизонтальному положенні та знаходитися у спокої. Вісі чутливості накреслені на самому модулі.

Якщо уявити розташування цих осей у 3D, то вони будуть виглядати так:

Для пошуку "нуля" візьмемо вісі X та Z. Під'єднаємо виходи X до А0, а Z - до А2.

Перед визначенням напруг Ux та Uz згадаємо, що максимальна величина напруги на аналоговому вході Arduino - . Але функція

X = analogRead(A0);

Видає нам не напругу, а деяке ціле число X, яке змінюється в межах від 0 до 1024 (бо АЦП Arduino 10-ти розрядний). Вочевидь, що 0 відповідає напрузі , а 1024 - . Тоді для визначення величини напруги слід скористатися формулою:

Визначати напруги Ux та Uz можна окремою програмою. Для більш-менш нормальної роботи майбутнього алгоритму визначення кута нахилу, нам треба мати точність хоча б п'ять знаків після коми.

Програма:

Прошиваємо Ардуину і відкриваємо монітор порту.

Чекаємо поки значення перестануть змінюватися. Однак п'ять знаків після коми для нашого фільтру забагато, останні цифри "пливуть". Сумно, можливо дані так і не стануть сталими, а вибирати 0 приблизно, не зовсім правильне рішення. Змінимо програму і розрахуємо середнє з 350 значень напруги. Не забуваємо про інтегральну природу фільтру і накопичувати 350 значень почнемо через пару секунд після запуску. За цей час фільтр гарантовано вийде на "робочий режим".

Програма:

Результат з'явиться в моніторі порту через декілька секунд. Виглядає він добре.

Отримані значення і є нульовими показами акселерометра по вісям Х та Z. По X це майже середина, бо ADXL335 живиться від 3,3 В. А по Z значення трохи більше середини, що явно вказує на дію сили тяжіння Землі. Позначимо напруги і випишемо значення:

Uxo = 1.51302

Uzo = 1.77235

Тепер, за допомогою простих співвідношень можна знайти величину відхилення поточного значення напруги від 0 - "горизонтального стану" акселерометра:

?Ux = Ux - Uxo

?Uz = Uz - Uzo

Далі буде.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Загальна оцінка:

Оцінка "Шукаємо нуль в акселерометрі"
5 з 5
зроблена на основі 1 оцінки 1 клієнтських відгуку.

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Игорь
04.08.2021 00:01:35
Спасибо!
оплата картами Visa і MasterCard