Главная :: Цифра:: Декодер для пультов Samsung2006-07-30
Удобно оснастить свои самодельные конструкции пультом дистанционного управления. Имеющиеся в продаже наборы не всегда удовлетворяют потребностям - ограниченное кол-во команд, неудобный пульт и т.д.
Для реализации самодельного декодера нам понадобится:
1. Собственно пульт, который мы хотим пристроить - может быть любой, от телека, видика ... центра ... протокол там используется один, отличаются лишь коды, которые мы снимем в процессе.
2. Любой микроконтроллер AVR фирмы Atmel (отличия лишь в мощности и в наличии периферии). В зависимости от ваших потребностей. Я экспериментировал с ATmega162.
3. Фотоприемник TSOP1736, или подобный.
4. 8 светодиодов (для отображения кода полученной команды).
5. Любой программатор для AVR.
6. Кучка мелочевки.
7. Компилятор WinAvr.
Итак, для начала собираем простенькую конструкцию - на COM-порт вешаем фотоприемник, и с помощью программки-эксплорера смотрим что нам приходит с пульта. Эту увлекательную работу я уже проделал - так что предлагаю результат:
Из графика видно, что вначале приходит длинный стартовый импульс. С помощью осциллографа можно посмотреть, что его длительность примерно 4.8мс - точнее мой осциллограф не дает измерить. Далее идет пауза такой же длительности, и собственно сами данные.
Формат данных довольно прост. Это так называемый Pulse Distance код. Информация - 0 или 1 кодируется длинной промежутков между импульсами. Короткая пауза соответствует нулю, втрое больший - единица. Алгоритм работы прост:
- при срабатывании прерывания проверить был ли стартовый импульс, если нет - то является ли текущий импульс стартовым, или это просто помеха (такое бывает часто), сбросить все счетчики в ноль если помеха.
- если стартовый импульс был - то запускаем счетчик - измеряем паузу - проверяем 0 или 1
- вся логика работы основана на счетчике, и изменении срабатывания прерывания - спад импульса либо подъем. В листинге исходного кода все подробно закомментировано.
Макет собран, что называется "на коленке", поэтому нарисованной схемы нет На словах: к прерыванию INT0 прицеплена кнопка - для принудительного сброса всех счетчиков. На прерывание INT1 - сигнал с фотоприемника. Обвязка стандартная. На PORTA прицеплены 8 светодиодов для отображения кода полученной команды.
Еще в данной программе реализовано переключение режимов - либо отображать код кнопки на светодиодах, либо показывать аналог уровня (например громкости) - т.е. последовательное увеличение\уменьшение кол-ва включенных светодиодов - регулируется клавишами громкости на пульте, режим переключается кнопкой MENU.
Комментарии
Здесь никто ничего не написал. Вы можете быть первым.