Дистанційне керування на інфрачервоних променях стало невід’ємним елементом сучасного електронного обладнання. Подібний пульт управління додається майже до будь побутовим електронним пристроям: телевізорів, ау- діопроігриватедям, кондиціонерів і т. п. Більшість існуючих пультів дистанційного керування живиться від однієї або двох батарей 1,5 В (розміру АА або ААА). В такому пристрої змонтований інфрачервоний світлодіод, який передає коди команд, відповідні кнопці. Кожна кнопка має свій унікальний код команди. Інфрачервоне випромінювання (невидиме для людського ока, але реєстроване фотодетектором) модулюється несучою частотою від 35 до 40 кГц, і цей сигнал використовується для передачі кодів команд.

На рис. 7.11 показаний сигнал SIRCS, переданий пультом дистанційного керування телевізором.

З інфрачервоними пристроями є одна серйозна проблема: тут немає загальних стандартів і кожен виробник створює свій власний формат команд, частоту модуляції і т. Д. Ми нарахували дев’ять систем дистанційного керування: Daewoo, Samsung, Japan, Motorola, SIRCS (Sony), RC5 (Philips), Denon, NEC і RECS80 (Thomson). У міру розширення функцій апаратури все більш складним стає і дистанційне управління нею. Тепер на пульті може бути більше 50 кнопок. Однак найбільш інтенсивно використовується тільки частина цих кнопок. Візьмемо наприклад дистанційне керування телевізором. Найчастіше на ньому натискають кнопки виключення / включення, виключення звуку, перемикання на наступний / попередній канал, підвищення / пониження гучності.

Рис. 7.11. Осцилограма сигналу від пульта дистанційного керування телевізором

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

У цьому проекті ми вирішили реалізувати спрощене дистанційне керування (без батарейок) для телевізора, забезпечене тільки шістьма кнопками, причому користувач може вибрати формат команд (NEC, SIRCS, RC5 або Samsung).

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

Мета проекту – створити дистанційне керування з шістьма кнопками (без батарейок) для телевізора. На рис. 7.12 приведена блок-схема цього пристрою.

Рис. 7.12. Блок-схема пульта дистанційного керування (без батарейок)

У пристрої використано восьмиконтактний мікроконтролер. Живлення від генератора Фарадея. Шість кнопок підключені у вигляді матриці Зх 2 з п’ятьма висновками. У мікроконтролера сімейства tinyAVR розробнику доступно до шести контактів вводу / виводу. В описуваному пристрої зайняті всі шість контактів: п’ять контактів – для кнопок і ще один – для інфрачервоного світлодіода.

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

Принципова схема нашого дистанційного керування зображена на рис. 7.13. Схема живиться від генератора Фарадея, підключеного через роз’єм SL1. Діоди D1-D4 випрямляють змінну напругу; постійне напруга фільтрується і запасається в конденсаторах С1 і СЗ. Стабілізатор LP2950-3.3V видає напругу 3,3 В на мікроконтролер Tiny45. Для подачі команд управління передбачено шість кнопок, які підключені до мікроконтролера через контакти РВ0-РВ4. Кнопка РВ5 призначена для управління інфрачервоним світлодіодом.

Рис. 7.13. Принципова схема пульта дистанційного керування (без батарейок)

Мікроконтролер опитує кнопки і при виявленні натискання передає код відповідної кнопки. Формат дистанційного керування (REC, NEC, Samsung або SIRCS) програмується в мікроконтролері. Незважаючи на те, що всі формати відрізняються, вони все-таки мають дещо спільне. Передача коду кнопки починається зі стартового біта, за яким слідують кілька адресних бітів, а потім – кілька бітів коду команди (Т. Е. Власне код натиснутої кнопки).

Адреса позначає пристрій (телевізор, аудіопрогравач, програвач DVD і т. Д.). У деяких форматах за стартовим бітом може слідувати код команди, а вже за ним – біти адреси. Кодування і тривалість бітів в різних форматах також відрізняються. Ці подробиці наведені в файлах вихідних кодів даного проекту.

