реклама на сайте
подробности

 
 
> КАК реализовать пульт ду ?, RC-5 TSOP1736
m42100
сообщение Apr 19 2009, 18:26
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 19-04-09
Пользователь №: 47 935



Задача состоит в том что бы сделать пульт. Интересует исключительно принимающая сторона. Контроллер используется x51, фотоприёиник TSOP1736, кодирование в RC-5, но это не важно, важно понять сам способ передачи! Ознакомился со статьёй Леонид Иванович Ридико "Применение кода RC-5" Да только вот не очень то она мне помогла! Сам принцип передачи вроде бы понял, но вот как тактировать? Как узнать в какой момент началась передача?
Вобщем рад буду любой информации. Но хотелось бы увидеть блок-схему алгоритма работы данной системы!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
Genadi Zawidowsk...
сообщение Apr 19 2009, 18:42
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



В свое время я начинал использовать RC5 с помощью демонстрационной программы, что в приложении. Используются специфические для архитектуры ATMega устройства (таймер, контроллер прерываний). Разобраться поможет.
Причина редактирования: Ненужное цитирование.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 19 2009, 18:43
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата(m42100 @ Apr 19 2009, 22:26) *
Интересует исключительно принимающая сторона.

А это как понимать, если проектируется ПУЛЬТ?


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
m42100
сообщение Apr 19 2009, 19:10
Сообщение #4





Группа: Новичок
Сообщений: 3
Регистрация: 19-04-09
Пользователь №: 47 935



Genadi Zawidowski
Это на с++ что ли?

DpInRock
Пульт будкт использоваться готовый. Да и вобщем вопросов не вызывает, SAA3010, что тут ещё придумаешь...
Под словом пульт имеется ввиду процес приёмо-передатчи в ик диапазоне.

Писать буду на ассемблере.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 19 2009, 21:04
Сообщение #5


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Тогда нет такой у вас задачи - "сделать пульт".

Цитата
Сам принцип передачи вроде бы понял, но вот как тактировать? Как узнать в какой момент началась передача?

Тогда что имеется ввиду под этими словами?
Передача начинается в момент выхода из инфракрасного диода потока модулированного излучения.
И кого тактировать?


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Genadi Zawidowsk...
сообщение Apr 19 2009, 21:08
Сообщение #6


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата(m42100 @ Apr 19 2009, 23:10) *
Genadi Zawidowski
Это на с++ что ли?


Если бы Вы заглянули в файл, то заметили бы, что там C++ и не пахнет.

Цитата
Писать буду на ассемблере.


Ясно, сроки решения задачи не стоят.
Сопровождение проекта так же исчезает в тумане.

Сообщение отредактировал Genadi Zawidowski - Apr 19 2009, 21:11
Go to the top of the page
 
+Quote Post
m42100
сообщение Apr 19 2009, 23:56
Сообщение #7





Группа: Новичок
Сообщений: 3
Регистрация: 19-04-09
Пользователь №: 47 935



DpInRock
Верно, проектируется не пульт а как раз таки противоположная, принимающая сторона. Под словом пульт я подразумевал систему передачи по ик, причём к передатчику (т.е. к пульту) вопросов нет.(Вы правильно заметили, я приёмник назвал пультом)

DpInRock
В файл конкчно заглянул, только мало чего понял. Занимаюсь програмированием месяц, поэтому ни чему не удивляйтесь. Кроме как про ассемблер, ничего не слышал, на ассемблер вроде не похож, слышал что есть ещё си++, паскаль и бейсик, предположил, видимо ошибочно, что это си. Вопрос о сроках не стоит.

Это статья про которую я говорил:
http://www.telesys.ru/electronics/projects.php?do=p036

Так вот, на выходе tsop1736 еденица, при нажатии кнопки на пульте что то происходит (осцилограф у меня только аналоговый), понять соответственно что-либо сложно, вопрос в том что содержится в посылке, с чего она начинается.
Правильно ли я понимаю что передача начинается с 2-х стартовых битов, далее следует упралящий бит, затем 5 бит адреса и 6 бит команды. После этого через промежуток времени равный 63 тактам посылки, посылка повторяется. Если кнопка на пульте продолжает быть нажата то управляющий бит инвертируется. ???

Сообщение отредактировал m42100 - Apr 20 2009, 00:02
Go to the top of the page
 
+Quote Post
mikesm
сообщение Apr 20 2009, 05:40
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 15-01-09
Из: Russia
Пользователь №: 43 426



У Ридико описано все, кроме модуляции. Отсюда и недопонимание.
Вот описание протокола RC5 http://infrared.h1.ru/protocol.shtml
И вот описание http://fi-com.ru/mcu/rc5.htm

Общая идея такая, поскольку инфракрасный светодиод пульта выдает пачки посылок. В каждой пачке 32 периода тактовой 36КГц, затем пауза длиной в 32 периода, потом опять пачка, затем пауза. Вот когда идет пачка импульсов это у Ридико на рис.3 верхний уровень сигнала, а когда пауза, это нижний уровень. И лог."1" на осциллографе будет выглядеть как пауза длиной в 32 такта, а затем 32 импульса.

