Світлодіод як джерело і як сенсор світла
На дворі в розпалі літо, а у мене в розпалі ремонт. Роблю ремонт у ванній. Виклав кахлем стіни, на підлогу плитку поклав. Замінив умивальник, сантехніку і т.д. Поки в тісному ванною працював, потів і сопів «як паровоз». А все тому, що вентиляції не було примусової, а тієї, що була - звичайна витяжна - не вистачало. Довелося мені купити витяжний вентилятор і поставити його в вентиляцію. Робота пішла бадьоріше.
Коли я відвідав магазин, щоб купити вентилятор я просто випав в осад від цін. А-б-а-л-діти! Ні хріна собі ціни! І якщо за просто вентилятор з вимикачем-мотузкою вимагали близько півтори тисячі дерев'яних, то за автоматичні вентилятори (з простим таймером) там ціни були вище в кілька разів. Не, у мене як би були гроші на ремонт, я міг собі дозволити купити такі вентилятори. Але маленьке квакають зелене земноводне всередині сказало мені, що ну ка нахер таких продавців з таким товаром і такими цінами на нього. Довелося шукати. І ось тиняючись по магазинам знайшов більш менш прийнятний варіант. Звичайний 125мм вентилятор без всяких таймерів і вимикачів за 400 «дров». Від мотора відходило два дроти на клемник і все.
Ось його і поставив в ванну. А що б можна було включати і вимикати його, причепив до нього тимчасово звичайний вимикач. Зайшов у ванну, включив вентилятор, попрацював, вимкнув, вийшов. Пару раз забував вимкнути. Йшов з дому на кілька годин, а вентилятор Маслау даремно. І ось тут мене відвідала геніальна думка: треба цю справу автоматизувати!
Почав думати, що можна зробити, як повинно працювати. В голову прийшли кілька варіантів підключення витяжного вентилятора. Один з варіантів, підключити вентилятор паралельно лампочці, і тепер, поки горить світло у ванній, вентилятор обертається.
Плюси: ніякого геморою з підключенням
Мінуси: якщо потрібно просто провітрити ванну кімнату, то що б працював вентилятор, потрібно включити світло.
Висновок: не наш метод.
Другий варіант теж простий. Зробити окремий вимикач на вентилятор.
Плюси: просте підключення. Вентилювати ванну можна при вимкненому світлі.
Мінуси: доведеться приходити через якийсь час і вимикати вентилятор, а це можна забути зробити, відповідно, вентилятор буде працювати до переможного кінця.
Висновок: не наш метод.
Хотілося автоматизації, руки свербіли Попая, а пальці - попрограмміровать. Тому було прийнято рішення - автоматизувати! За принципом: відкрив двері, зайшов у ванну, вентилятор через якийсь час сам включився. Вийшов з ванної, зачинив двері, вентилятор якийсь час попрацював, а потім сам вимкнувся. Приблизно так. Взагалі можна багато різних алгоритмів використання придумати. Але це вже потім буду експериментальним способом підбирати. А зараз треба продумати структуру автомата.
Отже, завдання визначити момент, коли людина відкрила і закрив двері. Шляхів вирішення кілька. Як один з варіантів, поставити геркон (або датчик Холла) і магніт на двері. Але доведеться тягти додаткові дроти, а цього робити не хочеться. Ще можна підключиться до лампочки і визначати наявність напруга на ній. Є напруга на лампочці - двері відкриті, людина увійшла у ванну. Немає напруги - людина вийшла з ванної, зачинив двері і вимкнув світло. Мінуси в такому варіанті теж є.
Але, як на зло, все макетні плати були зайняті зібраними якимись пристроями. Розбирати і звільняти макетну плату не хотілося і було лінь. І ось на дозвіллі гортаючи свій блог, натрапив на статтю про Лаунчпад і середу програмування Energia. Ця макетке якраз лежала без діла. Тому я вирішив поекспериментувати на ній.
Схема всієї цієї справи найпростіша - макетке, резистор, світлодіод. Все з'єднати послідовно. Ось фото:
Launchpad - Детектор світла з світлодіода
Ось і вся схема. Світлодіод - звичайний червоний нонейм світлодіод, виколупати фіг знає звідки. Резистор 68 Ом. Для зручності припаяв резистор до ноги світлодіода і до гнізда PBS. Підключив до пінам: анод на резистор і на P1.3 (PIN1), катод на P1.4 (PIN2). Випередити, де у світлодіода катод / анод можна двома способами: у нових, свіжокуплені світлодіодів у анода ( «плюс») довший висновок. Якщо висновки світлодіода вкорочені, то визначити можна по зрізаної межі на боці світлодіода, там де зрізано, там катод ( «мінус») (докладніше про світлодіоди).
Світлодіод буде світиться тільки в тому випадку, якщо на світлодіод подано пряме напруга, тобто на катод поданий «мінус» (земля), а на анод подано «плюс» (позитивне харчування). Якщо подати навпаки, то ніякого свічення не буде, а якщо перевищити допустиму зворотна напруга, то світлодіод взагалі згорить. Ми будемо подавати позитивна напруга на PIN2 і низька напруга в PIN1. Таким чином на світлодіод буде подано допустимий зворотна напруга. Зрозуміло, світлодіод світитися не буде, але буде заряджатися паразитна ємність з'єднання світлодіода і ніг мікроконтролера LaunchPad.
Макетна схема на LaunchPad MSP430
Потім ми перемкнемо ногу контролера на вхід і порахуємо, за який час ємність розрядиться до рівня логічної одиниці. Цей час залежить від освітленості. Чим темніше, тим довше буде розряджатися ємність.
Далі я відкрив середу програмування Energia і накидав ось такий скетч:
Сенс цього простий. Постійно визначаємо рівень освітленості. Якщо рівень перевищив заданий поріг, запалюємо зелений світлодіод, інакше запалюємо червоний. Ну і паралельно цьому кліпаємо светодиодом-сенсором, показуючи, що ми працюємо. Рівень освітленості, який ми визначили, виводиться в UART. Ось власне і все.
Уже років 8-10 у мене стоїть АНАМовскій вимикач. Включив світло - загорілася лампа і заробив вентилятор. Вимкнув - лампа погасла, вентилятор продовжує працювати час Х. Усередині вимикача маленький перемикач на три положення різної тривалості. Всі давно придумано і дуже акуратно, надійно і компактно зроблено.
З повагою.
Ну і в мене задумка була не така, як те, що вийшло. Так склалось. Хотів одного, а працює зовсім інша. Все часу немає переробити. Як то кажуть, немає нічого більш постійного, ніж тимчасове.
Ще, до речі, по темі. Я тут створив щось подібне, грався зі Свєтіков. Поки що на макетке, але тим не менше. З'ясувалася така річ, що 8-бітної змінної для відліку часу розрядки до нуля не вистачить, вона встигає переповниться кілька разів, особливо, якщо процесор працює на високих частотах. У мене зараз це справа працює на ATMega8A, на 4МГц, при кімнатній освітленості встигає переповниться мінімум один, а то й два рази. А якщо накрити ковпачком від флешки, зімітувати «ніч», то 30 з гаком разів. Інший переповнює змінну 15 і 93 рази відповідно. Так що краще і точніше було б, напевно, вважати саме переповнення, а не просто тики. Ну, або брати більш місткі змінні 🙂