Це просте і корисне пристрій, який попереджає про те, що ви залишили відкритою дверцята холодильника. Коли ви відкриваєте холодильник, всередині нього запалюється світло. Якщо ви не закрили дверцята (або закрили її нещільно), то вимикач лампу освітлення не відключати. Пристрій складається з невеликої (живиться від батареї) схеми, в якій є світлодіод (для виявлення світла). Якщо все зроблено правильно, то схема почне видавати звуковий сигнал після того, як дверцята залишається відкритою більш ніж на дев’ять секунд. Ми вважаємо, що дев’яти секунд цілком вистачить, щоб покласти (або витягнути) продукти. Блок- схема пристрою зображена на рис. 5.43.

Рис. 5.43. Блок-схема сигналізатора для холодильника

Специфікація проекту

Мета проекту-створити просту компактну схему, яка виявляє світло від лампи освітлення холодильника і відраховує час світіння цієї лампи. Якщо час перевищує дев’ять секунд, пристрій повинен видати звуковий сигнал, щоб повідомити господареві, що він, можливо, залишив відкритою дверцята холодильника.

Опис пристрою

На рис. 5.44 приведена принципова схема проекту. Схема не має захисного діода і стабілізатора напруги, тому при підключенні батарей потрібно дотримуватися обережності. Щоб схема була компактною, вона харчується від невеликих батарейок-таблеток LR44. Чотири послідовно з’єднані батареї по 1,5 В живлять мікроконтролер. Конденсатор С1 припаяний біля контактів живлення мікроконтролера (для розв’язування виникають у схемі перешкод). LED1 – це зелений світлодіод-індикатор відкривання / закривання дверцят. Вибраний мікроконтролер ATtinyl3, що має один апаратний канал ШІМ (на таймері TimerO), необхідний для управління транзистором Q1. Динамік з опором 8 Ом підключений до колектора цього ж транзистора через токоогранічительний різі-

стор. Фоторезистор LDR з’єднаний з виводом PCINT через резистор опором 47 кому. Це забезпечує необхідний розмах сигналу для переривання мікроконтролера. Конденсатор С2 призначений для фільтрації перешкод.

Рис. 5.44. Принципова схема сигналізатора для холодильника

Функціонування пристрою залежить від напруги на контакті переривання мікроконтролера. При появі світла опір фоторезистора зменшується до кількох килоом, тому падіння напруги на ньому виявляється незначним і напруга на контакті переривання близько до логічному нулю. Мікроконтролер виходить з режиму енергозбереження. Потім мікроконтролер чекає заданий час, і, якщо логічний рівень залишається колишнім, включається сигнал. Якщо двері закриті, логічний рівень стає високим, оскільки за відсутності світла опір фоторезистора становить кілька мега. Напруга на фоторезистори виявляється близьким до логічного одиниці, тому мікроконтролер переходить в режим енергозбереження.

Конструкція

Компонування плати в програмі EAGLE (разом з принциповою схемою) можна завантажити за посиланням: www.ayrgenius.coin / tinyavrl.

Плата одностороння (на стороні компонентів є всього декілька перемичок). Обидві сторони плати показані на рис. 5.45 і 5.46.

Рис. 5.45. Друкована плата сигналізатора для холодильника (сторона компонентів)

Рис. 5.46. Друкована плата сигналізатора для холодильника (сторона друкованих провідників)

Фоторезистор припаяний трохи вище, щоб на нього падало світло від лампи освітлення холодильника. Пристрій, укладену в корпус, зображено на рис, 5.47.

Рис. 5.47. Зовнішній вигляд сигналізатора для холодильника

Програмування

Відкомпільований вихідний код (разом з файлом MAKEFILE) можна завантажити за посиланням: www.avrgenius.com/tinyavrl.

