Применение кода RC-5


         

была разработана фирмой Philips



Система инфракрасного дистанционного управления RC- 5 была разработана фирмой Philips для нужд управления бытовой аппаратурой. Когда мы нажимаем кнопку пульта, микросхема передатчика активизируется и генерирует последовательность импульсов, которые имеют заполнение частотой 36 КГц. Светодиоды преобразуют эти сигналы в ИК-излучение. Излученный сигнал принимается фотодиодом, который снова преобразует ИК-излучение в электрические импульсы. Эти импульсы усиливаются и демодулируются микросхемой приемника. Затем они подаются на декодер. Декодирование обычно осуществляется программно с помощью микроконтроллера. Код RC5 поддерживает 2048 команд. Эти команды составляют 32 группы (системы) по 64 команды в каждой. Каждая система используется для управления определенным устройством, таким как телевизор, видеомагнитофон и т.д.

Одной из наиболее распространенных микросхем передатчика является микросхема SAA3010. Кратко рассмотрим ее характеристики.
  • Напряжение питания – 2...7 В
  • Потребляемый ток в ждущем режиме – не более 10 мка
  • Максимальный выходной ток - ±10 мА
  • Максимальная тактовая частота – 450 КГц
Структурная схема микросхемы SAA3010 показана на рисунке 1.



Рисунок 1. Структурная схема ИС SAA3010.

Описание выводов микросхемы SAA3010 приведено в таблице:

Вывод Обозначение Функция
1 X7 Входные линии матрицы кнопок
2 SSM Вход выбора режима работы
3-6 Z0-Z3 Входные линии матрицы кнопок
7 MDATA Модулированные выходные данные
8 DATA Выходные данные
9-13 DR7-DR3 Выходы сканирования
14 VSS Земля
15-17 DR2-DR0 Выходы сканирования
18 OSC Вход генератора
19 TP2 Тестовый вход 2
20 TP1 Тестовый вход 1
21-27 X0-X6 Входные линии матрицы кнопок
28 VDD Напряжение питания
Микросхема передатчика является основой пульта дистанционного управления. На практике один и тот же пульт дистанционного управления может использоваться для управления несколькими устройствами. Микросхема передатчика может адресовать 32 системы в двух различных режимах: комбинированном и в режиме одной системы. В комбинированном режиме сначала выбирается система, а затем команда. Номер выбранной системы (адресный код) хранится в специальном регистре и происходит передача команды, относящейся к этой системе. Таким образом, для передачи любой команды требуется последовательное нажатие двух кнопок. Это не совсем удобно и оправдано только при работе одновременно с большим количеством систем. На практике передатчик чаще используется в режиме одной системы. При этом вместо матрицы кнопок выбора системы монтируется перемычка, которая и определяет номер системы. В этом режиме для передачи любой команды требуется нажатие только одной кнопки. Применив переключатель, можно работать с несколькими системами. И в этом случае для передачи команды требуется нажатие только одной кнопки. Передаваемая команда будет относится к той системе, которая в данное время выбрана с помощью переключателя.

Для включения комбинированного режима на вывод передатчика SSM (Single System Mode) нужно подать низкий уровень. В этом режиме микросхема передатчика работает следующим образом: во время покоя X и Z-линии передатчика находятся в состоянии высокого уровня с помощью внутренних p-канальных подтягивающих транзисторов. Когда нажата кнопка в матрице X-DR или Z-DR, запускается цикл подавления дребезга клавиатуры. Если кнопка замкнута на протяжении 18 тактов, фиксируется сигнал "разрешение генератора". В конце цикла подавления дребезга DR-выходы выключаются и запускаются два цикла сканирования, включающие по очереди каждый выход DR. В первом цикле сканирования обнаруживается Z-адрес, во втором - X-адрес. Когда Z-вход (матрица системы) или X-вход (матрица команды) обнаруживается в состоянии нуля, происходит фиксация адреса. При нажатии кнопки в матрице системы передается последняя команда (т.е. все биты команды равны единице) в выбираемой сиcтеме. Эта команда передается до тех пор, пока кнопка выбора системы не будет отпущена. При нажатии кнопки в матрице команды передается команда вместе с адресом системы, хранимом в регистре-фиксаторе. Если кнопка отпущена до начала передачи, происходит сброс. Если же передача началась, то независимо от состояния кнопки, она будет выполнена полностью. Если одновременно нажато более одной Z или X кнопки, то генератор не запускается.

Для включения режима одной системы на выводе SSM должен быть высокий уровень, а адрес системы должен быть задан соответствующей перемычкой или переключателем. В этом режиме во время покоя X-линии передатчика находятся в состоянии высокого уровня. В то же время Z-линии выключены для предотвращения потребления тока. В первом из двух циклов сканирования определяется адрес системы и сохраняется в регистре-фиксаторе. Во втором цикле определяется номер команды. Эта команда передается вместе с адресом системы, хранимом в регистре-фиксаторе. Если нет перемычки Z-DR, то никакие коды не передаются.

