Печать

Универсальный переключаемый пульт ДУ с протоколом RC-5

Опубликовано . Опубликовано в Устройства на AVR

Рейтинг:   / 2
ПлохоОтлично 

Предлагаемый ПДУ формирует команды в соответствии с рас­пространенным протоколом RC-5, на прием которых рассчитаны многие устройства бытовой электроники. Особенность его в том, что соответствие между нажимаемыми кнопками и подаваемы­ми ИК командами можно установить или изменить по собствен­ному желанию, приспособив таким образом пульт для управле­ния любым устройством. Более того, можно задать три разных "раскладки" клавиатуры, переключая их по необходимости. Имеется возможность задать и такую "раскладку", при которой нажатия на разные кнопки ПДУ будут адресованы разным устройствам.

В конструкции использован МК ATtiny28, специально предназначен­ный для работы в ПДУ В отличие от дру­гих, в нем предусмотрен запрос преры­вания установкой низкого логического уровня на любом из входов одного из портов. Это позволяет без дополни­тельных аппаратных затрат "разбудить" МК, находящийся в "спящем" режиме, нажатием на любую кнопку пульта. Сделать это, используя МК большин­ства других типов, значительно слож­нее. Кроме того, в ATtiny28 имеется встроенный модулятор импульсов, что также упрощает схему ПДУ.

Универсальный переключаемый пульт ДУ с протоколом RC-5 - схема
Рис. 1

Схема ПДУ показана на рис. 1. Указанный на ней вариант микросхемы МК (ATtiny28V-1AC) в миниатюрном кор­пусе TQFP-32 выбран по той причине, что способен работать при напряжении питания, пониженном до 1,8 В. Можно использовать и микросхему в корпусе PDIP-28 (индекс Р вместо А в обозначе­нии), учтя иную нумерацию выводов (табл. 1). Если же в ПДУ будет установ­лена микросхема с индексом L вместо V, он сможет работать при напряжении не менее 2,7 В. Максимальное напряжение в обоих случаях — 5,5 В.

Вывод Назначение в корпусе
TQFP-32 PDIP-28
1 PD3 RESET
2 PD4 PD0
3 Не подключен PD1
4 VCC PD2
5 GND PD3
6 Не подключен PD4
7 XTAL1 VCC
8 XTAL2 GND
9 PD5 XTAL1
10 PD6 XTAL2
11 PD7 PD5
12 PB0 PD6
13 PB1 PD7
14 PB2 PB0
15 PB3 PB1
16 PB4 PB2
17 PB5 PB3
18 VCC PB4
19 Не подключен PB5
20 Не подключен VCC
21 GND Не подключен
22 Не подключен GND
23 PB6 PB6
24 PB7 PB7
25 PA2 PA2
26 PA3 PA3
27 PA1 PA1
28 PA0 PA0
29 RESET Отсутствует
30 PD0 Отсутствует
31 PD1 Отсутствует
32 PD2 Отсутствует
Таблица №1

Вывод начальной установки МК для большей помехоустойчивости соединен через резистор R1 с плюсом источника питания (батареи GB1), хотя аналогич­ный резистор имеется и внутри микро­схемы. Частоту керамического резона­тора ZQ1 (455 кГц) изменять нельзя, так как все реализованные программно длительности импульсов и периоды их повторения будут иметь правильные значения только при такой тактовой частоте. Конденсаторы, обычно уста­навливаемые между выводами резона­тора и общим проводом, в данном случае не нужны — в МК имеются внутренние.

В промежутках между нажатиями на кнопки программа переводит МК в "спящий" режим с минимальным энергопотреблением. При этом на выводах PD2—PD7 (выходах) установлены низ­кие логические уровни, а на выводах РВ2—РВ7 (входах) — высокие, благода­ря внутренним резисторам, соединяю­щим их с плюсом питания. При нажатии на любую из кнопок SB 1 —SB36 уровень на соответствующем входе становится низким, что "будит" МК, заставляя его продолжить выполнение программы.

