Предлагаемый ПДУ формирует команды в соответствии с распространенным протоколом 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 г., автор В. Лузянин, г. Кирово-Чепецк, Кировской обл.


Архив для статьи "Универсальный переключаемый пульт ДУ с протоколом RC-5"
Описание:
Размер файла: 8.31 KB Количество загрузок: 1 954 Скачать

Комментарии  

0 #1 FliM 19.04.2010 22:29
а он выключает и включает любые телевизоры???
Сообщить модератору
0 #2 AntonChip 19.04.2010 23:02
Бытовые приборы управляемые по протоколу RC-5, в основном фирмы Philips
Сообщить модератору
0 #3 Петя 12.02.2018 02:15
Да кому он нужен твой RC-5? Ни одно из известных мне устройств (кроме филипс) не работает по этому протоколу! Сделай нормальный пульт на атмеге8 (использовать обычный последовательны й программатор) например для деки техникс 373-979. Это будет польза!
Сообщить модератору