Проекты :: Цифра :: Описание протоколов ИК систем дистанционного управления.

Описание протоколов ИК систем дистанционного управления.15/07/2006

Предисловие.

Задавшись однажды вопросом создания системы управления на ИК лучах, долго искал описание протокола Сони. Нигде внятного описания я так и не нашел. Предлагаемый ниже материал основан на собственных изысканиях и крупицах собранной информации по буржуйскому интернету. Описание остальных протоколов - компиляция datasheet фирм "Vishay Telefunken", Atmel и др.


1. Протокол SONY.

В протоколе используется модуляция pulse-lenght или по-русски ШИМ. Это означает, что кодирование битов "0" и "1" производится за счет изменения длины импульса. Базовый интервал Т равен 550мкс. Для кодирования "1" длина импульса равна 2*Т = 1100мкс, "0" длина импульса равна Т = 550 мкс. Импульсы разделены между собой с интервалом Т. Ниже приведен поясняющий рисунок.

Формат кадра:

Кадр начинается со стартового импульса, равного 4Т. Далее следует пакет из 12 или 15 бит данных. Длина пакета ограничена и равна 45мс. В случае 12-ти битной последовательности 7 бит отводится под команду, 5 бит под адрес устройства (например, телевизор, ПКД и др.). В 15-ти битном случае 8 и 7 бит соответственно. При передаче младший бит последовательности идет первым (LSB first). Например, для телевизора код адреса <00001>, код кнопки "Power" <0010101>. Таким образом, код команды "Power" будет <000010010101>. Посмотрим, как будет выглядеть алгоритм передачи этой команды. Сначала посылаем стартовый импульс, затем биты команды в обратном порядке <101010010000>. После передачи команды удерживаем состояние лог "0" по достижении 45 мс интервала с начала передачи.

Алгоритм передачи в общем виде:

begin
	/* Посылка стартового бита */
	line_hight	//устанавливаем лог-1
	wait 2.2 ms
	line_low	//устанавливаем лог-0
	wait 0.55 ms
	/* посылаем пакет */
	/* LSB first */
	for current_bit = low_order_bit to high_order_bit do
	begin
		line_hight	//устанавливаем лог-1
		if (current_bit is a 1)
			wait 1.1 ms  
		else
			wait 0.55 ms 
		line_low	//устанавливаем лог-0
		wait 0.55 ms  // разделительный интервал
	end

	wait_for_45ms	//Удерживаем лог-0, 
                          пока полное время передачи не станет 45 мс.
end

Дополнительная информация:

Для приема ИК излучения удобно использовать интегральный ИК-приемник фирмы "Vishay Telefunken" TSOP1736. В розницу его стоимость около 1$.

По принципу работы TSOP1736 инвертирует передаваемый сигнал (см. datasheet), поэтому на его выходе будет примерно следущая картина

В своих экспериментах я пользовался пультом RM-873. Вот коды его кнопок:


Кнопка		Команда(в десятичной форме)
1		0
2 		1
3 		2
4 		3
5 		4
6 		5
7 		6
8 		7
9 		8
0 		9
-/--		29
refresh		59
mute		20
display		58
power		21
text		63
video		37
TV		56
vol+		18
vol-		19
ch+		16
ch-		17
menu		96
enter		124
+		116
-		117
A/B		23
wake up		60
sleep		54


О том, как сделать декодер ИК ДУ для пультов Сони, я расскажу вам здесь.


2. Протокол RC5 (bi-phase coding).

В стандарте RC 5 используется бифазное кодирование, также известное как код Манчестер. Частота несущей равна 36 кГц. Начало передачи определяют 2 стартовых бита. Следом идет toggle бит. Если нажать кнопку на пульте и держать, будут генерироваться посылки (DataWord) с одинаковым значением Toggle bit. Если отпустить кнопку и нажать снова, пойдут те же посылки, но уже с инверсным значением Toggle bit. Следующие 5 бит - адрес источника, остальные 6 - код команды. Длина пакета (dataword) равна 24.9мс, период повторения пакета 114мс. Длина одного битового интервала ~ 1.8мс.


Пример реализации RC5 декодера можно подглядеть здесь или в документе "AVR410: RC5 IR Remote Control Receiver" фирмы Atmel.

На этом пока всё, если этого мало, пишите.

написал: Wh`te
Комментарии

Здесь никто ничего не написал. Вы можете быть первым.

Оставить сообщение
Имя:                                                        E-mail:
 

Сообщение

Антибот (введите 11*1*11, заменив "*" на "-"):