Прежде всего, она определяет, какая кнопка нажата, затем формирует на выходе РА2 МК кодовую последова­тельность соответствующей команды. Если кнопка не отпущена, через 114 мс программа повторит команду, в против­ном случае МК "заснет" до следующего нажатия на какую-либо кнопку.

Узел на транзисторе VT1 и излучаю­щем диоде VD1 преобразует сигнал с выхода РА2 в ИК излучение. Конден­сатор СЗ форсирует перепады напря­жения, подаваемого на базу транзисто­ра VT1, ускоряя его открывание и закрывание. Резистор R6 ограничивает амплитуду импульсов тока через излу­чающий диод до 0,15 А. При необходи­мости увеличить дальность действия ПДУ можно увеличить их амплитуду до 0,5 А, если примененный ИК диод такое допускает. Для этого достаточно уста­новить резистор R6 меньшего номина­ла. Необходимо также заменить кон­денсатор С4 другим, большей емкости.

Светодиод HL1 вспыхивает на время передачи команды, а также при переключении раскладок команд по кноп­кам. Цвет его свечения (красный, жел­тый или зеленый) указывает какая "рас­кладка" включена. Ограничительные резисторы R3 и R4 подобраны такими, чтобы субъективно яркость свечения "красного" и "зеленого" кристаллов светодиода была одинаковой.

Батарея питания GB1 — два соеди­ненных последовательно гальваниче­ских элемента типоразмера АА. Так как большую часть времени МК "спит", потребляя очень маленький ток, выклю­чатель питания не предусмотрен. Бло­кировочные конденсаторы С1 и С2 должны быть смонтированы как можно ближе к выводам питания и общего про­вода МК, а конденсатор С4 — к транзи­стору VT1 и излучающему диоду VD1.

Коды программы, которую необходи­мо занести во FLASH-память МК можно скачать в нашем архиве. Она разработана на базе программы [1], в которую внесены существенные изменения, коснувшиеся в основном порядка опроса состояния кно­пок и их числа. Кроме того, таблица команд перенесена из начала занимаемо­го программой блока памяти в его конец. Теперь она состоит из трех (по числу "рас­кладок") отдельных таблиц, а из кодов команд удалены стартовые разряды, под­программа передачи команд формирует их автоматически. Предусмотрено пере­ключение "раскладок" нажатиями на одну из кнопок, а также блокировка неисполь­зуемых кнопок (в оригинале при нажатии на такую кнопку передавался "мусор")

 

Начальный

адрес

строки

Код (позиционное обозначение) нажатой кнопки при низком

уровне на входе

И низком

уровне

на

выходе

| | PB2 PB3 PB4 PB5 PB6 PB7
6C0 00

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)
---------
6C8

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)

FF

(нет)
---------
6D0

FF

(нет)

FF

(нет)

23

(SB36)

1D

(SB30)

17

(SB24)

11

(SB18)

0B

(SB12)

05

(SB6)

PD2
6D8

FF

(нет)

FF

(нет)

20

(SB33)

1A

(SB27)

14

(SB21)

0E

(SB15)

08

(SB9)

02

(SB3)

PD3
6E0

FF

(нет)

FF

(нет)

22

(SB35)

1C

(SB29)

16

(SB23)

10

(SB17)

0A

(SB11)

04

(SB5)

PD4
6E8

FF

(нет)

FF

(нет)

1F

(SB32)

19

(SB26)

13

(SB20)

0D

(SB14)

07

(SB8)

01

(SB2)

PD5
6F0

FF

(нет)

FF

(нет) 

21

(SB34)

1B

(SB28)

15

(SB22)

0F

(SB16)

09

(SB10)

03

(SB4)

PD6
6F8

FF

(нет)

FF

(нет)

1E

(SB31)

18

(SB25)

12

(SB19)

0C

(SB13)

06

(SB7)

00

(SB1)

PD7

Таблица №3

