У цьому проекті ми збираємось взаємодіяти LDR з мікроконтролером ATMEGA8, і за допомогою цього ми можемо виміряти ІНТЕНСИВНІСТЬ СВІТЛА в цій області. В ATMEGA8 ми будемо використовувати 10-бітний АЦП (аналого-цифрове перетворення) для вимірювання інтенсивності світла.
Am LDR - це перетворювач, який змінює свій опір, коли СВІТЛО падає на його поверхню. Датчик LDR доступний у різних розмірах та формах.
LDR виготовляються з напівпровідникових матеріалів, щоб забезпечити їм чутливі до світла властивості. Використовується багато видів матеріалів, але популярним є СУЛЬФІД КАДМІЮ (CdS). Ці LDR або ФОТОРЕСТОРИ працюють за принципом “ Фотопровідність ”. Тепер цей принцип говорить про те, що коли світло падає на поверхню LDR (у цьому випадку) провідність елемента збільшується або іншими словами опір LDR зменшується, коли світло падає на поверхню LDR. Ця властивість зменшення опору для LDR досягається, оскільки це властивість напівпровідникового матеріалу, що використовується на поверхні. LDR використовуються більшість разів для виявлення присутності світла або для вимірювання інтенсивності світла.
Існують різні типи LDR, як показано на малюнку вище, і кожен має різні технічні характеристики. Зазвичай LDR матиме 1MΩ-2MΩ при повній темряві, 10-20KΩ при 10 LUX, 2-5KΩ при 100 LUX. Типовий графік опору LUX для LDR показаний на малюнку.
Як показано на малюнку вище, опір між двома контактами датчика зменшується із збільшенням інтенсивності світла або провідність між двома контактами датчика.
Тепер для перетворення цієї зміни опору на зміну напруги ми будемо використовувати схему дільника напруги. У цій резистивній мережі ми маємо один постійний опір та інший змінний опір. Як показано на малюнку, R1 тут є постійним опором, а R2 - датчиком СИЛИ, який діє як опір.
Середня точка гілки приймається для вимірювання. Коли опір R2 змінюється, Vout змінюється разом з ним лінійно. Отже, з цим ми маємо напругу, яка змінюється із вагою.
Зараз важливо відзначити, що вхід, який приймає контролер для перетворення АЦП, становить лише 50 мкАмпер. Цей навантажувальний ефект дільника напруги на основі опору є важливим, оскільки струм, який надходить від Vout дільника напруги, збільшує відсоток похибок, і наразі нам не потрібно турбуватися про ефект навантаження.
Що ми тут зробимо, це візьмемо два резистори і сформуємо розділову ланцюг так, щоб для 25-вольтового Vin, ми отримали 5-вольтовий Vout. Отже, все, що нам потрібно зробити, це помножити значення Vout на “5” у програмі, щоб отримати реальну вхідну напругу.
Компоненти
Апаратне забезпечення: ATMEGA8, блок живлення (5 в), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), конденсатор 100 мкФ, конденсатор 100 нФ (5 штук), резистор 10 кОм, LDR (світлозалежний резистор).
Програмне забезпечення: Atmel studio 6.1, progisp або flash magic.
Електрична схема та робоче пояснення
У схемі PORTD ATMEGA8 підключений до порту даних РК-дисплей. У РК-дисплеї 16 * 2 є 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-шпильки, щоб відповідно надсилати символи та дані.
Ці сполуки для LCD наведені нижче:
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 ----------------------------- PD4 з UC
PIN12 або D5 ----------------------------- PD5 з UC
PIN13 або D6 ----------------------------- PD6 з UC
PIN14 або D7 ----------------------------- PD7 з UC
У схемі ви можете бачити, що ми використовували 8-бітовий зв'язок (D0-D7), однак це не є обов'язковим, ми можемо використовувати 4-бітний зв'язок (D4-D7), але з 4-бітовою програмою зв'язку стає трохи складніше. Отже, завдяки простому спостереженню у верхній таблиці ми підключаємо 10 контактів РК-дисплея до контролера, в якому 8 контактів - це контакти даних і 2 контакти для управління.
Напруга на R2 не є повністю лінійною; це буде шумно. Для фільтрації шуму конденсатори розміщені на кожному резисторі в схемі дільника, як показано на малюнку.
В 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): цей біт встановлений для АЦП для початку перетворення. Цей біт можна вимкнути в програмі, коли нам потрібно зупинити перетворення.
Отож із опором LDR на РК-екрані 16x2 ми можемо зрівняти його з графіком LUX для отримання інтенсивності світла.