Каждый радиолюбитель сталкивающийся с применением в своих конструкциях дистанционных пультов управления на инфракрасных лучах (ИК) знает, что обилие стандартов в этой области превращает подбор необходимого пульта управления в нетривиальную задачу.
В данной статье приводится описание простого устройства, которое позволяет наблюдать форму, измерять временные параметры сигнала, а также декодировать команды переданные по ИК каналу связи. Статья была опубликована в журнале Радио №8 за 2008 г.
Содержание статьи / Table Of Contents
↑ Схема
Как видите схема устройства очень проста, основные усилия были потрачены на шлифовку програмного обеспечения.Приёмником ИК сигнала, после долгих проб и ошибок была выбрана микросхема DA1-TFDU4100. Данная микросхема предназначена для связи компьютера с внешними устройствами по IRDA протоколу и помимо фотоприемника содержит АРУ и встроенный компенсатор внешней засветки, что сильно упрощает входную цепь прибора. Передающая часть DA1 не используется и поэтому не подключена. Сигнал с выхода DA1 (следует отметить, что сигнал является инверсным) поступает на входы CCP1 и CCP2 микроконтроллера DD1. Эти выводы сконфигурированы для захвата заднего и переднего фронта соответственно.
Вывод информации осуществляется на графический LCD индикатор HG1-MT12864A. Данный индикатор разрешением 128 на 64 точки не содержит встроенного знакогенератора, поэтому данную функцию выполняет программа микроконтроллера. Микросхема DD2-ADM707 вырабатывает импульс сброса для микроконтроллера и графического индикатора при включении питания. Кнопками S1-S5 осуществляется управление устройством. Опрос состояния кнопок производится по прерыванию таймера TMR0 микроконтроллера каждые 13мс. Программа осуществляет подавления дребезга контактов, также в режиме осциллографа работает автоповтор, т.е. если нажать и удерживать клавишу дольше 1 секунды, то программа будет генерировать нажатие соответствующей клавиши каждые 143мс.
↑ Работа устройства
Управляющая программа микроконтроллера написана на языке ассемблера и откомпилирована в среде разработки MPLAB IDE v7.41 компании Microchip. Принцип работы программы следующий, на базе TMR1 организован 24 битный программный таймер , и в режиме захвата сигнала в программный буфер заносится время зафиксированное схемами захвата CCP1 и CCP2. Так как TMR1, CCP1, CCP2 – являются 16 битными, то старший байт фиксируется программно. Под входной буфер в ОЗУ микроконтроллера отводится 312 байт из 368 байт доступных, этого хватает чтобы записать 52 импульса входного последовательности по 6 байт на каждый импульс. В программный буфер заносятся только импульсы период которых превышает 51мкс. Если период входного импульса больше 17 мкс и меньше 51мкс то данный импульс считается модулирующим и добавляется к сумме таких периодов чтобы по окончании захвата сигнала вычислить среднюю частоту модуляции, если таковая присутствует. Флаг вычисленной частоты модуляции устанавливается в «1» если за время захвата сигнала поступило не менее 64 импульсов, которые программа классифицировала как импульсы модуляции. Если за время захвата сигнала было получено более 16 импульсов с периодом меньше 17 мкс, то программа захвата устанавливает флаг высокой тактовой частоты, который говорит о том что точность вычисленной частоты модуляции находится под сомнением.В режиме осциллографа факт установки флага высокой тактовой частоты отражает надпись в пятой строке информационной зоны «Высокая Fмод». Как правило программа корректно определяет частоту модуляции от 20кГц до 58кГц и если сообщение «Высокая Fмод» всё таки появилось можно попробовать подобрать расстояние от источника сигнала до приёмника, а также устранить все посторонние источники излучения ИК-диапазона. Если после захвата сигнала флаг вычисленной тактовой частоты сброшен, а флаг высокой частоты модуляции установлен, то сообщение «Высокая Fмод» также выводится и в первой строке информационной зоны вместо значения частоты модуляции. Если не один из флагов не был установлен, то вместо значения частоты модуляции отображается надпись «Нет Fмод», что означает отсутствие частоты модуляции.
Следует также заметить, что присутствие частоты модуляции на осциллограмме никак не отражается, её наличие можно определить только по значению выведенному в первой строке информационной зоны. Так как захват сигнала осуществляется аппаратными средствами микроконтроллера минимальная длительность единичного или нулевого интервала может иметь значение от 0.4мкс, главное чтобы длительность всего импульса превышала 17мкс. После начала захвата входного сигнала (под «началом захвата» подразумевается поступление в режиме ожидания входного сигнала первого заднего фронта входной последовательности) таймер TMR1 микроконтроллера обнуляется и процесс захвата сигнала может остановить только наличие 52 импульсов во входном буфере или переполнение 24 битного программного таймера т.е. через 2**24*0.2мкс=3 355 443 мкс. Так как объём входного буфера ограничен 52 импульсами, чтобы иметь возможность наблюдать более длинные последовательности в программу введена функция записи сигнала в буфер начиная с N импульса где N может находится в диапазоне от 0 до 255.
Соответственно при 0 запись в буфер начинается сразу, при других значениях N, сначала пропускается соответствующее число импульсов, а затем производится запись. В любом случае время записи ограничено 3 355 443 мкс после начала захвата. При включении питания устройства входной буфер пуст и программа сразу переходит в режим захвата сигнала. На экране индикатора отображается сообщение с просьбой стрелками ввести количество пропускаемых импульсов и нажать кнопку «Захват». Стрелками «Влево», «Вправо» можно перемещаться по разрядам вводимого числа, а стрелками «Вниз», «Вверх» менять значение соответствующего разряда. После нажатия кнопки «Захват» программа переходит в режим ожидания входного сигнала, до поступления первого импульса из этого режима можно выйти нажатием стрелки «Вниз». В режим осциллографа программа входит только после корректного окончания процедуры захвата сигнала. Изображение индикатора устройства в режиме осциллографа показана на ниже:
На этом рисунке показаны три зоны на которые разбито изображение. Первая зона информационная занимает пять строк в левом верхнем углу индикатора. В этой зоне отображается информация о записанном сигнале соответственно выбранному пункту меню. Исключение составляет первая строка, в которой отображается значение частоты модуляции сигнала при работе в любом пункте меню.
↑ Меню
В правом верхнем углу индикатора находится зона меню. Меню состоит из пяти пунктов, перемещение по пунктам меню производится нажатием стрелок «Вверх», «Вниз». И последняя зона- зона осциллограммы, где помимо формы сигнала в нижней строке выведено время начала и окончания отображаемого участка сигнала. Следует заметить, что все временные величины указываются в микросекундах, так как в целях экономии места на индикаторе эта размерность не отображается.Первый пункт меню - масштаб осциллограммы, изображен большой точкой со значением масштаба после неё. Значение масштаба показывает сколько микросекунд соответствуют одной точке на осциллограмме. Стрелками «Влево» и «Вправо» можно изменять масштаб, который принимает только фиксированные значения: 1,4,8,10,20,40,80,100,200,400,800,1 000,2 000,4 000, 8 000, 10 000мкс в одной точке осциллограммы. Если изменение масштаба в большую сторону приведёт к тому что видимый интервал превысит полное время захваченного сигнала, то увеличение масштаба не производится.
Второй пункт меню изображён серией импульсов со стрелочками по сторонам этих импульсов. Находясь в этом пункте меню стрелками «Влево», «Вправо» можно сдвигать осциллограмму на время кратное 10 точкам в текущем масштабе. При работе в двух первых пунктах меню в информационной зоне отображается следующая информация: во второй строке указывается общее количество импульсов записанных в буфер «Nб», в третьей строке указывается длительность записанного в буфер сигнала «Tо». В четвёртой строке указывается причина окончания захвата «по времени» - в случае окончания записи по переполнению 24 битного программного таймера, «по количеству» - в случае записи в программный буфер 52 импульсов. В пятой строке выводится сообщение «Отмена» если захват сигнала был отменён нажатием стрелки «Вниз» или «Высокая Fмод» если при захвате установлен флаг высокой частоты модуляции.
Третий пункт меню - измерение параметров отдельных импульсов изображён символом в виде импульса. После импульса указан номер исследуемого импульса. Если перед захватом сигнала было введено отличное от нуля число пропускаемых импульсов, то это число учитывается при отображении номера импульса. На осциллограмме импульс выделяется жирной линией, перемещение по осциллограмме производится стрелками «Влево», «Вправо». Программа стремится так разместить начало отображения сигнала, чтобы выделенный импульс полностью оказался в видимой зоне. Если это невозможно, то вывод осциллограммы начинается с переднего фронта выделенного импульса. В информационной зоне отображается следующая информация: во второй строке выводится время начала импульса «Tн», в третьей строке длительность всего импульса «T с треугольником», в четвёртой строке длительность единичного интервала «T с треугольником 1», в пятой - длительность нулевого интервала «T с треугольником 0». Оставшиеся два пункта меню отвечают за временные измерения серии импульсов.
В четвёртом пункте меню стрелками «Влево», «Вправо» устанавливается начало серии, а в пятом конец серии. В соответствующем пункте меню отображается не только номер импульса с которого начинается или которым заканчивается серия, но и рисуется фронт перепада. В информационной зоне отображается время начала серии «Tн», время окончания серии «Tк», длительность серии «T с треугольником». Для передачи информации по ИК каналу в основном используется два типа кодирования: бифазовый (БФ) и широтно-импульсный (ШИ). При использовании БФ кодирования длительность битового интервала всегда постоянна, а информация передаётся посредством изменения фазы импульса:
При ШИ кодировании информация передаётся за счёт изменения длительности битового интервала:
В программу встроена функция декодирования обоих кодов. Данная функция работает на выделенной серии импульсов (4 и 5 пункты меню). Выделив последовательность перепадов для декодирования, находясь в самом нижнем пункте меню, надо ещё раз нажать стрелку "Вниз" и вместо временной информации в информационной зоне появляется следующие строки. Вторая строка - "БФ код N=" (что означает: количество декодированных бит при БФ способе кодирования) дальше при удачном декодировании указывается количество декодированных бит информации в десятичном исчислении. В третьей строке в шестнадцатеричном исчислении сама декодированная последовательность с выравниванием вправо. Соответственно если декодировано 6 бит и написано 1D то старшие два нулевых бита необходимо отбросить. Перед декодированием осуществляется проверка на соответствие соотношения временных интервалов. Т.е. в последовательности с БФ кодированием должны присутствовать длительности нулевых и единичных интервалов только двух типов и они должны соотносится как 1:2 с точностью 25%. Если это условие не соблюдается, то вместо кода пишется "БФ код ошибка длительности". Теоретически в 52 импульсах можно закодировать 103 информационных бита, что соответствует 26 шестнадцатеричным символам. Так как строка в информационной зоне ограничена 13 символами, то количество декодированных бит ограничивается 52 битами. При превышении этого лимита выводится сообщение "БФ код N>52", а вместо кода пишется - "переполнение".
При ошибке в кодовой последовательности вместо кода выводится сообщение "БФ код ошибка в коде". При декодировании БФ кода за логическую единицу принимается импульс у которого первая половина битового интервала является логическим «0» а вторая - «1». В четвёртой и пятой строке информационной зоны выводится информация по декодированию выделенной последовательности как ШИ кода. Чтобы программа декодировала выделенную серию как ШИ код эта серия должна соответствовать определённым критериям.
Во-первых серия должна начинаться и заканчиваться передним фронтом импульса, во-вторых в серии с точностью 25% должны присутствовать битовые интервалы только двух длительностей. Если эти требования не соблюдаются, то вместо кода выводится сообщение «ШИ код ошибка». Если требования соблюдены, то в четвёртой строке выводится количество декодированных бит «ШИ код N=», а в пятой строке декодированная последовательность в шестнадцатеричном представлении. При декодировании ШИ кода, битовый интервал большей длительности считается логической «1», меньшей – логическим «0». Проинвертировать кодовую информацию можно нажав ещё раз стрелку «Вниз». То что кодовая последовательность представлена в инверсном виде будет указывать символ «~» перед буквой N во второй и четвёртой строке информационной зоны. При нажатии кнопки вниз в пятом пункте меню выводимая в информационной зоне информация меняется по кругу «Временная информация ->Прямой код->Инверсный код->Временная информация».
Чтобы произвести ввод нового сигнала необходимо нажать кнопку «Захват» и программа перейдёт к процедуре захвата сигнала.
↑ Сборка и примененные детали
Устройство собрано на печатной плате:Также можно применить приемник ИК сигналов собранный на микросхеме TBA2800 (российский аналог КС1054ХА3) по схеме показанной на рис.6 (на печатной плате предусмотрены контакты для подключения внешнего приёмника). Данная схема отличается от штатной только наличием резистора R1, который уменьшает коэффициент усиления входного каскада. У входного формирователя собранного по схеме показанной ниже есть некоторые недостатки.
В частности, даже наличие резистора R1 уменьшает минимальное расстояние от пульта до устройства при захвате сигнала всего до 20 см., наличие проходных конденсаторов большой емкости в данной схеме затягивает фронты коротких импульсов, также данная схема гораздо более чувствительна к сигналам внешней засветки и поэтому при налаживании устройства старайтесь избегать попадания даже неяркого света на фотодиод.
↑ Ссылки
Информацию на английском языке по протоколам для ИК пультов дистанционного управления можно найти в Интернете по адресам://www.sbprojects.com/knowledge/ir/ir.htm
//www.geocities.com/SiliconValley/Lakes/3947/TABLE.HTML.
↑ Файлы
Файлы содержат исходные тексты, HEX файл прошивки, а также файл печатной платы разработанной в Layout4.0:🎁ir_master.zip 57.08 Kb ⇣ 100
Хотя схема очень простая, навсякий случай выкладываю тест и описание к нему:
🎁test.zip 19.62 Kb ⇣ 196
Камрад, рассмотри датагорские рекомендации
🌼 Полезные и проверенные железяки, можно брать
Опробовано в лаборатории редакции или читателями.