Цифровий акселерометр MMA7260Q та ATmega8, вимірювання кутів крену та тангажу бонус, AVR Lab пристрою
Форум з AVR
Цифровий акселерометр MMA7260Q та ATmega8, вимірювання кутів крену та тангажу +бонус
При підборі модуля цифрового компаса натрапив на акселерометри, датчики прискорення, точніше MMA7260Q відFreescale. Акселерометри, як не дивно, реагують на прискорення (у тому числі і на прискорення всесвітнього тяжіння) і, як наслідок, з другого закону Ньютона на рівнодіючу силу, прикладену до датчика.
Тобто, за його допомогою можна вимірювати вібрації, рух, удари, кути крену та тангажу.MMA7260Q є 3-х осьовим датчиком з аналоговим виходом, тобто він перекриває весь 3-х мірний простір. Вимірювальним елементом усередині датчика, як не дивно звучить, є змінні конденсатори, обкладки яких рухаються під впливом зовнішньої сили.MMA7260Q має регульований діапазон чутливості, вибрати який можна комбінацією логічних рівнів на пінахg-Select1, g-Select2.
Подумавши, що нудно спостерігати миготливі циферки на дисплеї, вирішив переписати трохи прошивку так, щоб пристрій міг вимірювати кути нахилу в 2 перпендикулярних площинах, так звані куни крену і тангажу. Кут крену розраховуватимемо якarctg(y/z) а тангажу -arctg(x/z). Для цього підключимо стандартний модульmath.h з потрібною нам функцієюdouble atan2(double x,double z), яка повертаєarctg(x/z), що лежить у межах[-Pi,+Pi]. І не забудемо перевести радіани в градуси, тому остаточно кут крену дорівнюєb=atan2(y,z)*180/M_PI, а тангажуa=atan2(x,z)*180/M_PI. Для того, щоб показання не деренчали, взяв середнє арифметичне по 30 вимірювань. Також при кутах крену більше +-70 градусів, показаннятангажу скачуть з боку на бік і брешуть, з тангажем ситуація аналогічно. Тому було запроваджено перевірку коректності. Тобто якщо кут тангажу більше 60 градусів, то показання крену на екран не виводяться, і навпаки.
Після всього цього я пошукав у Google схожі проекти і побачив ідею простенької іграшки: по дисплею катається кулька залишаючи за собою слід, управляти яким можна за допомогою нахилу макетки з акселерометром, як тільки кулька вріжеться в бортик - гра закінчена, можна звичайно і виграти, набравши 9999 очок. Окуляри нараховуються за тривалістю гри. Можна, звичайно, схитрувати, покласти хустку на рівний майданчик, щоб кулька не рухалася, і дочекатися виграшу, але це не спортивно :). Оскільки на символьному РКІ кульку не покатаєш, то підключив графічний РКІ WG12864A.