Конструкція

Рис. 7.14. Друкована плата пульта дистанційного керування

Рис. 7.15. Пульт дистанційного керування в корпусі

Рис. 7.16. Пульт дистанційного керування (кришка відкрита)

Схема зібрана на спеціально виготовленій друкованій платі і укладена в невеликий корпус. Генератор Фарадея зроблений під розмір корпусу. На рис. 7.14-7.16 показана плата пристрої, пульт в корпусі і зі знятою кришкою.

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

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

У головній програмі виконується цикл очікування натискання кнопки. До натискання кнопки мікроконтролер знаходиться в режимі очікування (для економії енергії). Натискання кнопки викликає переривання по зміні стану контакту, яке пробуджує мікроконтролер (лістинг 7.1). Мікроконтролер сканує кнопки і ідентифікує натисненням кнопки. Далі виконується процедура передачі коду кнопки відповідно до обраного протоколом (форматом команди). Після цього мікроконтролер знову переходить у стан очікування (до моменту натискання наступної кнопки).

Лістинг 7.1

ISR(PCINTO_vect)

// Процедура обробки переривання по зміні стану контакту {

MCUCR &= ~((1«SE)  |      (1«SM1) ) ;

// Відключити режим очікування PCMSK & = ~ ((1 «PCINT4) | (1« PCINT3) | (1 «PCINT2));

// Переривання по зміні стану контакту відключено на всіх контактах New_Key_Pressed = 1;

}

Рис. 7.17. Приклад кодування по протоколах RC5 і NEC

Код кнопки модулює несучу частоту. Несуча частота залежить від обраного протоколу (рис. 7.17). Мікроконтролер, що працює на тактовій частоті 1 МГц, генерує несучу частоту за допомогою внутрішнього 8-розрядного таймера (лістинг 7.2). Несуча частота формується перемиканням вихідного розряду. Тому для отримання несучої з частотою 36 кГц, частота переривань повинна бути рівна 72 кГц.

ISR (TIMERO_COMPA_vec t)

// Оброблювач переривання за збігом при порівнянні

{

PORTB Л= (1«IR_LED);

// Перемикання біта для генерування ШІМ

}

Ініціалізація таймера для протоколу RC5 приведена в лістингу 7.3.

{

TCCROA I = (1«WGM01) ;

// Включити переривання за збігом при порівнянні TCCROB | = (1 «CS00);

// Тактова частота 8 МГц (попередній дільник = 1), режим СТС OCROA = 14;

// Переривання з частотою приблизно 72 кГц TIMSK | = (1 «ОС1ЕОА);

// Активізувати переривання СТС sei ();

}

Для передачі будь-якого коду кнопки необхідно вимикати і включати інфрачервоний світлодіод з частотою несучої, модульованої битами коду.

Лістинг 7.4 ілюструє формування реальних бітів по протоколу RC5.

void transmit_RC5 (void)

{

while(Tx == 1)

{

i f(Tx_bit_RC5[i] == 0)

{

DDRB |= (1«IR_LED);

// Включити несучу _delay_us (RC5_ON_PERIOD_ZERO);

DDRB &= ~(1«IR_LED);

// Вимкнути несучу _delay_us (RC5_OFF_PERIOD_ZERO);

}

if(Tx_bit_RC5[i] == 1)

{

DDRB &= ~(1«IR_LED);

// Вимкнути несучу

_delay_us(RC5_OFF_PERIOD_ONE);

DDRB |= (1«IR_LED);

// Включити несучу _delay_us (RC5_0N_PERX0D_0NE);

}

i++;

if (i == 14)

{

i=0;

Tx = 0;

}

}

PCMSK |= ( (1«PCINT4) | (1«PCINT3) | (1«PCINT2) ) ;

}

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

Користуватися пультом дистанційного керування дуже просто. Потрясіть його кілька разів і натисніть потрібну кнопку!

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