Автор решил проблему дистанционного управления спутниковым ресивером из двух разных помещений, разработав и изготовив дополнительный упрощённый ПДУ на микроконтроллере. Он пригоден для работы с аппаратами, оборудованными дистанционным ИК-управлением по протоколу NEC.
Проблема управления спутниковым ресивером с помощью одного ПДУ из двух разных помещений хорошо знакома тем, кто по разным причинам не стал тратиться на дополнительный ресивер. С этой проблемой столкнулся и я. Чтобы, находясь на кухне, включить ресивер или переключить канал, приходилось каждый раз идти в комнату, где он установлен.
После множества таких "походов" было решено сделать удлинитель, транслирующий ИК-команды из кухни в комнату. В различных изданиях не раз публиковались статьи о таких удлинителях, принимающих ИК-команды ПДУ в одном помещении и повторяющих их в другом. Но и тут выявилось неудобство: ПДУ всё равно приходилось носить с собой.
Чтобы устранить его, возникла идея разработать для управления ресивером из кухни самодельный упрощённый пульт, оснащённый лишь пятью кнопками, с помощью которых можно включать и выключать ресивер, а также последовательно перебирать каналы в одном и другом направлениях. Пульт постоянно находится на кухне, а его излучающий диод вынесен на проводах в помещение, где находится ресивер, который исполняет подаваемые команды.
Рис.1
Но прежде нужно было выяснить, по какому протоколу и какие коды команд передаёт основной ПДУ ресивера "HD IVR ready S-21". Для наблюдения формы сигналов подаваемых им команд я не стал делать какие-либо сложные приспособления, а воспользовался фототранзистором, подключённым по схеме, изображённой на рис. 1, к входу цифрового осциллографа. В качестве VT1 можно использовать не только фототранзистор указанного на схеме типа, но и любой другой. Я, например, с успехом применял сделанный из германиевого p-n-p транзистора МП14Б путём удаления крышки корпуса. Для этого она аккуратно сминалась бокорезами у основания, пока не отделялась полностью. Результат показан на рис. 2. ИК-луч направляют на кристалл вскрытого транзистора со стороны эмиттера. Вместо фототранзистора можно применить и фотодиод, например, ФД263.
Рис. 2
По снятым осциллограммам можно определить, к какому типу протоколов принадлежат записанные последовательности импульсов. Описание основных протоколов, используемых в системах дистанционного управления бытовой техникой, можно найти в статье А. Торреса "Инфракрасное дистанционное управление" http://altor1.narod. ru/Articles/IRC.pdf. Выяснилось, что ПДУ ресивера "HD IVR ready S-21" работает согласно протоколу NEC, поэтому программа микроконтроллера разрабатываемого пульта была написана под этот протокол.
Рис. 3
Схема дополнительного ПДУ изображена на рис. 3. Благодаря применению микроконтроллера ATtiny2313 (DD1) он получился очень простым. В исходном состоянии, когда ни одна из кнопок SB1-SB5 не нажата, микроконтроллер находится в спящем режиме. В этом состоянии пульт потребляет ток менее 1 мкА, что позволяет питать его от батареи GB1 без выключателя. При нажатии на любую из кнопок микроконтроллер переходит в рабочий режим и формирует серию импульсов, образующих передаваемый код. Он представляет собой посылку из длинного стартового импульса, восьмиразрядного адреса устройства, которому посылается команда, и собственно кода команды такой же разрядности. Адрес и команда передаются дважды - в прямом и проинвер-тированном виде (рис. 4). Это даёт возможность ресиверу проверить, не искажена ли принятая посылка, а также делает общую длительность передачи одинаковой при любых сочетаниях адреса и команды. В заключение сформированной последовательностью модулируют по амплитуде поднесущую - импульсы с частотой повторения 38 кГц.
Рис. 4
Для генерирования импульсов такой частоты в микроконтроллере использован таймер/счётчик Т0. Он ведёт счёт тактовых импульсов частотой 8 МГц в регистре TCNT0. Содержимое этого регистра сравнивается с числом, записанным в регистре совпадения OCR0A. В момент совпадения счётный регистр обнуляется, а состояние выхода OC0A (вывод 14 микроконтроллера) меняется на противоположное, это происходит каждые 13 мкс. Модуляция поднесущей кодовой последовательностью происходит путём программного включения и выключения таймера/счётчика Т0.
Для формирования кодовой последовательности предназначена функция Send_Com(adr, cmd), параметры которой - значения адреса и кода команды. Первый из них (adr) для управления спутниковым ресивером "HD IVR ready S-21" всегда задают равным 8, это адрес этого ресивера в его системе ДУ Адрес других ресиверов может быть иным, его необходимо выяснить при описанном выше исследовании передаваемых заменяемым ПДУ кодовых посылок. Второй параметр (cmd) - собственно код команды. В рассматриваемом случае при нажатиях на разные кнопки он задаётся в программе в соответствии с табл. 1.
Кнопка | Команда | Код (HEX) |
SB1 | Выход | 0хС4 |
SB2 | Переключить канал вниз | 0x22 |
SB3 | Выбор | 0x21 |
SB4 | Переключить канал вверх | 0x20 |
SB5 | Вкл./Выкл. | ОхОС |
Число команд, подаваемых рассматриваемым ПДУ, можно увеличить с пяти до восьми - именно столько выводов, по изменению уровня на которых микроконтроллер ATtiny2313 может выходить из спящего режима, имеет его порт В. Чтобы добавить команды, следует верхний (по схеме) вывод резистора R1 перенести c вывода 14 на вывод 9 (PD5) микроконтроллера и установить в устройство ещё три кнопки, подключив их к выводам 12-14 (PB0-PB2) и минусу напряжения питания.
Строка | Заменить на | Примечание |
PORTB=0xF8; | PORTB=0xFF; | Все линии порта В переключаем на ввод |
DDRB=0x04; | DDRB=0x00; | |
PORTD=0x00; | Добавляем настройку линии PD5 на вывод | |
DDRD=0x20; | ||
TCCR0A=0x00: | TCCR0A=0x12: | Инициализация таймера/счётчика Т0. Используем регистр OCR0B с выходом на вывод 9 (PD5) |
TCCR0B=0x0a: | TCCR0B=0x01 | |
TCNT0=0x00 | He менять | |
OCROA=0x68; | OCR0B=0x68; | |
GIMSK=0x20 | He менять | |
MCUCR=0x00; | He менять | |
PCMSK-0xF8; | PCMSK-0xFF | Изменение на любом входе порта В сформирует запрос прерывания |
EIFR=0x20; | He менять |
В файле nec_protoc.c нужно найти функцию main и внести изменения в её начальный фрагмент (раздел инициализации) в соответствии с табл. 2. В тело следующего за этим разделом бесконечного цикла while(1){} добавляют три условных оператора, подобных приведённому в табл. 3. Они различаются только тем, что в каждом из них вместо PINB.7 проверяется состояние одного из входов (PINB.0, PINB.1, PINB.2), к которым подключены дополнительные кнопки, а параметром cmd функции Send_Com служит код команды, подаваемый при нажатии на соответствующую кнопку.
Внеся все изменения, программу необходимо транслировать заново, а полученный HEX-файл загрузить в микроконтроллер. Если необходим пульт, способный подавать более восьми команд, придётся заменить микроконтроллер, например, на ATmega88.
По завершении передачи команды функция sleep_enable переводит микроконтроллер в режим power_down с очень маленьким током потребления, что важно для ПДУ с батарейным питанием. Из этого режима микроконтроллер выведет только следующее нажатие на любую кнопку.
При поступлении импульсов с вывода 14 микроконтроллера (или его вывода 9 в случае доработки программы) на базу транзистора VT1 импульсный ток течёт через излучающий диод VD1. Команда передаётся "в эфир". Сопротивление резистора R2 подбирают в зависимости от максимальной удалённости диода VD1 от фотоприёмника ресивера. Следует учитывать, что для излучающего диода указанного на схеме типа ток в импульсе длительностью не более 100 мкс не должен превышать 200 мА.
Рис. 5
Печатная плата ПДУ показана на рис. 5. На ней размещены все детали, за исключением диода VD1. Они смонтированы на той стороне, где печатных проводников больше. В переходные отверстия, показанные на чертеже залитыми, вставляют и пропаивают с двух сторон короткие отрезки лужёного провода. При желании печать можно сделать односторонней, заменив печатные проводники, соединяющие переходные отверстия с контактами кнопок, перемычками из изолированного провода.
В качестве VT1 может быть использован практически любой n-p-n транзистор с h21a > 100 и Iкmax >100мА. Излучающий диод TSAL6200 можно заменить отечественным, например, АЛ107А или АЛ107Б. Конденсаторы - любые малогабаритные ёмкостью 12...22 пФ. Резисторы - МЛТ или импортные.
Рис. 6
Готовый пульт изображён на рис. 6. Отсек с тремя гальваническими элементами или четырьмя аккумуляторами типоразмера AA, образующими батарею GB1, крепят к текстолитовой пластине, устанавливаемой над платой на металлических стойках. В таком виде пульт помещают в любое удобное и доступное для управления им место. Излучающий диод VD1 выносят на длинных проводах в комнату, где находится управляемый ресивер, и размещают так, чтобы между этим диодом и фотоприёмником ресивера была прямая видимость.
Программа загружается во FLASH-память микроконтроллера с помощью любого программатора, способного работать с микроконтроллерами семейства AVR. Она написана на языке С и откомпилирована в системе Code VisionAVR. В налаживании пульт не нуждается и при правильном монтаже начинает работать сразу.
Файл печатной платы в формате SprintLayout5.0 и программу микроконтроллера можно скачать здесь.
Автор: И. Чухарев, пос. Шатурторф Московской обл.