У цьому підручнику ми збираємось взаємодіяти датчик FLEX з мікроконтролером ATMEGA8. В ATMEGA8 ми будемо використовувати функцію 10-бітного АЦП (аналого-цифрове перетворення) для виконання цієї роботи. Тепер АЦП в ATMEGA не може приймати вхід більше + 5В.
Що таке гнучкий датчик?
Датчик FLEX являє собою перетворювач, який змінює свій опір, коли його форма змінюється. Це показано на малюнку нижче.
Цей датчик використовується для відчуття змін лінійності. Отже, коли датчик FLEX зігнутий, опір різко згинається. Це показано на малюнку нижче.
Тепер для перетворення цієї зміни опору на зміну напруги ми будемо використовувати схему дільника напруги. У цій резистивній мережі ми маємо один постійний опір та інший змінний опір. Як показано на малюнку нижче, R1 тут є постійним опором, а R2 - датчиком FLEX, який діє як опір. Середня точка гілки приймається для вимірювання. Коли опір R2 змінюється, Vout змінюється разом з ним лінійно. Отже, з цим ми маємо напругу, яка змінюється з лінійністю.
Зараз важливо відзначити, що вхід, який приймає контролер для перетворення АЦП, становить лише 50 мкАмпер. Цей навантажувальний ефект дільника напруги на основі опору є важливим, оскільки струм, який надходить від Vout дільника напруги, збільшує відсоток помилок, на даний момент нам не потрібно турбуватися про ефект навантаження.
Ми візьмемо два резистори і сформуємо ділильну ланцюг, так що для 25-вольтового Vin, ми отримаємо 5-вольтовий Vout. Отже, все, що нам потрібно зробити, це помножити значення Vout на “5” у програмі, щоб отримати реальну вхідну напругу.
Потрібні компоненти
ТЕХНІЧНЕ ЗАБЕЗПЕЧЕННЯ : ATMEGA8, блок живлення (5 в), AVR-ISP ПРОГРАММЕР, JHD_162ALCD (16x2LCD), конденсатор 100 мкФ, конденсатор 100 нФ (5 штук), резистор 100 КОм.
ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ: Atmel studio 6.1, прогісп або флеш-магія.
Принципова схема та робоче пояснення
У схемі PORTD ATMEGA8 підключений порт даних РК. У РК-дисплеї 16x2 є 16 штифтів, якщо є підсвічування, якщо немає підсвічування, буде 14 штифтів. Можна підключити або залишити шпильки підсвічування. Тепер у 14 висновках є 8 висновків даних (7-14 або D0-D7), 2 висновки джерела живлення (1 & 2 або VSS & VDD або gnd & + 5v), 3- й висновок для контролю контрасту (VEE-контролює, наскільки товстими повинні бути символи показано) і 3 керуючі штифти (RS & RW & E).
У схемі ви можете помітити, що я взяв лише два керуючі штифти. Біт контрасту та READ / WRITE використовуються не часто, тому їх можна закоротити на землю. Це дає РК-дисплею найвищий контраст і режим читання. Нам просто потрібно контролювати ENABLE та RS-шпильки, щоб відповідно надсилати символи та дані.
РК-з'єднання з ATmega8 такі:
PIN1 або VSS на землю
PIN2 або VDD або VCC до + 5 В потужності
PIN3 або VEE на землю (забезпечує максимальний контраст найкращий для початківців)
PIN4 або RS (реєстрація вибору) до PB0 uC
PIN5 або RW (читання / запис) на землю (переведення РК в режим читання полегшує зв’язок для користувача)
PIN6 або E (увімкнути) до PB1 uC
PIN7 або D0 до PD0 uC
PIN8 або D1 до PD1 uC
PIN9 або D2 до PD2 uC
PIN10 або D3 до PD3 uC
PIN11 або D4 - D4 uC
PIN12 або D5 до PD5 uC
PIN13 або D6 до PD6 uC
PIN14 або D7 до PD7 uC
У схемі ви можете бачити, що ми використовували 8-бітовий зв'язок (D0-D7), однак це не є обов'язковим, ми можемо використовувати 4-бітний зв'язок (D4-D7), але з 4-бітовою програмою зв'язку стає трохи складніше, тому ми щойно пішли з 8-бітовим спілкування. (Також перевірте цей підручник: 16x2 РК-інтерфейс з мікроконтролером AVR)
Отже, завдяки простому спостереженню з таблиці вище ми підключаємо 10 контактів РК-дисплея до контролера, в якому 8 контактів є контактами даних, а 2 контактами призначені для управління.
Напруга на R2 не є повністю лінійною; це буде шумно. Для фільтрації шуму конденсатори розміщені на кожному резисторі в схемі дільника, як показано на малюнку.
Бак 1К тут полягає в регулюванні точності АЦП. Тепер поговоримо про АЦП 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): цей біт встановлений для АЦП для початку перетворення. Цей біт можна вимкнути в програмі, коли нам потрібно зупинити перетворення.
Взаємодія датчика FLEX з ATmega8 пояснюється поетапно в коді С, наведеному нижче.