Применение кода RC-5 | ||||||||||||||||||||||||||||||||||||||||||
В настоящее время для управления различной аппаратурой очень широко используется дистанционное управление (ДУ) на ИК-лучах. Пожалуй, первым видом бытовой аппаратуры, где использовалось ИК ДУ, были телевизоры. Сейчас ДУ имеется в большинстве видов бытовой аудио- и видеотехники. Даже переносные музыкальные центры в последнее время все чаще оборудуют системой ДУ. Но бытовая техника это не единственная сфера применения ДУ. Довольно широко распространены приборы с ДУ и на производстве, и в научных лабораториях. В мире существует достаточно много не совместимых между собой систем ИК ДУ. Наибольшее распространение получила система RC-5. Эта система была разработана фирмой Philips и используется во многих телевизорах. Для построение пультов ДУ выпускается специализированная микросхема передатчика RC-5 типа SAA3010 (минское ПО «Интеграл» выпускает аналог с маркировкой INA3010). Применение специализированой микросхемы передатчика резко уменьшает необходимое количество компонентов, а в случае SMD монтажа позволяет разместить ИК передатчик в брелке небольшого размера. Кроме того, в таких микросхемах решен вопрос низкого потребления в режиме ожидания, что делает эксплуатацию пульта очень удобной: нет необходимости в отдельном выключателе питания. Схема переходит в активный режим при нажатии любой кнопки и возвращается в режим микропотребления при ее отпускании. Довольно сложной проблемой может оказаться изготовление собственного корпуса для пульта ДУ. Ситуация значительно упростится, если взять готовый пульт ДУ от серийного аппарата. В настоящее время разными производителями выпускается большое количество модификаций пультов ДУ RC-5, причем некоторые модели имеют вполне приличный дизайн. Это позволяет с небольшими затратами изготовить самодельное устройство с ИК ДУ. Достаточно лишь на стандартный пульт изготовить новую наклейку с нужными подписями кнопок. Такую наклейку удобно изготавливать на оборудовании GERBER-EDGE, которое распространено среди изготовителей наружной рекламы. Кроме многоцветной печати, это оборудование способно производить вырезку отверстий для кнопок и вырезку по внешнему контуру наклейки. Промышленные пульты, как правило, предназначены для управления телевизорами. Поэтому они используют систему 0 кода RC-5. Совсем несложно перейти на другой номер системы, и тогда взаимное влияние разных пультов будет исключено. Как уже было сказано выше, система инфракрасного дистанционного управления RC-5 была разработана фирмой Philips для нужд управления бытовой аппаратурой. Когда мы нажимаем кнопку пульта, микросхема передатчика активизируется и генерирует последовательность импульсов, которые имеют заполнение частотой 36 КГц. Светодиоды преобразуют эти сигналы в ИК-излучение. Излученный сигнал принимается фотодиодом, который снова преобразует ИК-излучение в электрические импульсы. Эти импульсы усиливаются и демодулируются микросхемой приемника. Затем они подаются на декодер. Декодирование обычно осуществляется программно с помощью микроконтроллера. Код RC5 поддерживает 2048 команд. Эти команды составляют 32 группы (системы) по 64 команды в каждой. Каждая система используется для управления определенным устройством, таким как телевизор, видеомагнитофон и т.д. Одной из наиболее распространенных микросхем передатчика является микросхема SAA3010. Кратко рассмотрим ее характеристики.
Рисунок 1. Структурная схема ИС SAA3010. Описание выводов микросхемы SAA3010 приведено в таблице:
Микросхема передатчика является основой пульта дистанционного управления. На практике один и тот же пульт дистанционного управления может использоваться для управления несколькими устройствами. Микросхема передатчика может адресовать 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. Формат слова данных кода 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)Остальные номера систем зарезервированы для будущей стандартизации или для экспериментального использования. Стандартизировано также соответствие некоторых кодов команд и функций. Коды команд для некоторых функций приведены ниже: 0-9 - Цифровые величины 0-9Для того, чтобы на основе микросхемы передатчика построить законченный пульт ИК ДУ, необходим еще драйвер светодиода, который способен обеспечивать большой импульсный ток. Современные светодиоды работают в пультах ДУ при импульсных токах около 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Программа использует регистровый банк 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. В качестве простого примера применения кода RC-5 можно рассмотреть контроллер дистанционного управления, который может быть встроен в самую разнообразную аппаратуру. В свое время он был использован для оборудования дистанционным управлением лазерного проигрывателя Pioneer PD-4500. Дело в том, что многими фирмами выпускается бытовая радиоаппаратура в разных вариантах комплектации. Иногда более дешевая модель просто не имеет в комплекте пульта ДУ. А иногда ДУ вовсе не предусмотрено, т.е. нет приемника, управляющий контроллер не имеет функций декодера. Но и такой аппарат можно оснастить системой ДУ. Самым простым методом сопряжения контроллера ДУ с незнакомым аппаратом является применение в качестве исполнительных устройств аналоговых ключей, которые подключаются параллельно кнопкам местного управления. Принципиальная схема такого устройства показана на рис. 8. Рисунок 8. Принципиальная схема контроллера ДУ. Сигнал с фотоприемника поступает на микроконтроллер U1 типа AT89C2051, который через дешифратор U2 управляет аналоговыми ключами. Дешифратор установлен с той целью, чтобы занимать меньше портов контроллера (они могут понадобится для реализации каких-нибудь дополнительных функций). К тому же, дешифратор предотвращает замыкание сразу всех ключей во время действия сигнала RESET, что имело бы место при непосредственном их подключении к портам микроконтроллера. Для питания использован отдельный стабилизатор U5 типа 78L05. Конструктивно устройство выполнено на небольшой плате, которая закреплена в удобном месте внутри аппарата. Другое применение код RC-5 может найти для ИК управления компьютером с помощью обычного пульта ДУ. Это очень удобно при работе с такими программами, как WinAmp или ACDSee. Системы ИК ДУ для компьютеров имеют разный принцип действия. Иногда специальное устройство включают между клавиатурой и компьютером. Приняв код по ИК каналу, оно имитирует нажатие одной из клавиш клавиатуры. Такое устройство требует достаточно сложной программы для встроенного микроконтроллера. Существуют специальные программы, которые декодируют команды ДУ, поступающие с ИК приемника на COM-порт (или с IrDA-приемника). Примером такой программы может служить программа PC Remote (www.pcremotecontrol.com). Поскольку оборудование порта не позволяет декодировать код RC-5 аппаратно, эти программы работают довольно плохо. Для обеспечения качественной работы достаточно между приемником и COM-портом включить несложное устройство на микроконтроллере, которое будет преобразовывать RC-5 в RS-232. Конструкция такого устройства предлагается ниже: Рис. 9. Преобразователь RC-5 в RS-232. Как и в первом примере, сигнал с фотоприемника поступает на микроконтроллер U1 типа AT89C2051. Он декодирует посылку и передает номер команды в формате RS-232 на COM-порт компьютера. Простейший преобразователь уровня выполнен на транзисторе VT1. В качестве источника отрицательного напряжения питания использован выход TXD порта компьютера. Для уменьшения среднего потребления между передаваемыми посылками микроконтроллер «засыпает». Для питания контроллера используется дешевый LDO стабилизатор U2 типа LP2951CM. В отличие от 78L05 он потребляет значительно меньший ток и нормально работает при разнице между входным и выходным напряжением до 200 мВ. Это в данном случае важно, так как нагрузочная способность порта компьютера ограничена. Питание через диодную сборку VD1 поступает с выходов DTR и RTS. Поэтому программное обеспечение должно хотя бы на одной из этих линий устанавливать положительный потенциал. Как правило, это требование удовлетворяется. В крайнем случае, можно использовать внешний источник питания. Устройство собрано внутри корпуса разъема D-SUB-25, который подключается к COM-порту компьютера. Печатная плата устройства показана на рис. 10. Рис. 10. Чертеж печатной платы преобразователя. Поскольку габариты устройства ограничены размерами корпуса, монтаж выполнен полностью на SMD компонентах. |
||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||
Download: | ||||||||||||||||||||||||||||||||||||||||||
librc5.zip (1.2 Kb) - архив с исходным текстом библиотеки librc5.asm для MCS-51. | ||||||||||||||||||||||||||||||||||||||||||
cd_remote.zip (3.1 Kb) - архив с исходным текстом программы контроллера ДУ. | ||||||||||||||||||||||||||||||||||||||||||
pc_remote.zip (1.8 Kb) - архив с исходным текстом< программы PC Remote. | ||||||||||||||||||||||||||||||||||||||||||
rc5_rx.zip (2.0 Kb) - архив с исходным текстом приемника RC-5 для AVR (ASM). | ||||||||||||||||||||||||||||||||||||||||||
rx5_tx.zip (1.9 Kb) - архив с исходным текстом передатчика RC-5 для AVR (ASM). | ||||||||||||||||||||||||||||||||||||||||||
Ридико Леонид Иванович
e-mail: |