Если кнопка была отпущена между посылками кода, то происходит сброс. Если кнопка была отпущена во время процедуры подавления дребезга или во время сканирования матрицы, но до обнаружения нажатия кнопки, то также происходит сброс. Выходы DR0 – DR7 имеют открытый сток, в состоянии покоя транзисторы открыты.

В коде RC-5 имеется дополнительный управляющий бит, который инвертируется при каждом отпускании кнопки. Этот бит информирует декодер о том, удерживается кнопка или произошло новое нажатие. Бит управления инвертируется только после полностью завершенной посылки. Циклы сканирования производятся перед каждой посылкой, поэтому даже если во время передачи посылки сменить нажатую кнопку на другую, все равно номер системы и команды будут переданы правильно.

Вывод OSC представляет собой вход/выход 1-выводного генератора и предназначен для подключения керамического резонатора на частоту 432 КГц. Последовательно с резонатором рекомендуется включть резистор сопротивлением 6,8 Ком.

Тестовые входы TP1 и TP2 в нормальном режиме работы должны быть соединены с землей. При высоком логическом уровне на TP1 повышается частота сканирования, а при высоком уровне на TP2 – частота работы сдвигового регистра.

В состоянии покоя выходы DATA и MDATA находятся в Z-состоянии. Генерируемая передатчиком на выходе MDATA последовательность импульсов имеет заполнение частотой 36 кГц (1/12 частоты тактового генератора) со скважностью 25%. На выходе DATA генерируется такая же последовательность, но без заполнения. Этот выход используется в том случае, когда микросхема передатчика выполняет функции контроллера встроенной клавиатуры. Сигнал на выходе DATA полностью идентичен сигналу на выходе микросхемы приемника дистанционного управления (но в отличие от приемника он не имеет инверсии). Оба этих сигнала могут обрабатываться одним и тем же декодером. Применение SAA3010 в качестве контроллера встроенной клавиатуры в некоторых случаях очень удобно, так как для опроса матрицы до 64 кнопок у микроконтроллера расходуется только один вход прерывания. Тем более, что микросхема передатчика допускает питание напряжением +5 В.

Передатчик генерирует 14-битное слово данных, формат которого следующий:
  • 2 стартовых бита.
  • 1 управляющий бит.
  • 5 бит адреса системы.
  • 6 бит команды.




Рисунок 2. Формат слова данных кода RC-5.

Стартовые биты предназначены для установки АРУ в IC приемника. Управляющий бит является признаком нового нажатия. Длительность такта составляет 1.778 мс. Пока кнопка остается нажатой, слово данных передается с интервалом 64 такта, т.е. 113.778 мс (рис. 2). Для обеспечения хорошей помехоустойчивости применяется двухфазное кодирование (рис. 3).



Рисунок 3. Кодирование «0» и «1» в коде RC-5.

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



Рисунок 4. Подробная структура посылки RC-5.

Для обеспечения одинакового реагирования оборудования на команды RC-5, коды распределены вполне определенным образом. Такая стандартизация позволяет конструировать передатчики, позволяющие управлять различными устройствами. С одними и теми же кодами команд для одинаковых функций в разных устройствах передатчик с относительно небольшим числом кнопок может управлять одновременно, например, аудиокомплексом, телевизором и видеомагнитофоном.

Номера систем для некоторых видов бытовой аппаратуры приведены ниже:
0 - Телевизор (TV)
2 - Телетекст
3 - Видеоданные
4 - Видеопроигрыватель (VLP)
5 - Кассетный видеомагнитофон (VCR)
8 - Видео тюнер (Sat.TV)
9 - Видеокамера
16 - Аудио предусилитель
17 - Тюнер
18 - Магнитофон
20 - Компакт-проигрыватель (CD)
21 - Проигрыватель (LP)
29 - ОсвещениеОстальные номера систем зарезервированы для будущей стандартизации или для экспериментального использования. Стандартизировано также соответствие некоторых кодов команд и функций.
Коды команд для некоторых функций приведены ниже:
0-9 - Цифровые величины 0-9
12 - Дежурный режим
15 - Дисплей
13 - mute
16 - громкость +
17 - громкость -
30 - поиск вперед
31 - поиск назад
45 - выброс
48 - пауза
50 - перемотка назад
51 - перемотка вперед
53 - воспроизведение
54 – стоп
55 - записьДля того, чтобы на основе микросхемы передатчика построить законченный пульт ИК ДУ, необходим еще драйвер светодиода, который способен обеспечивать большой импульсный ток. Современные светодиоды работают в пультах ДУ при импульсных токах около 1 А. Драйвер светодиода очень удобно строить на низкопороговом (logic level) МОП-транзисторе, например, КП505А. Пример принципиальной схемы пульта приведен на рис. 5.



