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

В радиолюбительской практике для дистанционного управления чаще всего применяется протокол Philips RC-5, видимо это связано с доступностью микросхем для обработки этого протокола и с доступностью его описания. Этот протокол применяют радиолюбители не только нашей страны, но и ближнего и дальнего зарубежья. Даже такой производитель контроллеров как Atmel предлагает уже готовые алгоритмы для кодирования и декодирования этого протокола в своих контроллерах [1,2]. Этот протокол еще интересен тем, что он четко стандартизирован, к примеру, ПДУ от одного телевизора можно управлять другим телевизором. Хотя некоторые производители слегка отклоняются от этого стандарта, используя свободные команды для своего оборудования, и не каждым ПДУ можно добраться до всех тонкостей настроек другого телевизора.

Предлагаемый ПДУ можно программировать и перепрограммировать под свое желание, но только под протокол RC-5. Так же этот ПДУ можно запрограммировать для несколько устройств использовав 3 раскладки клавиатуры, и переключением только одной кнопкой выбирать чем можно управлять, а так же по желанию можно в одной раскладке клавиатуры управлять разными устройствами закодированные под своими кнопками.

За основу пульта ДУ был выбран контроллер от Atmel ATtiny28V, который приспособлен конкретно для изготовления и производства ПДУ. Этот контроллер отличает от других то, что в нем имеется так называемое низко-уровневое (low level) прерывание, т.е. при появлении “нулевого” состояния на любом из входов порта B (PB0-PB7), которые внутренними резисторами подтянуты в “единичное” состояние, происходит генерация прерывания. Т.е. при нажатии на любую кнопку на клавиатуре можно “разбудить” контроллер из “спящего” состояния. Чтобы такое сделать в других контроллерах (по крайней мере в большинстве), надо через диоды организовать подачу изменения положения кнопок на входы внешнего прерывания INT0…1…2.. и т.д.. Так же спецификой этого контроллера является внутренний аппаратный модулятор для модуляции передающих импульсов на выводе PA2.

Схема ПДУ показана на рис.1 . Использовать микросхему нужно только с буквой ”V”, так как с этой буквой контроллер может работать даже при питании 1,8В, цоколевка дана для корпуса TQFP32, можно использовать микросхему в корпусе DIP28 соответственно при измененной цоколевке. Вывод сброса через резистор R1 дополнительно к внутреннему резистору подтянут к питанию Vcc. Керамический резонатор применять только на 455кГц, т.к. все внутренние настройки, таймеры, а так же частота модуляции 38кГц привязана именно к нему. Конденсаторы с резонатора на “землю” не поставлены, т.к. у этого контроллера есть свои, внутренние, емкостью около 50 пФ, что тоже упрощает схему.

Рис.1

Выводы PD2-PD7 в “спящем” состоянии программно имеют “нулевой” потенциал, а входы PB2-PB7 “подтянуты” внутренними резисторами, при нажатии на любую кнопку “0” с выхода попадает на вход. При этом контроллер “просыпается”, проверяет номер нажатой кнопки, обрабатывает программу передачи кодированного пакета импульсов, затем проверяет удержание кнопки и, если кнопка не удерживается, уходит в “отбой”. При удержании кнопки пакет импульсов через интервал 114мсек повторяется. Импульсы передачи снимаются с выхода PA2 и через ключ VT1 поступают на ИФК светодиод. Резистор R6 ограничивает ток на уровне 0.15А, если нужна бОльшая дальность, и ИФК светодиод позволяет, можно уменьшением R6 увеличить ток до 0.5А, при этом емкость конденсатора С4 нужно увеличить. Конденсатор С1 “улучшает” фронты сигнала более быстрой перезарядкой емкости база-эмиттер транзистора. Конденсаторы С2 и С3 должны находиться как можно ближе к контроллеру, а С4 к VT1 и HL2. Питание осуществляется от двух гальванических элементов 316 (АА). HL1 индицирует какая раскладка клавиатуры в данный момент включена, R2 и R3 ограничивают ток через HL1 и подобраны по одинаковой яркости излучения. В ПДУ используются 3 раскладки клавиатуры, их индицируют цвета: зеленый, красный и желтый. Они светятся при передаче команд и при переключении клавиатуры.

За основу взята программа предложенная Atmel [1] но с существенными изменениями. Изменения коснулись порядка опроса кнопок и их количества, опрос начинается не с PD0 и PB0, а PD2 и PB2, линии PD0, PD1, PB0 и PB1 игнорируются, опрос производится матрицы 6х6=36 кнопок, в оригинале опрос производится всей возможной матрицы, т.е. 8х8=64, а работают только 3х8=24 кнопки. Таблица команд вынесена из начала программного диапазона памяти в конец. Используются вместо одной таблицы – три, по количеству раскладок. Также подверглась изменению сама таблица, в ней убраны стартовые биты, они перешли в алгоритм передачи пакета, и сейчас таблица разделяется на байты адресов обслуживаемой системы и на байты номеров команд. Можно выделить любую кнопку для переключения раскладок, а так же при неиспользуемых или заблокируемых кнопках передачи не производится, в оригинале передается “мусор”. Для удобства использования любого корпуса для ПДУ введена таблица векторов смещения кнопок. В данном случае использован корпус от ПДУ Горизонт, такие корпуса имели почти все телевизионные ПДУ Советских времен выпуска, в него возможно установить до 36 кнопок, 12 горизонталей на 3 вертикали.