Обнаружив, что кнопка нажата, про­грамма определяет ее условный код К по таблице, занимающей в памяти МК область 6С0Н—6FFH. Ее организацию иллюстрирует табл. 3, адреса и коды в которой — шестнадцатиричные. Напри­мер, при нажатой кнопке SB21 програм­ма определит, что низкий логический уровень присутствует на входе РВ4, если он установлен на выходе PD3 (именно они соединены замкнутыми контактами кнопки), и выдаст для дальнейшей обра­ботки код 14Н (20 дес).

Обратите внимание, что значения кодов кнопок в таблице на единицу мень­ше их позиционных номеров на схеме. Но это вовсе не обязательно, каждой кнопке по желанию программиста может быть присвоен любой код в интервале 0—23Н (0—35 дес). Это удобно, если для изго­товления ПДУ применяется готовая кно­почная панель, в которой кнопки соедине­ны не так, как показано на рис. 1 (это сое­динение использовано в ПДУ от телевизоpa "Горизонт"). Если какая-либо кнопка отсутствует или ее требуется заблокиро­вать, в соответствующей ячейке памяти можно записать код 0FFH. Обнаружив его, программа проигнорирует нажатие и не станет формировать команду. Нулевой код в начальной ячейке таблицы необхо­дим для правильной работы программы и не соответствует никакой кнопке.

Определив код нажатой кнопки К, программа вычисляет адрес соответ­ствующей ей двухбайтной группы ячеек в таблице "раскладки" команд по кноп­кам, пользуясь для этого формулой

А1 = Анач + 2К,

где Анач — начальный адрес таблицы "раскладки"; А1 — адрес первого байта группы, адрес второго байта на единицу больше. В первом байте записан код системы (устройства, которому адресо­вана команда), во втором — код соб­ственно команды. Принятые в протоко­ле RC-5 коды систем и команд приведе­ны соответственно в табл. 4 и табл. 5. Это — сборные таблицы, составленные по данным из различной литературы, Интернета и исходя из собственного опыта. К сожалению, разработчик про­токола RC-5 (фирма Philips) предпочи­тает не публиковать подобную инфор­мацию. Подробнее с протоколом RC-5 можно ознакомиться, например, в [2].

Код (HEX) Система
0 Телевизор 1
1 Телевизор 2
2 Телетекст
3 Видеоданные
4 Видеопроигрыватель (VLP)
5 Кассетный видеомагнитофон 1
6 Кассетный видеомагнитофон 2
8 Спутниковый видеотюнер 1
9

Видеокамера, в том числе для

видеонаблюдения

0A Спутниковый видеотюнер 2
0C

Проигрыватель VIDEO-CD

0D

Видеокамера с записывающим устройством

10 Усилитель ЗЧ 1
11 tv-тюнер для ноутбуков
12 Магнитофон
13 Усилитель ЗЧ 2
14 Проигрыватель AUDIO-CD
15 Проигрыватель (LP)
17 Цифровой магнитофон
1D Освещение 1
1E Освещение 2
1F Телефон

Таблица №4

Пример таблицы "раскладки" с началь­ным адресом 7В0Н показан в табл. 6 (адреса и коды — шестнадцатиричные). Именно она действует по умолчанию после включения питания ПДУ. Для боль­шинства кнопок указан код системы 14 — проигрывателя аудио-CD, неиспользуе­мые кнопки отмечены кодом системы 0FFH, а кнопка с условным кодом 21Н (SB34 согласно табл. 3) — кодом системы 0AAH. Последнее означает, что нажатия­ми на эту кнопку переключают "расклад­ки". Коды команд в этих случаях не тре­буются, соответствующие им байты могут иметь произвольные значения.

Всего в программе предусмотрены три разные таблицы "раскладок": для управления проигрывателем аудио-CD (начальный адрес 7В0Н, цвет свечения светодиода HL1 — зеленый), для управления телевизором (начальный адрес 760Н, цвет — красный) и для управления кассет­ным видеомагнитофоном (начальный адрес 71 ОН, цвет — желтый). Нужно ска­зать, что в любой "раскладке" разные кнопки могут быть запрограммированы на управление разными системами. Для этого достаточно занести в соответствую­щие байты необходимые коды систем. Но для перехода от одной таблицы к другой (по кольцу) во всех трех случаях должна быть отведена одна и та же кнопка. Это — обязательное условие, иначе программа нормально работать не будет.

