Arduino-kit - модуль 3-х осьового гіроскопа і акселерометра gy-521 mpu-6050

Модуль 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050
GY-521 MPU6050 Module MPU6050 module, 3 Axis analog gyro sensors + 3 Axis Accelerometer Module

Тепер застосовуючи гіроскоп-акселерометр GY-521 можна відмовитися від джойстика, рукояток та інших механічних пристроїв в стаціонарних пультах управління. Застосування гіроскопа-акселерометра для управління становищем веб-камери за допомогою сервоприводів показано далі.

Найбільш цікаве застосування гіроскопа і акселерометра - в рухомих напівавтоматичних і автоматичних системах. Прилад вимірює і повідомляє микроконтроллеру про прискоренні і орієнтації. Динамічні параметри рухомого об'єкту, які вимірює модуль 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050: тангаж (ніс вгору і вниз), нишпорення (ніс вліво і вправо) і крен (за годинниковою стрілкою або проти годинникової стрілки дивлячись з кабіни об'єкта). Вони в навігаційній системі подаються в МК, який розраховує поточний стан. Політ квадрокоптера без такого модуля неможливий.

Трехосевой акселерометр "відчуває" проекції прискорення на осі X, Y і Z. Якщо прилад розміщений строго горизонтально і не рухається то проекції прискорення сили тяжіння на осі X і Y дорівнюють нулю. Сила тяжіння сприймається тільки чутливими елементами вертикальної осі Z. Час від часу в стані спокою проводять перевірку і калібрування акселерометра. Під час руху об'єкт постійно то прискорюється, то сповільнюється. Ідеально рівномірного руху не існує. Це і дозволяє використовувати акселерометр не тільки для визначення положення об'єкта, а й для визначення динамічних параметрів при русі. Акселерометр реєструє суму прискорення при русі і гравітацію. Якщо від всіх елементів акселерометра по осях X, Y, Z надходять свідчення близькі до нуля, значить, двигун вимкнений і об'єкт знаходиться у вільному падінні - випускаємо парашут. Зростання даних - парашут розкрився, різке зростання даних - зіткнення, є посадка!

Трехосевой гіроскоп - датчик повороту об'єкта, що дозволяє обчислити кути поворотів по осях X, Y, Z завдяки визначенню кутових швидкостей.


Roll (крен), Pitch (тангажу) та Yaw (нишпорення).

Розпізнавання Будівельне устаткування, ПАРАМЕТРІВ РУХУ

Припустимо квадрокоптер при горизонтальному польоті накренився. Акселерометр фіксує зміна прискорення по осях. Тепер до прискорення руху додається прискорення тяжіння в іншому порядку, не так як при польоті без крену. В результаті система управління зробить висновок про рух в сторону крену, хоча насправді відбувається горизонтальне рух. Для правильної обробки параметрів руху і вірного розпізнавання динамічних параметрів застосовують спільно акселерометр і гіроскоп.
При використанні гіроскопа в розглянутому випадку він визначить кут повороту і дасть можливість правильно інтерпретувати дані акселерометра. Використання гіроскопа без акселерометра неможливо через особливості математики гіроскопа призводять до накопичення похибки. Спеціальна математика дозволяє об'єднати обробку даних від обох датчиків.
Гіроскопи і акселерометри широко застосовуються в авіації, ракетної, космічної та військової техніки. Наприклад. Відбулося захоплення цілі прицілом танка під час руху. Переміщення по пересіченій місцевості викликає потужні спотворення кута підйому ствола гармати. Зафіксувати приціл на захопленій мети допомагає акселерометр і гіроскоп.

68 (шестнадцатиричное), якщо AD0 з'єднаний із загальним проводом.
69 (шестнадцатиричное), якщо AD0 з'єднаний з потенціалом лог. 1.

Харчування модуля GY-521 надходить на вхід стабілізатора напруги Q2 мікросхема MIC5205-3.3BM5 з вихідною напругою 3,3 В. На стабілізаторі відбувається невелике падіння напруги 0,3 - 0,4 В, тому напруга живлення модуля повинно бути вище 3,3 У . Індикатор живлення модуля 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050 - світлодіод D1. Величина резисторів R4 і R5 може відрізнятися від зображених на схемі.

Підключення модуля 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050 до Arduino UNO.

5 V Arduino - VCC

GND Arduino - GND

A4 Arduino - SDA

A5 Arduino - SCL

GND Arduino - AD0

Залежно від програми - INT

Підводні камені, рифи і турбулентність