Первая таблица команд начинается с адреса 7B0h во flash контроллера, см. таблицу №1 , ей принадлежит зеленое излучение HL1, эта же таблица включается при установке элементов питания. Вторая таблица начинается с адреса 760h, ей принадлежит красное излучение HL1, и последняя – третья таблица с адреса 710h, и соответственно излучение желтое.

Таблица1

Каждой кнопке соответствует 2 байта в таблице, т.е. 1 слово. Кнопке №1 будут соответствовать по 2 байта с начала таблиц адреса 7B0h, 7B1h в первой таблице, 760h, 761h во второй и 710h, 711h в третьей, кнопке №2 соответствующее смещение через 2 байта – 7B2h, 7B3h, 762h, 763h и 712h, 713h. И так по порядку до конца. Последней кнопке под №36 будет соответствовать адреса со смещением 70 (46h) (т.е. 36-1=35, т.к. нумерация кнопок с 1, а программа отсчитывает с 0, х 1слово(2байта)=70) 7F6h, 7F7h, 7A6h, 7A7h и 756h, 757h. В первом байте находится адрес обращаемой системы, например 0 – телевизор, 5 – видеомагнитофон, во втором байте слова номер команды, которая должна выполниться при нажатии кнопки. При перепрограммировании нужно учесть: если первый байт из слова = FFh – это значит что кнопка отсутствует (можно использовать не все кнопки) или заблокирована в данной раскладке, а если первый байт = AAh – значит этой кнопкой переключаются раскладки клавиатуры, при их переключении светится соответственный цвет HL1, эта команда должна обязательно находиться во всех раскладках под одной кнопкой, если случайно ее пропустить то дальнейшего переключения не произойдет. Если первый байт равен FFh или AAh то второй байт игнорируется. Чтобы эти таблицы соответствовали порядку подсчета кнопок введена еще одна таблица - вектора смещения кнопок. Эта таблица начинается с адреса 6C0h и заканчивается 6FFh. Кнопка №1 (PD7, PB7), вектор со смещением 0 находится в конце 64-байтной таблицы 6FFh (подразумевая полный опрос клавиатуры 8х8, где PD0, PB0 располагаются в самом начале 6C0h, обозначены как 00, хотя и не используется). Сначала опрашивается линия PD7, и соответственно принадлежащие ей все кнопки располагаются в первую очередь, только в обратном порядке, PD7, PB6, будут находится по адресу 6FEh, ей принадлежит кнопка № 7 с вектором смещения 6. Вектора смещения соответствуют номерам кнопок с вычетом 1. FFh означает неиспользованное смещение, т.е. такая кнопка не обрабатывается. Таблица векторов смещения построена так чтобы счет кнопок был такой как показано на схеме. Это сделано для того чтобы легче подсчитать номер кнопки при ее программировании в таблицах. Если использовать другой корпус пульта или в этом корпусе сделать другое расположение горизонталей и вертикалей (они даже могут быть поменяны местами, т.е. где шина PB может находится шина PD и наоборот) можно для удобства подсчета кнопок таблицу смещения переделать. Таблицы можно изменить в любом BIN- редакторе или в программе программатора к примеру популярного PonyProg2000, выбрав другую микросхему в флешем в 2 КБайта, затем сохранить полученый файл. При этом саму программу с адреса 0 по адрес 162h изменять нельзя. Но проще и удобнее это сделать в исходнике программы в файле RC5 IR Code.asm, в нем находятся только таблицы со всеми комментариями, затем в AVR Studio заново компилировать, и уже полученый hex файл записать в микросхему. Для этого надо в AVR Studio открыть новый проект под именем RC5 IR Transmiter, открыть соответствующий файл и файл RC5 IR Code.asm.

