Переработано с сайта с обновлением http://svetomuzyka.narod.ru/project/RC5_remote_control.html

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

Описание алгоритма.

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

Передача бита в RC-5 имеет следующие характеристики:

rc5_01Передача “0” представляет собой смену в момент синхронизации с высокого уровня на низкий. Для декодирования можно анализировать уровень после прихода синхроимпульса.

rc5_02Передача логической “1” представляет собой смену в момент синхронизации с низкого уровня на высокий.

 Для декодирования необходимо определять значение уровней сигнала в момент прихода синхроимпульса. Длительность одного бита соответствует 1778 мкс. Длительность «пакета» передачи составляет 14 бит. И имеет следующий вид:

Рисунок приведен после сигнала фотоприемника для упрощения понимания процесса декодирования.

rc5_03

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


Посылка передатчика, пульта управления, имеет следующий вид:

rc5_04Внизу рисунка приведены нумерация битов. Назначение битов следующая:

01,02 – это синхробиты, и всегда имеют “одну и тоже форму”.

03 – бит смены нажатия клавиши, для приемника это служит “сигналом”, что на пульте повторно нажимается клавиша с тем же кодом. Т.е. если приемник получает один и тот же код, но при этом значение бита три меняется, это значит оператор нажимает одну и туже клавишу.

04,05,06 – три бита – код устройства (например, телевизор, радио.. или другое устройство).

07-14 – код нажатой клавиши или сочетание клавиш, значение от 0 до 255.

Сигнал на выходе приемника TSOP4836.

Catcatcat_TSOP4836_14

Настройка Saleae Logic для декодирования RC-5 сода.

ik_du08


Описание работы программы декодирования.

Для декодирования RC-5 необходимо использовать возможность PIC-контроллера формирования прерываний по изменению уровня сигнала на входе и один таймер, чтобы измерять длительность сигнала. Сразу хочу предупредить, что данный вид декодирования не является помехозащищенным, что это значит? Если в помещении будут присутствовать другие источники ИК-излучения, то это может влиять на качество приема. Вариант помехозащищенного декодирования смотрите на сайте ОпенВорон в статье http://open.e-voron.dp.ua/indikator-koda-rc-5-protocol-philips/.

Подключение библиотеки.

Для подключения библиотеки необходимо выполнить следующее:

1. Определить вход подключения фотоприемника (вход INT), выберем RB0, это стандарный вход практически на всех PIC-контроллерах который имеет возможность использовать внешние прерывания по изменению сигнала на входе и можно определять произошло прерывание по фронту или по спаду.

#define IKDU RB0        //порт, к которому подключен фотоприёмник.

2. Настроим RB0 на вход.

3. Задать тактовую частоту в герцах (например, 20 мГц) которую использует контроллер.

#define _XTAL_FREQ 20000000       // Наша тактовая 20 Mh

4. Настроить вход INT, прерывания по переходу с высокого уровня на низкий (это для начала)

INTEDG=0;        // Interrupt on falling edge of RB0/INT pin

5. Включить прерывания

TMR1IE=1;       // разрешить прерывания от TMR1

INTCON=0b11010000;       // разрешить прерывания от входа RB0/INT external interrupt

6. Настроить работу таймера. Порог длительности контроля для RC-5 кода – 889+(889/2)=1331 мкс.

Используем таймер TMR1, установим предделитель на 1:1, для контроля длительности мы используем значение счетчика TMR1H.

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

8. Значение команды получаем в переменной command.

Примечание: Окончание передачи мы контролируем по переполнению таймера.


Функции библиотеки.

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


Демонстрационная  программа показывает пример декодирования при тактовой 64 мГц, для переключения для работы на любой другой параметр тактовой частоты необходимо в файлах max7221_8.h и IR_RC5.h изменить параметр #define _XTAL_FREQ 64000000, где 64000000 тактовая частота в герцах с которой работает наш контроллер. А в файле main.c в функции void init(void) скорректировать в регистрах OSCTUNE (работа умножителя, выбор генератора), OSCCON (задание тактовой частоты) настройки тактового генератора.

Например, для 4 мГц, настройки следующие:

настройка _XTAL_FREQ должна выглядеть так

#define _XTAL_FREQ 4000000 // Наша тактовая 4 Mh

Для повышения помехозащищенности в программе вставлено условие на проверку трех битов 4/5/6 на значение <0>. В стандартных пультах это значение всегда равно <0>. Если при декодировании встречается единица, то считается, что это ошибочная передача. Если предполагается использовать пульты где биты 4/5/6 предназначены для выбора типа устройства, то необходимо внести изменения в этом месте программы.

Демонстрационный проект выполнен на плате ILLISSI-4B-09-primum и ILLISSI-4С-secundo.


