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

Завдяки використанню мікроконтролера Arduino ви можете самостійно сконструювати датчик нахилу в домашніх умовах.

Для цього вам знадобиться:

  • Акселерометр ADXL335;
  • Плата Arduino Uno;
  • Дисплей для відображення напрямку нахилу (в даному випадку ми використовуємо світлодіодний варіант).

Практична реалізація датчика нахилу на базі Arduino приведена на малюнку нижче:

Малюнок 1: загальний вигляд датчика

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

Мал. 2: блок-схема датчика

Перевагою такої моделі є установка Arduino Uno, так як цей мікроконтролер кращий варіант для електронних пристроїв, керованих сигналами з плати. Її програмування і використання в схемі є широким масам за рахунок простої адаптації під стандартне програмне забезпечення комп'ютера і можливості самостійного налаштування з подальшим внесенням коректив в їх роботу. Тому даний варіант відмінно підходить як професійним конструкторам, так і любителям в сфері робототехніки і електронного моделювання.

Для реалізації датчика нахилу Arduino Uno обраний неспроста, він зібраний на базі мікросхеми ATmega328 і включає в себе 14 цифрових виходів, 6 аналогових, USB роз'єм для підключення до пристроїв програмування, ICSP роз'єм, вхід харчування, і оснащується функцією скидання або обнулення даних. Також в даній платі встановлений кварцовий генератор на 16МГц, призначений для підтримки стабільної роботи всього мікроконтролера.

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

Як зібрати датчик нахилу?

Мал. 3: електрична схема датчика нахилу

Підключення акселерометра до мікроконтролеру здійснюється за таким принципом:

  • Висновок ST підключається до піну плати Arduino A0;
  • Висновок переміщень по осі Z підключається до піну плати Arduino A1;
  • Висновок переміщень по осі Y підключається до піну плати Arduino A2;
  • Висновок переміщень по осі X підключається до піну плати Arduino A3;
  • Висновок GND підключається до піну плати Arduino A4;
  • Висновок VCC підключається до піну плати Arduino A5.

Потім від мікроконтролера Ардуіно проводиться підключення до дисплея, в даній ситуації що складається з групи світлодіодів. Для підключення від плати беруться виходи з 8 по 12 і пін харчування на 5В, які розподіляються по логіці схеми наступним чином:

  • Пін 5В є загальною точкою підключення;
  • Восьмий підключається до світлодіоди, що сигналізують про нахил в праву сторону;
  • Дев'ятий підключається до світлодіоди, що сигналізують про стабільне становище датчика по центру (його, для відмінності, ми робимо червоного кольору, але це не принципово);
  • Десятий підключається до світлодіоди, що сигналізують про переміщення датчика назад;
  • Одинадцятий підключається до світлодіоди, що сигналізують про нахил в ліву сторону;
  • Дванадцятий підключається до світлодіоди, що сигналізують про нахилі датчика вперед.

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

Крім наведеного способу збирання датчика на макетної платі, ви можете з тим же успіхом реалізувати його на друкованій платі. Приклад такої плати наведено на малюнку нижче.

Малюнок 4: схема для друкованої плати

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

Таблиця: рівні напруги в контрольних точках

Точка на малюнкуНапруга в точці, В
Т00
Т15
Т2Нижче, ніж в Т3
Т3Вище, ніж в Т2

Тестування працездатності та коригування параметрів

Після електричного з'єднання елементів датчика нахилу проводиться завантаження програми, на пристрій через ПК, для чого вам необхідно:

  • Підключити мікроконтролер до комп'ютера через USB перехідник;
  • Завантажити програму (test.ino) з комп'ютера на Ардуіно УНО;
  • Потім на комп'ютері відкрийте програмне середовище Arduino, в якій відображається вихідний код від відповідних висновків акселерометра;
  • Скиньте дані і відзначте числові зміни по всіх трьох осях (X, Y, Z), які відбуваються при нахилі датчика вліво, вправо.

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

  • Залишаючись в програмному середовищі Arduino, почніть нахиляти датчик вліво, коли кут нахилу досягне тієї позначки, в якій світлодіод повинен загорятися, відзначте для себе - це буде значення коду «A_max», межа відключення світлодіода при зворотному русі датчика буде такою ж;
  • Для регулювання кута нахилу вправо повторіть ту ж операцію, нахиливши до потрібного кута, відзначте для себе цифрове значення - це буде значення коду «A_min», та ж величина припинить горіння при зворотному русі до нейтральної позиції датчика;
  • Ці значення потрібно змінити в тілі програми tiltdetection.ino, для чого запускається Arduino IDE, в рядки «A_max» і «A_min» вносяться записані вами раніше дані (малюнок 5);
    Мал. 5. Знімок екрану програмування Arduino Uno
  • Після цього збережіть внесені зміни і заново завантажте відкориговану програму на мікроконтролер.

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

Що потрібно для роботи програми?

Так як мікроконтролер програмується на спеціально розробленої під нього платформі Arduino IDE, ніяких додаткових мов програмування і спеціальних навичок по роботі з ними вам мати не потрібно, достатньо просто підключити Arduino до комп'ютера. Також варто відзначити, що мікросхема ATmega328 в Arduino Uno спочатку містить попередньо встановлений механізм завантаження. Саме він дозволяє програмувати пристрій без будь-яких апаратних программаторов, а взаємодія програмного середовища на комп'ютері і мікросхемі відбувається по протоколу STK500.

Для роботи з програмним забезпеченням мікроконтролера вам знадобитися увійти в меню «Інструменти», потім вибрати «Плати» і встановити Arduino Uno (якщо ви застосовуєте іншу модель, встановіть її). Після цього через Arduino IDE запрограмуйте плату на логіку датчика нахилу і можете приступати до експлуатації готового пристрою. Також можна програмувати Ардуіно через протокол ICSP, але цей метод більше підходить досвідченим програмістам, а не початківцям конструкторам, тому куди простіше користуватися стандартним способом.

Вихідний код програми:

Датчик нахилу на базі Arduino (3, 4 KB, завантажено: 30)

Категорія: