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 раздел Электроника
Украина, Днепропетровск