Добавлена версия библиотеки 2.4 в ней изменение по логике работы, для управления можно использовать любые выводы способные формировать прерывания по изменению сигналов на входе. Для неё подходят контроллеры нового поколения где есть в наличии регистры IOCAF, IOCAN, IOCAP. Это типа, в 16 серии PIC16F1xxx. т.е для 12/16 все которые имеют расширение 4 цифры после символа F.


Демонстрационный проект и библиотеки.

версия 2.0 от 16/08/12

Icon

Декодирование RC-5 Protocol Philips v2.0 21.97 KB 635 downloads

Проект + прошивка. Демопроект использует при программировании загрузчик AN1310...
версия 2.1 от 04/09/12 MPLAB® XC8 Compiler for PIC18
Icon

Декодирование RC-5 Protocol Philips v2.1 19.67 KB 654 downloads

Демонстрация работы декодирования RC-5. Использования...
версия 2.2 от 12/08/13 MPLAB® X IDE v1.85, MPLAB® XC8 Compiler for PIC16
Icon

Декодирование RC-5 Protocol Philips - V2.2 for MPLAB XC8 Compiler 2.71 KB 436 downloads

Декодирование RC-5 Protocol Philips - V2.2 for MPLAB XC8 Compiler ...
версия 2.4 от 26/11/13 MPLAB® X IDE v1.95,MPLAB® XC8 Compiler v1.21
Icon

Декодирование RC-5 Protocol Philips версия 2.4 3.44 KB 334 downloads

Декодирование RC-5 Protocol Philips версия 2.4. для управления...



Это может быть интересно


  • УКВ – радиоприем, часть 1УКВ – радиоприем, часть 1
    Музыкальная тема к статье, слушаем: Первый мой радиоприемник, выглядел так. Использовал исключительно в школе на уроках, держась за одно ухо и преданно смотря на училку и сладко улыбаясь. Проблема была …
  • Проект с использованием MCC часть 06Проект с использованием MCC часть 06
    Изменим схему следующим образом добавим две тактовые кнопки BT1 и BT2. Теперь переключимся на конфигурацию выводов, для этого сделаем двойной клик в окне Ресурсы проекта на Pin Module. В окне Pin …
  • Простой цифровой вольтметр ch-c3200Простой цифровой вольтметр ch-c3200
    В этой статье рассмотрен пример создания простого вольтметра постоянного тока на основе печатной платы ch-c0030pcb, а при возможности использования внешнего делителя и вольтметр переменного тока. Дан краткий принцип построения цифровых …
  • ESP32-первое знакомствоESP32-первое знакомство
    Музыкальная тема к статье, слушаем: Настало время познакомиться c ESP32 и для меня, для этого я приобрел в ГАММЕ отладочную плату с модулем ESP-WROOM-32 (ESP32-DevKitC). Первая задача, как он подключается, …
  • Часы-кухонный таймерЧасы-кухонный таймер
    Каждая кухня должна иметь кухонный таймер, который позволяет напоминать хозяйке когда проходить определенный промежуток времени. Например, печем пирог, варим яйца… , чтобы не смотреть постоянно на часы, установим таймер и через заданный …
  • Ultrasonic Level Meters – ULM –53LUltrasonic Level Meters – ULM –53L
    Измерение расстояния при помощи ультра звукового датчика ULM–53L–10. Диапазон измерения от 0,5 м до 10 м, полностью пластмассовый излучатель PVDF, механическое соединение фланцем из полиэтилена HDPE (исполнение “N”) Характеристики Диапазон измерения …
  • Модуль CAN в микроконтроллерах PIC18Модуль CAN в микроконтроллерах PIC18
    Введение   CAN последовательный интерфейс связи, который эффективно поддерживает распределенное управление в реальном масштабе времени с высокой помехозащищенностью. Протокол связи полностью определен Robert Bosch GmbH, в спецификации требований CAN 2.0B …
  • PIC18 – модуль DMAPIC18 – модуль DMA
    Введение   Модуль прямого доступа к памяти (DMA) предназначен для обслуживания передачи данных непосредственно между различными областями памяти без вмешательства процессора. Исключив при этом необходимость в интенсивной  обработки прерываний процессором, …
  • TM1650 драйвер LED семисегментного индикатораTM1650 драйвер LED семисегментного индикатора
    Китайский производитель Shenzhen Titan Micro Electronics Co., Ltd.  Выпускает широкую линейку драйверов управления светодиодными дисплеями, которые позволяют разгрузить микроконтроллер для основной работы, главная особенность этих драйверов не только в их …
  • CCP – модуль в режиме Compare на примере PIC18CCP – модуль в режиме Compare на примере PIC18
    CCP – модуль можно использовать в трех режимах: Capture – позволяет захватывать входной сигнал и определять его параметры (длительность или частоту). Дополнительно управлять внутренними модулями. Compare –  позволяет формировать импульсы …



Translate »

Copyright © Catcatcat electronics 2013-2020. Все права защищены.
Копирование разрешается только с указанием активной ссылки на правообладателя.

e-mail: catcatcat.electronics@gmail.com