У цьому підручнику ми збираємось взаємодіяти модуль джойстика з мікроконтролером atmega8. РАДІСТЬ палиця є вхідним модулем, використовуваним для зв'язку. Це в основному полегшує спілкування між користувачем та машиною. Джойстик зображено на малюнку нижче.
Модуль джойстика має дві осі - одна горизонтальна, а інша вертикальна. Кожна вісь джойстика встановлена на потенціометрі, посудині або змінному опорі. Середні точки збиваються як Rx та Ry. Ці штифти несуть у якості вихідних сигнальних штифтів для JOYSTICK. Коли палицю переміщають уздовж горизонтальної осі, при наявності напруги живлення, напруга на штифті Rx змінюється.
Напруга на Rx збільшується при русі вперед, напруга на штифті Rx зменшується при переміщенні назад. Подібним чином напруга на Ry збільшується при переміщенні вгору, напруга на штифті Ry зменшується при переміщенні вниз.
Отже, ми маємо чотири напрямки JOYSTICK на двох каналах АЦП. У звичайних випадках ми маємо 1 Вольт на кожному штифті за звичайних обставин. Коли ручку переміщують, напруга на кожному штифті падає високо або низько залежно від напрямку. Отже, чотири напрямки як (0 В, 5 В на каналі 0) для осі х; (0 В, 5 В на каналі 1) для осі y.
Ми збираємось використовувати два канали АЦП ATMEGA8 для виконання цієї роботи. Ми збираємось використовувати канал 0 та канал 1.
Потрібні компоненти
Апаратне забезпечення: ATMEGA8, блок живлення (5 в), AVR-ISP ПРОГРАММЕР, світлодіод (4 штуки), конденсатор 1000 мкФ, конденсатор 100 нФ (5 штук), резистор 1 кОм (6 штук).
Програмне забезпечення: Atmel studio 6.1, progisp або flash magic.
Принципова схема та робоче пояснення
Напруга на JOYSTICK не є повністю лінійною; це буде шумно. Для фільтрації шуму конденсатори розміщують по кожному резистору в схемі, як показано на малюнку.
Як показано на малюнку, в ланцюзі є чотири світлодіоди. Кожен світлодіод представляє кожен напрямок JOYSTICK. Коли палицю рухають у напрямку, тоді відповідний світлодіод світиться.
Перш ніж йти далі, нам слід поговорити про АЦП ATMEGA8, В ATMEGA8 ми можемо подавати аналоговий вхід на будь-який з ЧОТИРОХ каналів PORTC, не має значення, який канал ми виберемо, оскільки всі вони однакові, ми збираємося вибрати канал 0 або PIN0 PORTC.
В ATMEGA8 АЦП має 10-бітну роздільну здатність, тому контролер може виявити сенс мінімальної зміни Vref / 2 ^ 10, тому, якщо опорна напруга становить 5 В, ми отримуємо збільшення цифрового виходу на кожні 5/2 ^ 10 = 5 мВ. Отже, для кожного входу на 5 мВ ми матимемо приріст в одиницю на цифровому виході.
Тепер нам потрібно встановити реєстр АЦП, виходячи з таких умов, 1. Перш за все нам потрібно включити функцію АЦП в АЦП.
2. Тут збирається отримати максимальну вхідну напругу для перетворення АЦП + 5 В. Тож ми можемо встановити максимальне значення або посилання АЦП на 5В.
3. Контролер має функцію перетворення тригера, що означає, що перетворення АЦП відбувається лише після зовнішнього тригера, оскільки ми не хочемо, щоб нам потрібно було встановлювати регістри, щоб АЦП працював у режимі безперервного вільного запуску.
4. Для будь-якого АЦП частота перетворення (аналогове значення в цифрове значення) і точність цифрового виводу є обернено пропорційними. Тому для кращої точності цифрового виводу нам доводиться вибирати меншу частоту. Для звичайних годин АЦП ми встановлюємо попередній продаж АЦП на максимальне значення (2). Оскільки ми використовуємо внутрішній годинник 1 МГц, годинник АЦП буде (1000000/2).
Це єдині чотири речі, які ми повинні знати, щоб розпочати роботу з АЦП.
Усі вищезазначені чотири ознаки задаються двома регістрами:
ЧЕРВОНИЙ (ADEN): Цей біт повинен бути встановлений, щоб увімкнути функцію АЦП ATMEGA.
СИНИЙ (REFS1, REFS0): Ці два біти використовуються для встановлення опорної напруги (або максимальної вхідної напруги, яку ми збираємося подавати). Оскільки ми хочемо мати опорну напругу 5 В, REFS0 слід встановлювати за таблицею.
ЖОВТИЙ (ADFR): цей біт повинен бути встановлений, щоб АЦП працював безперервно (режим вільного запуску).
PINK (MUX0-MUX3): Ці чотири біти служать для повідомлення вхідного каналу. Оскільки ми будемо використовувати ADC0 або PIN0, нам не потрібно встановлювати будь-які біти, як у таблиці.
BROWN (ADPS0-ADPS2): ці три біти призначені для налаштування прескаляра для ADC. Оскільки ми використовуємо прескаляр 2, ми повинні встановити один біт.
ТЕМНО-ЗЕЛЕНИЙ (ADSC): цей біт встановлений для АЦП для початку перетворення. Цей біт можна вимкнути в програмі, коли нам потрібно зупинити перетворення.