Рисунок 5. Принципиальная схема пульта RC-5.

Номер системы задается перемычкой между выводами Zi и DRj. Номер системы при этом будет следующим:

SYS = 8i + j

Код команды, который будет передаваться при нажатии кнопки, которая замыкает линию Xi с линией DRj, вычисляется следующим образом:

COM = 8i + j

Приемник ИК ДУ должен восстанавливать данные с двухфазным кодированием, он должен реагировать на большие быстрые изменения уровня сигнала независимо от помех. Ширина импульсов на выходе приемника должна отличаться от номинальной не более чем на 10%. Приемник должен быть нечувствительным к постоянным внешним засветкам. Удовлетворить всем этим требованиям достаточно непросто. Старые реализации приемника ИК ДУ, даже с применением специализированных микросхем, содержали десятки компонентов. Такие приемники часто использовали резонансные контуры, настроенные на частоту 36 КГц. Все это делало конструкцию сложной в изготовлении и настройке, требовало применения хорошего экранирования. В последнее время большое распространение получили трехвыводные интегральные приемники ИК ДУ. В одном корпусе они объединяют фотодиод, предусилитель и формирователь. На выходе формируется обычный ТТЛ сигнал без заполнения 36 КГц, пригодный для дальнейшей обработки микроконтроллером. Такие приемники производятся многими фирмами, это SFH-506 фирмы Siemens, TFMS5360 фирмы Temic, ILM5360 производства ПО «Интеграл» и другие. В настоящее время имеются и более миниатюрные варианты таких микросхем. Поскольку кроме RC-5 существуют и другие стандарты, которые отличаются, в частности, частотой заполнения, существуют интегральные приемники для разных частот. Для работы с кодом RC-5 следует выбирать модели, рассчитанные на частоту заполнения 36 КГц. Интегральные приемники весьма чувствительны к помехам по питанию, поэтому всегда рекомендуется применять фильтры, например, RC. Внешний вид интегрального фотоприемника и расположение выводов показаны на рис. 6.



Рисунок 6. Интегральный приемник RC-5.

В качестве приемника ИК ДУ можно применить и фотодиод с усилителем-формирователем, в качестве которого может служить специализированная микросхема КР1568ХЛ2. Схема такого приемника приведена на рисунке 7.



Рисунок 7. Приемник на микросхеме КР1568ХЛ2.

Декодирование кода RC-5 можно осуществить программно. Простой пример программного декодера для микроконтроллеров семейства MCS-51 приведен ниже.

Инвертированный код RC-5 подключается ко входу прерывания INT0 (или INT1 при условии соответствующей коррекции программы). Подпрограмма обслуживания прерывания производит декодирование кода и сравнение номера системы с заданным. В случае корректного кода и совпадения номера системы она помещает биты команды и бит управления в регистр R7 банка 3 (непосредственный адрес 1FH). В случае некорректного кода содержимое регистра R7 не изменяется. Для удобства код команды перекодируется по таблице размером 64 байта, начало которой должна быть расположено на метке RCTAB. Формат данных в регистре R7 следующий:
R7 = Х.С.D5.D4.D3.D2.D1.D0
D0-D5 - командные биты кода RC5
C - бит управления
Х - значение подпрограммой не изменяется.
Этот бит удобно использовать как бит управления для местной клавиатуры.Программа использует регистровый банк 3. Другие регистры не изменяются.

Принцип декодирования основан на измерении временных интервалов между переходами входного сигнала. Первый стартовый бит не измеряется. Код RC5 принимается, если соблюдаются следующие условия:

(890-25%)uS<Thigh(low)<(890+25%)uS или

(1780-25%)uS<Thigh(low)<(1780+25%)uS