Код виконується на тактовій частоті 8 МГц. Контролер запрограмований за допомогою STK500 в режимі програмування ISP. Коли двері холодильника закрита, контролер знаходиться в режимі енергозбереження. У цьому режимі контролер споживає струм всього. 100 мА (що знижує споживання енергії і збільшує час роботи від батарей). Режим енергозбереження можна встановити за допомогою бітів SE і SM1 регістра MCUCR. Контролер виходить з режиму енергозбереження після зовнішнього асинхронного переривання. Це переривання викликає фоторезистор, підключений до контакту PCINT. Переривання виникає при зміні рівня напруги. Найбільш важливі фрагменти коду ілюструють листинги 5.18 і 5.19.

while(1)

{

if (d == l) // двері відкриті після 9 секунд {

d=0 ;

speaker_init();//speaker initiate TIMSKO &=~(1«TOIEO) ;

// Переривання таймера відключено

}

if(a==l)

{

OCR0B = 0x01; // частота 1

PORTB & = ~ (1 «PB4); / / Світлодіод включений

_delay_ms(2 0 0);

OCR0B = 0x80; // частота 2

PORTBI = (1 «PB4); / / Світлодіод вимкнений

_delay_ms(2 0 0);

}

}

Лістинг 5.18 – це головний нескінченний цикл програми. Він складається з двох операторів if, що здійснюють повторення двох фрагментів коду, які керують звуковим сигналом (якщо двері відкриті більше дев’яти секунд). Перший фрагмент виконується, коли процедура обслуговування переривання по переповнення таймера робить керуючу змінну d рівною 1. Потім у цьому блоці if головного нескінченного циклу включається звуковий сигнал і вимикається переривання по переповнення таймера. Другий фрагмент призначений для відтворення різних частот через гучномовець і миготіння світлодіодом.

ISR (PCINTO_vect) / / процедура pc_int {

pcint_init () /// активація переривання sei (); // установка біта активації в 1 if (! (PINB & (1))) // якщо PINB дорівнює 0, то а = 1 {

а = 0; // початкова умова

TCNT0 = 0X00; // ініціалізувати таймер

timer_init();

sei (); // активувати переривання DDRB | = (1 «РВ4); / / Включити світлодіод P0RTB & = ~ (1 «PB4);

}

else if ((PINB&(1))==1)

{

a = 0; // початкова умова c = 0; d = 0;

all_off (); // відключити весь введення / висновок powerdown; // перейти в стан вимикання sleep_cpu ();

}

}

Лістинг 5.19- це процедура обробки переривання по зміні стану контакту, яка викликається при кожному закриванні / відкриванні дверей. Коли значення на цьому контакті дорівнює 0, це означає, що двері відкрита (оскільки падіння напруги на фоторезистори близько до рівня логічного 0). Це переривання виводить мікроконтролер з режиму вимкнення. Далі инициализируется таймер і включається світлодіод. Коли двері закривається, на контакті виявляється рівень логічної 1, що призводить до повторного виконання процедури обробки переривання. Під час її виконання керуючі змінні скидаються в свої початкові значення і мікроконтролер переходить в режим вимкнення.

Крім того, в програмі є процедури ініціалізації таймера і гучномовця.

Робота пристрою

Фоторезистор повинен знаходитися поблизу джерела внутрішнього освітлення холодильника. Коли двері закриті, мікроконтролер знаходиться в стані виключення і споживає дуже невеликий струм. Коли двері відчиняються, включається світлодіод, і якщо двері залишаються відкритими довше зазначеного часу (дев’ять секунд), то вмикається звуковий сигнал.

Висновок

У цій главі ми розглянули застосування декількох типів датчиків. Датчики – це важлива частина будь-якого проекту. Вони забезпечують взаємодію між реальним світом і цифровим світом мікроконтролерів. При роботі слід дотримуватися всіх вимог, наявні в специфікаціях конкретних датчиків. Тепер же настав час для музики, оскільки ми переходимо до звукових проектам наступній глави.

Джерело: Гадре, Д., Цікаві проекти на базі мікроконтролерів tinyAVR / Дхананья Гадре, Нігула Мелхотра: Пер. з англ. – СПб .: БХВ-Петербург, 2012. – 352 с .: іл. – (Електроніка)