Philips RC-5 протокол

Светомузыка music color

Проекты для радио любителей.

Philips RC-5 протокол


Ссылки по RC5/RC6
http://www.sbprojects.com/knowledge/ir/index.php
http://www.sbprojects.com/knowledge/ir/rc5.php
http://www.sbprojects.com/knowledge/ir/rc6.php
ВИКИПЕДИЯ: Пульт дистанционного управления
ИК фотоприемник SFH-506-xx
BEAM-робот с ИК-радаром
Всё об ИК-приёмнике "TSOP"


Дистанционное управление на ИК лучах
декодирование Philips RC-5 Protocol


 


Введение
RC-5 Protocol Philips – протокол дистанционного управления. Многообразие недорогих пультов дистанционного управления с кодировкой RC-5, выпускаемых разнообразными производителями, делает его привлекательным для управления бытовыми приборами.


Описание алгоритма.
Код RC-5 использует манчестерское кодирование. Этот принцип кодирования удобен для синхронизации декодирующего устройства. В этом случае можно применять тактирование без кварцевой стабилизации частоты, что очень удобно.
Передача бита в RC-5 имеет следующие характеристики:
Передача нуля
Рисунок 1
Передача единицы
Рисунок 2
Для декодирования необходимо определять значение уровней сигнала в момент прихода синхроимпульса. 
Длительность одного байта соответствует 1778 мкс. Длительность «пакета» передачи составляет 14 бит. И имеет следующий вид:
Рисунок приведен после сигнала фотоприемника для упрощения понимания процесса декодирования.

Рисунок 3
Обратите внимание, что контроллер «увидит» начала передачи, только начиная с середины первого бита, это есть «линия» синхросигнала. В Манчестерском кодировании всегда будет присутствовать изменение уровня сигнала в середине бита. Это свойство используется для синхронизации таймера измерения длительности импульса.
Декодирование заключается в том, что запустив таймер во время синхроимпульса нам необходимо каждый раз в момент прерывания по фронту, изменять полярность контроля фронта сигнала. При получении очередного прерывания по фронту, сравнить полученную длительность по таймеру со значением ~1331 мск. Если полученное значение меньше, значит это начало байта, если больше это синхроимпульс, в этом месте можно судить о значении бита.

Рисунок 4
№ бата Назначение
1,2 Синхробайт
3 Индикация смены нажатия клавиши
4,5,6 Код устройства
7-14 Команда (код нажатой клавиши)


Физическое подключение.
Для демонстрации работы использовался контроллер PIC16F877A. ИК фотоприемник можно использовать, например, TSOP4836, SFH-506-xx или им подобные с несущей 36 кГц.

Рисунок 5
ЖКИ дисплей на драйвере PCF8531 (TIC32). Напряжение питания демонстрационного устройства 5 вольт.


Назначение библиотеки.
Декодирование сигнала и получение команды (кода клавиши) в формате одного байта. Для использования с PIC микроконтроллерами фирмы Microchip.
Тестировано с компиляторами С:
HI-TECH C Compiler for PIC18 MCUs (PRO Mode) V9.80
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.83
Версия MPLAB v8.80


Подключение библиотеки.
Для подключения библиотеки необходимо выполнить следующее:
1. Настроить вход INT
INTEDG=0; // Interrupt on falling edge of RB0/INT pin

2. Включить прерывания
TMR1IE=1; // разрешить прерывания от TMR1
INTCON=0b11010000; // разрешить прерывания от Enables the RB0/INT external interrupt

Порог длительности контроля 889+(889/2)=1331 мкс.
Используется таймер TMR1, предделитель установлен на 1:1, для контроля длительности мы используем значение счетчика TMR1H.

3. Задать тактовую частоту в герцах
#define _XTAL_FREQ 20000000 // Наша тактовая 20 Mh

4. Определить вход подключения фотоприемника.
#define IKDU RB0 //порт, к которому подключен фотоприёмник.

5. В прерывания необходимо вставить функцию IR_RC5 ();

void interrupt my_isr(void) //
 {
        //--------------------------------------------------------------------
        IR_RC5 (); // декодер RC5 кода.
        //-------------------------------------------------------------------
 }

6. Значение команды получаем в переменной command.
Функции библиотеки.

IR_RC5 (); // декодер RC5 кода, необходимо поместить в функцию прерывания.
Некоторые особенности. Протокол RC-5 не имеет механизма защиты от помех ИК диапазона, но можно повысить помехозащищенность, используя некоторые особенности протокола. Из опыта работы, биты 4, 5, 6 всегда равны нулю, эту особенность можно использовать для контроля помех. При наличии в этих битах «1», программа, расценивает текущий принятый код, некорректным. Если в эти битах «0» принятый код считаем успешный.
Другой вариант декодирования (в этом не реализован) должен заключаться в том, чтобы включать детектирования фронта сигнала, было разрешено только в предполагаемые промежутки времени, где должен происходить изменение фронта сигнала. В остальной промежуток времени прерывания по фронту запрещены.


Тестовая программа.
Тестовая программа находиться в архиве IR_RC5. Демонстрация заключается в выводе на индикатор кода нажатой клавиши.


Файлы для загрузки
версия MPLAB - V8.76
HI-TECH C Compiler for PIC18 MCUs (PRO Mode) V9.80
HI-TECH C Compiler for PIC10/12/16 MCUs (PRO Mode) V9.83


Схема для демонстрационного примера в pdf
Дистанционное управление на ИК лучах описание в pdf
Прошивка для демо примера.
Библиотека.


Все вопросы на форуме сети d-lan раздел Электроника

 


Украина, Днепропетровск