Для построения ответной части или "базы", алгоритм такой. Сначала приемник просто ловит перепады уровня. Если перепадов больше 8 подряд, и расстояние укладывается в 36кГц (при помощи таймера измерять расстояние между перепадами, для 36кГц оно будет 27мкс а для измерений использовать вилку от 24 до 32мкс.)
Если прошло на входе подряд 8 перепадов и расстояние между ними от 24..32мкс, то база делает вывод что пришла пачка от пульта ДУ.
Ждем окончания пачки, попутно считаем число перепадов, если их от 29 до 33 значит это пачка от пульта ДУ "верхний" уровень. Если пачка не прошла, отбрасываем ее и опять ждем валидную пачку. Дождались нормально пачки, записываем в память 1, затем ждем окончание паузы. Если пауза укладывается в размер протокола, примерно 900мкс, записываем в память 0 и продолжаем принимать, до тех пор, пока не попадется либо сбойная пачка, либо очень длинная пауза.
Если сбойная пачка, все сбрасываем и ждем по новой. Если длинная пауза, делаем вывод, что принята посылка от пульта, начинаем ее анализ.
В памяти записана последовательность 10011010100101 где нули это нижний уровень, а единицы верхний уровень по рисунку 3 Ридико. По этому же рисунку переход 01 это лог.1,
а переход 10, это лог 0, и тогда последовательность означает "0"1"0"0"0"1"1" это уже биты посылки, которые означают адрес, код команды.

Сообщение отредактировал mikesm - Apr 20 2009, 05:44
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 20 2009, 08:01
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(mikesm @ Apr 20 2009, 09:40) *
Для построения ответной части или "базы", алгоритм такой. Сначала приемник просто ловит перепады уровня. Если перепадов больше 8 подряд, и расстояние укладывается в 36кГц (при помощи таймера измерять расстояние между перепадами, для 36кГц оно будет 27мкс а для измерений использовать вилку от 24 до 32мкс.)
Перепадов не будет - у автора применен приемник со встроенным декодером на 36KHz. Так что на выходе будут сразу импульсы огибающей, заполнения в 36KHz не будет. Все остальное соотвествует истине rolleyes.gif
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Apr 20 2009, 13:07
Сообщение #10


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Цитата
Занимаюсь програмированием месяц

1. Научиться пользоваться осциллографом.
2. Начать с моргания светодиодом.

С выхода приемника идет демодулированный сигнал передатчика.
Вам остается только замерять, например, длительности высокого уровня и низкого.
Если высокий уровень держиться достаточно долго (например 100 мс), то принимать решение о завершении передачи.
О начале передачи свилдетельствует перепад в иное состояние чем обычно выхода приемника.

В итоге у вас после завершения передачи появится массив длительностей в неких ваших собственных единицах. Далее - прост декодируем все это и превращаем в команду. А МОЖЕМ и не декодировать. Для каждой команды такая последователдьность будет уникальной.

Можете просто отметить разницу между командами и таким образом принимать решение.

Но это все требует умения обращаться с осциллографом и понимания, как моргать светодтодом и принимать нажатие кнопки. Без этого - вообще нет смысла разговаривать.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
Stas
сообщение Apr 20 2009, 13:36
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 1-10-04
Из: Челябинск
Пользователь №: 751



Заводите выход Tsop на внешнее прерывание. При появлении внешнего прерыванию (по фронту) запускаете таймер t0/t1/t2 на время расстояния м/у импульсами и запрещаете внешнее прерывание. По прерыванию таймера считываете состояние порта int (данные идут в манчестере - удобно принять на удвоенной частоте и проверить правильность логики посылки), формируете принимаемые данные в слово (к примеру сдвигая через перенос в акк), одновременно отсчитывая время до окончания посылки. Окончанием приема можно считать завершение времени длительности всей посылки. Далее запрещаете прерывание таймера, разрешаете внешнее прерывание и взводите флаг готовности принятых данных к анализу. Анализируете принятые данные на соответствие манчестеру (можно искл или по соседним разрядам и тп) и декодируете код команды, выполняя требуемое действие в основной программе. А в это время по прерываниям идет прием второй посылки и тп. Вроде два раза такое делал - работало без проблемм.

Кратко теория по RC-5 http://www.sbprojects.com/knowledge/ir/rc5.htm
Go to the top of the page
 
+Quote Post
san822
сообщение Apr 20 2009, 16:18
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 195
Регистрация: 26-07-05
Из: Санкт-Петербург
Пользователь №: 7 111



Цитата(m42100 @ Apr 19 2009, 22:26) *
Задача состоит в том что бы сделать пульт. Интересует исключительно принимающая сторона.
Вобщем рад буду любой информации. Но хотелось бы увидеть блок-схему алгоритма работы данной системы!


Наверное, будет не лишним почитать статью Тимофея Носова "Программируемый приемник ИК-системы ДУ".
По сути - готовый проект.
Go to the top of the page
 
+Quote Post
VBA
сообщение Apr 22 2009, 13:50
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 1-12-07
Пользователь №: 32 869



На Атмеле в аппноутах по линку

http://www.atmel.com/dyn/resources/prod_do...nts/doc1473.pdf

лежит описание RC-5 ресивера, правда на AVR. Примеры процедур
приема кодовых посылок - на Ассемблере. Все с комментариями.
Работает прекрасно. Если Вам это поможет -
буду только рад!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 20:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016