Датчик температури та відносної вологості з адаптивним регулюванням яскравості індикатора
Метою цього проекту є демонстрація способу реалізації адаптивного керування яскравістю семисегментних світлодіодних індикаторів. Система постійно оцінює рівень освітленості за допомогою дешевого фоторезистора (LDR) і використовує отриману інформацію для регулювання яскравості дисплея. Для наочності цей спосіб застосовується в цифровому вимірювачі температури та відносної вологості, в якому яскравість семисегментних індикаторів адаптується під навколишнє середовище. В цьому проекті використовуються восьмисегментні світлодіодні індикатори, якими керує мікросхема MAX7219. Температура навколишнього повітря та відносна вологість вимірюються датчиком DHT11. У цьому проекті використовується 8-бітний мікроконтролер PIC12F683 в восьмививідному корпусі. Автоматичне налаштування яскравості семисегментних індикаторів підвищує зручність читання в будь-яких умовах.
Теорія та схема
Зараз багато смартфонів, телевізорів, КПК та планшетів мають автоматичну регулювання яскравості, яка допомагає економити заряд батареї та підвищує зручність читання в різних умовах освітленості. Ця функція затемнює дисплей при високому рівні освітленості та освітлює в темряві. При збільшенні яскравості екрану зменшуються відблиски, а також знижується чутливість людського ока на рівень освітленості при збільшенні яскравості.
Автоматичне регулювання яскравості — це замкнена система, яка оцінює рівень освітленості і відповідно регулює яскравість дисплея. Фоторезистор (LDR) та постійний резистор 10K з'єднані послідовно + живлення і GND, тобто вони утворюють дільник напруги, як показано на схемі. Зазвичай опір фоторезистора (LDR) становить менше 1 кОм на яскравому світлі і може зрости до кількох сотень кОм у темряві. Таким чином, напруга на 10K резисторі зростає пропорційно освітленості. У цьому проекті напруга на ньому може змінюватися від 0,1В у темряві до більше ніж 4В на світлі. Мікроконтролер PIC12F683 зчитує цей аналоговий сигнал через AN3 (GP4) вивід АЦП, а потім посилає відповідні сигнали драйверу семисегментних індикаторів MAX7219 для регулювання яскравості семисегментних світлодіодних індикаторів.
Мікросхема MAX7219 забезпечує послідовний інтерфейс для управління семисегментними світлодіодними індикаторами з загальним катодом до 8 символів і вимагає всього 3 виводу мікроконтролера. Мікросхема має BCD декодер, драйвер сегментів і цифр та статичну ОЗУ 8 × 8 для зберігання значення цифр. Ток сегмента для всіх індикаторів встановлюється одним зовнішнім резистором між контактом ISET та живленням. Проте, вона також забезпечує цифровий контроль яскравості (16 кроків від мінімальної до максимальної) через внутрішній ШІМ. У цьому проекті виводи GP0, GP1 та GP2 PIC12F683 використовуються для управління LOAD, DIN та CLK сигнальними лініями MAX7219.
Для вимірювання температури та відносної вологості використовується датчик DHT11. Він може вимірювати температуру від 0 до 50°C з точністю ± 2°С та відносну вологість повітря від 20 до 95% з точністю ± 5%. Датчик має повністю відкалібровані цифрові виходи для двох вимірювань. Він має свій власний 1-Wire протокол, і таким чином, зв'язок між датчиком та мікроконтролером неможливий через звичайний периферійний інтерфейс. Протокол повинен бути закладений у прошивці мікроконтролера з точними розрахунками таймінгів, необхідних датчиком. PIC12F683 використовує вивід GP5 для взаємодії з DHT11.
Для полегшення збору макета проекту я використовую свою налагоджувальну плату PIC12F та мій послідовний 8-розрядний семисегментний світлодіодний індикатор.
Програма
Прошивка для цього проекту написана на C та скомпільована в MikroC Pro 5.30 для PIC. Підпрограми для ініціалізації MAX7219 та відправки цифр написані просто і зрозуміло, щоб їх легко можна було повторити на інших мовах програмування. MAX7219 керує яскравістю дисплея за допомогою свого ШІМ. Вихід ШІМ керується нижніми полубайтами (D3-D0) реєстра яскравості (адреса 0x0A) і має 16 рівнів яскравості. Нульове значення полубайтів дає мінімальну яскравість, а коли всі полубайти мають значення 1, яскравість стає максимальною. Для автоматичного регулювання яскравості, вихід з АЦП з фоторезистором (LDR) скорочується до 0-10 (11 рівнів яскравості) шляхом простого ділення значення 10-розрядного АЦП на 100. Потім використовується таблиця відповідності значень полубайтів рівню яскравості. Температура відображається в градусах Фаренгейта (F), відносна вологість у відсотках (Р).
Завантажити вихідний код та HEX файли можна внизу статті.
Мікроконтролер PIC12F683 працює на частоті 4 МГц від внутрішнього генератора. MCLR та Power-On Timer увімкнені. Налаштування конфігурації фьюзів показано на зображенні.
Проект був випробуваний при різному рівні освітленості, від темряви до яскравого світла, і завжди цифри були зручні для читання і приємні для очей. Якщо ви хочете використовувати таке або подібне пристрій у спальні, вам не доведеться турбуватися про його вимкнення на ніч. Дисплей автоматично буде достатньо тьмяним, щоб не заважати сну. Хоча таблиця яскравості забезпечує задовільну регулювання рівня яскравості в різних умовах освітлення, ви можете змінювати ці значення для пошуку найбільш зручних для вас.
- TRH_Meter.zip (36 Кб)