Таблицы можно откорректировать, загрузив коды программы (см. табл. 2) в какую-либо программу управления про­грамматором. Она может быть и не рассчитанной на работу с МК ATtiny28, достаточно указать любой с объемом FLASH-памяти не менее 2 КБайт. Годит­ся, например, программа PonyProg.

Изменяя коды в таблицах, исполняе­мую программу МК, хранящуюся в области 0—162Н, трогать нельзя. Отредактированный образ FLASH-па­мяти МК записывают в НЕХ-файл, кото­рый в дальнейшем используют для про­граммирования микросхемы. Вла­деющим простейшими приемами рабо­ты с ассемблером будет удобнее внести изменения в исходный текст програм­мы, а затем повторить ее трансляцию.

Для загрузки в память МК ATtiny28 программных кодов обычные "последо­вательные" программаторы (AVRISP, STK200, STK300), к сожалению, не подхо­дят. Необходим "параллельный", напри­мер, описанный в [3]. EEPROM в данном МК отсутствует, а в конфигурационный байт следует занести значение 0BH или 0CH, если используются кнопки с продолжительным дребезгом, либо 0DH или 0EH, если кнопки хорошего качества.

 

 

7B0 14 0C 7D8 14 10
7B2 FF 00 7DA FF 00
7B4 14 2D 7DC 14 21
7B6 14 01 7DE FF 00
7B8 14 02 7E0 14 33
7BA 14 03 7E2 FF 00
7BC 14 04 7E4 14 32
7BE 14 05 7E6 14 30
7C0 14 06 7E8 14 36
7C2 14 07 7EA 14 35
7C4 14 08 7EC 14 0F
7C6 14 09 7EE FF 00
7C8 14 00 7F0 14 0B
7CA FF 00 7F2 AA 00
7CC 14 0A 7F4 FF 00
7CE FF 00 7F6 FF 00
7D0 14 20 7F8 FF FF
7D2 FF 00 7FA FF FF
7D4 14 11 7FC FF FF
7D6 14 35 7FE FF FF

Таблица №6

ПДУ собран в корпусе аналогичного пульта для телевизора "Горизонт". Декоративная накладка распечатана на принтере, ламинирована с двух сторон и приклеена к верхней панели корпуса клеем "Момент". Упругость накладки позволяет нажимать на кнопки сквозь нее.

Безошибочно собранный ПДУ начина­ет работать сразу же после установки элементов питания. Но иногда, обычно после замены элементов, этого не проис­ходит. Дело в том, что за короткое время замены оксидные конденсаторы С1, С4 не успевают в достаточной мере разрядить­ся, в результате чего не формируется сиг­нал установки МК в исходное состояние. Применять для гарантированного форми­рования этого сигнала какие-либо допол­нительные цепи я считаю нецелесообраз­ным — это может ухудшить экономич­ность прибора. Достаточно после извле­чения отработавших свое гальванических элементов кратковременно замкнуть пинцетом контакты, к которым они были под­ключены. Этого достаточно для разрядки конденсаторов. Теперь можно устанавли­вать свежие элементы.

ЛИТЕРАТУРА

1. AVR415: RC5 IR Remote Control Transmitter. http://www.atmel.com/dyn/resources/prod_documents/doc2534.pdf

2. Ридико Л. Применение кода RC-5.

3. Лузянин В. Простой "параллельный" программатор для AVR. — Радио, 2007, № 4, с. 27-30.

Источник: Радио№10, 2007 г., автор В. Лузянин, г. Кирово-Чепецк, Кировской обл.

Файлы:
Дата 20.01.2010 Размер файла 8.31 KB Закачек 1346

Комментарии  

0 #1 FliM 19.04.2010 22:29
а он выключает и включает любые телевизоры???
Сообщить модератору
0 #2 AntonChip 19.04.2010 23:02
Бытовые приборы управляемые по протоколу RC-5, в основном фирмы Philips
Сообщить модератору

Рекомендуем посмотреть