Для программирования ATtiny28V использовался “параллельный” программатор [3], т.к. этот контроллер не поддерживает последовательное программирование, поэтому популярные AVRISP, STK200, STK300 для этой цели не подходят. В том числе не подходит такая программа как PonyProg2000. Записывать нужно только flash, т.к. eeprom в данном контроллере отсутствует. Конфигурационный байт: 0Bh или 0Ch если кнопки не очень хорошие по качеству (с большим дребезгом), 0Dh или 0Eh при использовании качественных кнопок. Но при программировании конфигурационных ячеек надо быть осторожным, дело в том что в предлагаемой программе программатора используется байтные и битовые значения, если программировать другим программатором, где нужно вводить галочки будет все наоборот, при записи “0” нужно ставить галочку, а при записи “1” ее убирать, такое требование Atmel. В данной программе первая раскладка используется CD-аудио проигрывателем, вторая – телевизором и третья видеомагнитофоном. Чтобы проще было программировать в таблице №2 приведены стандартные адреса управляемых систем, а в таблице №3- команды протокола RC-5. Все номера даны в десятичном виде. Это сборные таблицы, которые составлены из различной литературы, интернета и собственного опыта, т.к. Philips полностью их не выкладывает для общего пользования. Поэтому 100% гарантии правильности этих таблиц нет, так что возможны некоторые отличия. О самом протоколе можно ознакомиться в [4].
0 Телевизор 1
1 Телевизор 2
2 Телетекст
3 Видеоданные
4 Видеопроигрыватель (VLP)
5 Кассетный видеомагнитофон 1
6 Кассетный видеомагнитофон 2
8 Спутниковый видеотюнер 1
9 Видеокамера (любая, в т.ч. видеонаблюдение)
10 Спутниковый видеотюнер 2
12 Проигрыватель видео-CD
13 Видеокамера (только с устройством записи)
16 Аудио усилитель 1
17 Тюнер
18 Магнитофон
19 Аудио усилитель 2
20 Проигрыватель компакт-дисков (CD)
21 Проигрыватель (LP)
23 Цифровой магнитофон
29 Освещение 1
30 Освещение 2
31 Телефон

Таблица2: Стандартные системные адреса RC-5


0 - цифра 0 (канал 0 TV) 20 - Цветность +
1 - цифра 1 (канал 1 TV) 21 - Цветность -
2 - цифра 2 (канал 2 TV) 24 - Насыщенность +
3 - цифра 3 (канал 3 TV) 25 - Насыщенность -
4 - цифра 4 (канал 4 TV) 28 - Контрастность +
5 - цифра 5 (канал 5 TV) 29 - Контрастность -
6 - цифра 6 (канал 6 TV) 30 - Поиск вперед
7 - цифра 7 (канал 7 TV) 31 - Поиск назад
8 - цифра 8 (канал 8 TV) 32 - Канал +
9 - цифра 9 (канал 9 TV) 33 - Канал -
10 - переключение -/-- (одно-двузначные каналы) 38 - Включение
11 - Индикация канала 45 - Выброс лотка
12 - Выключение 48 - Пауза
13 - Приглушение (mute) 50 - Перемотка вперед
14 - Возврат к заводской настройке изображения (все уровни в центральное положение), вариант: переключение фиксированных настроек изображения 51 - Перемотка назад
15 - Вывод текущей информации на экран, вариант: вкл. таймера 53 - Воспроизведение
16 - Громкость + 54 - Стоп
17 - Громкость - 55 - Запись
18 - Яркость + 56 - вкл. AV-вход (видео)
19 - Яркость - 59 - Меню, вариант: переключение настроек изображения (яркость, контрастность, насыщенность, цветность - регулировка громкостью)
. 63 - вкл. TV-вход

Таблица 3: Стандартные команды RC-5

Печатная плата не разрабатывалась, были вытравлены только вертикали кнопок чтобы их можно было припаять, а также контактные площадки под детали и разъем, к которому подключалась микросхема см. рис.2.

Рис.2.

Контроллер с ZQ1, R1, C2 и C3 были установлены на отдельной платке с ответным разъемом рис.3 . С помощью этого разъема контроллер подключался или к программатору или к ПДУ.

Рис.3.

Кнопки по размеру вошли в отверстия корпуса, так что корпус переделывать не надо, выступы нажимной части должны немного выставляться из корпуса. Шильдик (cм. рис.4) размером 111 х 41мм. с наименованиями кнопок напечатан на принтере и ламинирован с обеих сторон, если пленки для ламинирования нет, можно воспользоваться широким скотчем, 2-3 слоя с каждой стороны.

Рис.4.

Шильдик приклеивается к корпусу клеем “Момент”. При такой конструкции в местах кнопок во время нажатии эластичный шильдик прогибается нажимая кнопку. Светодиод HL1 установлен вместо кнопки №2. Вид изнутри показан на рис.5, а ПДУ в сборе на рис.6.

Рис.5.

Рис.6.

Настройка и наладка: как говорится если все сделано правильно - должно работать. Может возникнуть только одна проблема: иногда, при смене элементов питания ПДУ может не заработать, это связано с тем, что в этом контроллере отсутствует внутренний сброс при снижении напряжения питания, а ставить внешний монитор питания нельзя, из-за соображения экономичности, и, если конденсаторы по питанию не полностью разрядились и их уровень напряжения был ниже 1.8В то контроллер может не включиться. Для этого надо вынуть элементы питания и закоротить пинцетом контакты их установки, т.е. разрядить конденсаторы по питанию.

Лузянин Виктор Алексеевич

18.11.2006г.
Здесь архив проекта

Литература:

1. http://nomacon.gaw.ru/pdf/Atmel/app/avr/AVR415.pdf

http://nomacon.gaw.ru/data/Atmel/avr/AVR415.zip

2. http://nomacon.gaw.ru/pdf/Atmel/app/avr/AVR410.pdf

http://nomacon.gaw.ru/data/Atmel/avr/avr410.zip

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

4. Ридико Л.И., Применение кода RC-5, Схемотехника 1-2001г. стр. 48-50 http://www.telesys.ru/projects/proj036/index.shtml



Hosted by uCoz