При вивченні роботи мікросхеми MPU-6050 гіроскопа слід пам'ятати, що механічні гіроскопи стабілізуються в просторі за рахунок своїх фізичних властивостей. Електронний гіроскоп так працювати не може. Він лише вимірює швидкість обертання.
Кожен модуль GY-521 вимагає калібрування. Показання датчиків мають деякий зсув щодо нуля, що вносить похибка в вимірювання. Потрібно врахувати це зміщення для кожної осі гіроскопа і кожної осі акселерометра, внести коригування в програму. При виробництві мікросхем неможливо отримати абсолютну точність кута між осями датчиків, тому кут між ними містить похибка. Також не можна забувати про те, що дані від трьох осей можуть мати різну пропорційність.
Найбільша точність результатів математичних перетворень для отримання параметрів руху буде отримана при синхронному зчитуванні даних акселерометра і гіроскопа.
При побудові керованої машини слід уникати в механізмах джерел коливань і їх гармонік з частотою резонансу зазначеної в характеристиках.
При першому ознайомленні з модулем перевіряють його роботу на шині даних I2C. Для цього використовують програму I2C сканер.
Внутрішнє АЦП мікросхеми дуже чутливо, його розрядність 16 біт. При такій чутливості пред'являються підвищені вимоги до харчування модуля, незважаючи на власний стабілізатор. Тут не підходить джерело живлення класу "який є" на 5 В. Перш за все треба розібратися з параметром використовуваного блоку живлення величина пульсацій або рівень шумів за допомогою осцилографа. Величина шуму в лінії живлення не повинна перевищувати 50 мВ. Застосування батарей в цих умови доречно, але це дорого. Установка конденсаторів не знизить шуми неякісного блоку живлення. Якщо блок живлення шумить від нього треба відмовитися, замінити або зібрати інший. У той же час установка конденсаторів на лініях живлення біля модуля GY-521 знизить вплив потужних електромагнітних завад. Рекомендується дроти живлення перевити в виту пару. Не можна використовувати блок живлення один і той же для модуля і для живлення двигунів. При калібрування модуль 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050 повинен мати власне джерело, окремий від модуля МК і інших споживачів. Якщо на етапі першого запуску ще можна змиритися з підвищеним шумом в харчуванні, то на етапі калібрування це призведе до помилок, а про високу точність вимірювань без якісного харчування говорити не доводиться.

Програмування на Ардуіно і математика

Один із способів використання модуля GY-521 - застосування мікроконтролерного модуля Arduino. Програмне забезпечення Arduino дозволяє встановити бібліотеки для GY-521. Є складна бібліотека I2Cdevlib для доступу до MPU-6050 і інших пристроїв на шині I2C.

Вона встановлюється в папку MPU6050. Використовує апаратний буфер мікросхеми і можливості цифрової обробки параметрів руху MPU-6050 для виконання перетворення даних між різними системами координат і об'єднує дані від декількох датчиків. Ще одна корисна бібліотека FreeIMU. орієнтована на інерційних вимірювальний блок з декількох датчиків і може виконувати складну обробку даних. FreeIMU використовує I2Cdevlib, але остання версія I2Cdevlib в комплекті з FreeIMU викликає конфлікт версій. Перед використанням слід переконатися в правильному виборі версії I2Cdevlib.
В кінці цього розділу наведені посилання на адаптовані програми. При роботі програм будуть отримані приблизно такі числа, але їх потрібно перетворити в значимі дані.

MPU-6050
Read accel, temp and gyro, error = 0
accel x, y, z: -123, -180, 14547
temperature: 27.235 degrees Celsius
gyro x, y, z. -6, -20, 52,

MPU-6050
Read accel, temp and gyro, error = 0
accel x, y, z: -195, -203, 14510
temperature: 27.128 degrees Celsius
gyro x, y, z. -15, 14, 72,

MPU-6050
Read accel, temp and gyro, error = 0
accel x, y, z: -232, -268, 14490
temperature: 27.190 degrees Celsius
gyro x, y, z. -4, -7, 45,

MPU-6050
Read accel, temp and gyro, error = 0
accel x, y, z: -189, -170, 14632
temperature: 27.199 degrees Celsius
gyro x, y, z. -4, -7, 50,
.

Кут фільтра = α × (кут від гіроскопа) + (1 - α) × (кут від акселерометра)
α = τ / (τ + δt)
Кут від гіроскопа = (Останній кут виміряний фільтром) + ω × δt
δt = час вибірки
τ = постійна часу перевищує інтервали між шумами
Кут фільтра - відфільтрований, результуючий кут нахилу
Рекомендується час вибірки близько 0,04 с і постійна часу близько 1 с, що дає α≈0,96.

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

Програмне забезпечення модуля 3-х осьового гіроскопа і акселерометра GY-521 MPU-6050 для Ардуіно:
GY_521_send_serial
ShowGY521Data

Англомовна версія цього розділу, а продовження розмови тут.

Сучасне застосування акселерометра і гіроскопа:

Схожі статті