|
КАК реализовать пульт ду ?, RC-5 TSOP1736 |
|
|
|
Apr 19 2009, 18:26
|
Группа: Новичок
Сообщений: 3
Регистрация: 19-04-09
Пользователь №: 47 935

|
Задача состоит в том что бы сделать пульт. Интересует исключительно принимающая сторона. Контроллер используется x51, фотоприёиник TSOP1736, кодирование в RC-5, но это не важно, важно понять сам способ передачи! Ознакомился со статьёй Леонид Иванович Ридико "Применение кода RC-5" Да только вот не очень то она мне помогла! Сам принцип передачи вроде бы понял, но вот как тактировать? Как узнать в какой момент началась передача? Вобщем рад буду любой информации. Но хотелось бы увидеть блок-схему алгоритма работы данной системы!
|
|
|
|
|
 |
Ответов
(1 - 12)
|
Apr 19 2009, 19:10
|
Группа: Новичок
Сообщений: 3
Регистрация: 19-04-09
Пользователь №: 47 935

|
Genadi Zawidowski Это на с++ что ли?
DpInRock Пульт будкт использоваться готовый. Да и вобщем вопросов не вызывает, SAA3010, что тут ещё придумаешь... Под словом пульт имеется ввиду процес приёмо-передатчи в ик диапазоне.
Писать буду на ассемблере.
|
|
|
|
|
Apr 19 2009, 21:04
|

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

|
Тогда нет такой у вас задачи - "сделать пульт". Цитата Сам принцип передачи вроде бы понял, но вот как тактировать? Как узнать в какой момент началась передача? Тогда что имеется ввиду под этими словами? Передача начинается в момент выхода из инфракрасного диода потока модулированного излучения. И кого тактировать?
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Apr 19 2009, 21:08
|

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

|
Цитата(m42100 @ Apr 19 2009, 23:10)  Genadi Zawidowski Это на с++ что ли? Если бы Вы заглянули в файл, то заметили бы, что там C++ и не пахнет. Цитата Писать буду на ассемблере. Ясно, сроки решения задачи не стоят. Сопровождение проекта так же исчезает в тумане.
Сообщение отредактировал Genadi Zawidowski - Apr 19 2009, 21:11
|
|
|
|
|
Apr 19 2009, 23:56
|
Группа: Новичок
Сообщений: 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
|
|
|
|
|
Apr 20 2009, 05:40
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Apr 20 2009, 13:07
|

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

|
Цитата Занимаюсь програмированием месяц 1. Научиться пользоваться осциллографом. 2. Начать с моргания светодиодом. С выхода приемника идет демодулированный сигнал передатчика. Вам остается только замерять, например, длительности высокого уровня и низкого. Если высокий уровень держиться достаточно долго (например 100 мс), то принимать решение о завершении передачи. О начале передачи свилдетельствует перепад в иное состояние чем обычно выхода приемника. В итоге у вас после завершения передачи появится массив длительностей в неких ваших собственных единицах. Далее - прост декодируем все это и превращаем в команду. А МОЖЕМ и не декодировать. Для каждой команды такая последователдьность будет уникальной. Можете просто отметить разницу между командами и таким образом принимать решение. Но это все требует умения обращаться с осциллографом и понимания, как моргать светодтодом и принимать нажатие кнопки. Без этого - вообще нет смысла разговаривать.
--------------------
On the road again (Canned Heat)
|
|
|
|
|
Apr 22 2009, 13:50
|
Участник

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

|
На Атмеле в аппноутах по линку http://www.atmel.com/dyn/resources/prod_do...nts/doc1473.pdfлежит описание RC-5 ресивера, правда на AVR. Примеры процедур приема кодовых посылок - на Ассемблере. Все с комментариями. Работает прекрасно. Если Вам это поможет - буду только рад!
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|