Поскольку измерение временных интервалов происходит программно, код программы критичен к тактовой частоте. Поэтому необходимо определить константу CLK_KHZ, которая используется транслятором при вычислении значений для временных задержек. Значение CLK_KHZ может лежать в пределах 4000 .. 24000 КГц. Определения: SYS .EQU 000H ;Номер системы CLK_KHZ = 12000 ;Тактовая частота 12 МГц RC5_DF .EQU B.0 ;Флаг данных RC5_PF .EQU B.1 ;Флаг периода RC5_N =(1+2*(CLK_KHZ/188))/2 RC5_N1 =(1+2*(CLK_KHZ/249))/2 RC5_N2 =(1+2*(CLK_KHZ/382))/2 RC5_NT =(1+2*(CLK_KHZ/135))/2 Вектора: ORG 0000H ;Вектор сброса LJMP INIT ORG 0003H ;Вектор прерывания INT0 LJMP RC5 Инициализация системы прерываний: SETB PX0 ;Высокий приоритет INT0 STB IT0 ;Прерывание INT0 по переходу SETB EX0 ;Разрешение INT0 SETB EA ;Общее разрешение прерываний Основная программа: LOOP: ;анализ кода в ячейке ОЗУ 1FH SJMP LOOP Подпрограмма обслуживания прерывания: RC5: PUSH PSW ;Сохранение PSW PUSH ACC ;Сохранение аккумулятора PUSH B ;Сохранение регистра B SETB RS0 ;Включение регистрового банка 3 SETB RS1 MOV R6,DPH ;Сохранение DPTR MOV R5,DPL MOV B,#2 ;Установка флагов MOV R2,#2 ;Инициализация байта системы для принятия 7 бит MOV R3,#4 ;Инициализация байта команды для принятия 6 бит MOV R0,#R32 ;Загруска адреса регистра R2 в банке 3 MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс WLOW: JB SER,WHIGH ;Ожидание единицы на входе MOV R4,#16 DJNZ R4,$ DJNZ R1,WLOW SJMP NORC5 ;Ошибка, истек тайм-аут WHIGH: MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс SAMPLE: MOV R4,#8 ;Точки входа в цикл SAM1 .. SAM3 предназначены DJNZ R4,$ ;для выравнивания времени выполнения различных веток SAM1: MOV R4,#3 DJNZ R4,$ MOV R4,#2 DJNZ R4,$ SAM3: MOV C,SER ;Опрос входа MOV ACC.0,C XRL A,B JNB ACC.0,TRANS ;Ожидание изменения состояния DJNZ R1,SAMPLE SJMP NORC5 ;Ошибка, истек тайм-аут TRANS: CPL RC5_DF ;Изменение состояния входа обнаружено MOV A,R1 ADD A,#-RC5_N1 JC NORC5 ;Ошибка, время <577.5uS MOV A,R1 ADD A,#-RC5_N2 JC TRANS1 JB RC5_PF,NORC5 ;Ошибка, время >1200uS SJMP STDATA TRANS1: CPL RC5_PF ;Инвертирование флага периода MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс JB RC5_PF,SAM1 ;Прием бита не завершен, переход на опрос STDATA: MOV C,RC5_DF MOV A,@R0 RLC A ;Сохранение бита данных MOV @R0,A MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс JNC SAM2 ;Прием системы не завершен, переход на опрос INC R0 ;Система принята, начало приема команды MOV A,R0 MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс JNB ACC.2,SAM3 ;Прием команды не завершен, переход на опрос MOV R1,#RC5_N ;Загрузка величины тайм-аута 2362 мкс WLW: JB SER,TRM ;Последний бит, ожидание единицы на входе MOV R4,#16 DJNZ R4,$ DJNZ R1,WLW SJMP NORC5 ;Ошибка, истек тайм-аут TRM: MOV R1,#RC5_NT ;Загрузка величины тайм-аута 3000 мкс TERM: JNB SER,NORC5 ;Ошибка, если на входе обнаружен низкий уровень MOV R4,#16 DJNZ R4,$ DJNZ R1,TERM MOV A,R2 ;Номер системы и бит управления в R2 ANL A,#1FH ;Выделение номера системы CJNE A,#SYS,NORC5 ;Проверка номера системы MOV DPTR,#RCTAB ;Загрузка адреса таблицы MOV A,R3 ;Загрузка кода команды MOVC A,@A+DPTR ;Перекодировка MOV R3,A ;Сохранение нового кода MOV A,R2 ;Номер системы и бит управления в R2 ANL A,#20H ;Выделение бита управления RL A RL A ;Сдвиг бита управления в разряд D7 ORL A,R3 ;Совмещение кода команды и бита управления MOV R3,A ;Сохранение результата MOV A,R7 ANL A,#40H ;Выделение бита управления местной клавиатуры ORL A,R3 ;Совмещение кода команды и битов управление MOV R7,A ;Сохранение результата NORC5: CLR IE0 ;Очистка флага прерывания MOV DPL,R5 ;Восстановление DPTR MOV DPH,R6 POP B ;Восстановление регистра B POP ACC ;Восстановление аккумулятора POP PSW ;Восстановление PSW RETI ;Возврат из обработчика прерывания Программный декодер RC-5 оформлен в виде библиотеки Librc5.asm: librc5.zip (1.2 Kb).

Ридико Леонид Иванович
e-mail: wubblick@yahoo.com
Полную версию этой статьи можно найти
в журнале "Схемотехника" (http://www.spetspribor.com/support/articles/rc5/www.dian.ru),
№ 1, 2 за 2001 год.

Содержание  Назад  Вперед