Прибор для наблюдения формы огибающей ИК сигналов » Программирование устройств на PIC микроконтроллерах


Логин:
Пароль:
О сайте:

Pic.Rkniga.ru - Сайт как для начинающих, так и для опытных радиолюбителей, разрабатывающих свои устройства на популярных PIC микроконтроллерах.
Здесь можно обмениваться сообщениями на форуме, а также добавлять на сайт статьи и схемы своих устройств.

Меню сайта
Главная Форум по PIC микроконтроллерам Форум Статьи по PIC микроконтроллерам Статьи Справочная информаци по PIC микроконтроллерам Справочник Литература по PIC микроконтроллерам Литература Схемотехника Схемотехника устройств на PIC микроконтроллерах Микроконтроллеры Программаторы Все по программированию PIC микроконтроллеров Программы, Софт Программы Ссылки Написать нам
Опрос

Какими микроконтроллерами вы чаще всего пользуетесь


PIC10
PIC12
PIC16
PIC18
PIC24
PIC32
Другими


Последние материалы
  • Каршеринг в Москве - это Просто, Удобно и Недорого.
  • Кнопка On/OFF на PIC12F629.
  • Часы с синхронизацией от китайского будильника
  • ШИМ регулятор на PIC16F628A.
  • Счетчики прямого и обратного счета на PIC16F628A.
  • Таймер отключения питания для мультиметра и не только.
  • Программирование на C микроконтроллеров PIC24
  • Измеритель напряжения и тока
  • Маршрутный компьютер для электровелосипеда
  • Простой двухканальный термометр на PIC16F690 и датчиках DS18B20
  • Популярные материалы
    Случайная книга
    Прибор для наблюдения формы огибающей ИК сигналов
    Автор публикации: alex Просмотров: 4867 Добавлен: 6-08-2012, 08:34 Комментарии: 0

         Идея данного прибора появилась у автора после попытки применить готовый ПДУ в собственной разработке. Оказалось, что на экране осциллографа различить сигналы частотой 36 и 38 кГц очень сложно, а уверенно определить протокол можно только в случае, если он RC5. Для решения проблемы автор разработал прибор, описание которого приведено ниже, назвав его IR-master. Он позволяет записывать и анализировать ИК сигналы ПДУ.
         В статье приводится описание простого устройства, которое дает возможность наблюдать форму огибающей ИК сигналов, измерять временные характеристики образующих ее импульсов, а также декодировать принятые команды.
         Схема прибора показана на рис. 1. В нем установлен приемопередатчик ИК сигналов TFDU4100 (В1), предназначенный для связи компьютера с внешними устройствами по интерфейсу IrDA. Его передающую часть "IR-master" не использует. Приемная часть имеет высокую чувствительность, оснащена компенсатором внешней засветки фотоприемника и системой АРУ. Высокий логический уровень на выходе RXD соответствует отсутствию ИК излучения, а низкий — его наличию. Этот выход соединен с входами CCP1 и CCP2 МК PIC16F876, они сконфигурированы так, что реагируют соответственно на спадающие и нарастающие перепады импульсов. Программа МК написана на языке ассемблера и откомпилирована в среде разработки MPLAB IDE v7.41.
    Прибор для наблюдения формы огибающей ИК сигналов

         Вывод информации производится на графический ЖКИ МТ-12864А разрешением 128x64 пкс. Этот индикатор не содержит встроенного знакогенератора, символы на его экране МК формирует программно. Супервизор DD1 при включении питания вырабатывает импульс установки МК в исходное состояние, после чего МК, согласно программе, инициализирует ЖКИ.
         Кнопки SB1—SB5 служат для управления прибором. МК опрашивает их по прерываниям от таймера TMR0 каждые 13 мс. Дребезг контактов подавляется программно. Предусмотрен "автоповтор" нажатий. Если удерживать кнопку нажатой, то через 1 с программа начинает каждые 143 мс повторно выполнять операцию, соответствующую этой кнопке.

         Программа измеряет длительность принимаемых ИК импульсов и пауз между ними, фиксируя текущее состояние 16-разрядного таймера TMR1 в моменты, соответствующие перепадам принимаемого сигнала. Если промежутки времени между перепадами одного направления находятся в интервале 17...51 мкс, считается, что идет прием импульсов поднесущей частоты сигнала. Интервалы между перепадами суммируются. В дальнейшем их сумма используется для вычисления значения поднесущей частоты принятого сигнала. В случае приема более 16 перепадов с периодом повторения менее 17 мкс программа приема устанавливает признак слишком высокой частоты поднесущей.
         При отображении принятого сигнала о факте установки признака высокой частоты поднесущей известит соответствующее сообщение на ЖКИ. Как правило, частоту поднесущей в пределах 20...58 кГц программа измеряет правильно. Если сообщение о слишком высокой частоте все-таки появилось, можно попробовать подобрать расстояние от источника сигнала до приемника, устранить все посторонние источники ИК излучения. Если частоту вычислить не удалось (для этого требуется не менее 64 импульсов поднесущей), об этом на ЖКИ тоже будет выведено сообщение.
         Если интервал времени между перепадами превысил 51 мкс, считается, что завершилась пачка импульсов поднесущей, соответствующая одному импульсу кодовой последовательности. Информация о времени начала и окончания каждой пачки сохраняется в программном буфере, занимающем в ОЗУ МК 312 байт из 368 имеющихся. Для каждого отсчета времени требуются три байта — в два младших записывается состояние 16-разрядного таймера, к ним добавляется старший байт счетчика времени, формируемый программно. Таким образом, информация о каждой пачке (кодовом импульсе) занимает шесть байтов (три — начало и три — конец), а всего в буфере умещаются 312/6 = 52 импульса.

         После подачи нажатием на кнопку SB5 команды "Захват" запись информации в буфер начинается с первого зафиксированного МК спадающего перепада импульса Таймер TMR1 и регистр МК, образующие 24-разрядный счетчик времени, в этот момент обнуляются. Процесс записи могут остановить заполнение буфера (принято 52 кодовых импульса) или переполнение счетчика времени, которое произойдет через 2^24*0,2 = 3355443,2 мкс. До фактического начала записи (приема первого ИК импульса) ее можно отменить, нажав на кнопку SB2.
         Чтобы иметь возможность наблюдать кодовые последовательности с числом импульсов более 52, предусмотрена возможность пропуска первых N импульсов, причем значение N можно задавать от 0 до 255. В любом случае продолжительность серии импульсов (включая пропускаемые) не должна превышать указанного ранее числа микросекунд.
         При включении питания прибора буфер в памяти его МК пуст. На ЖКИ выводится показанное на рис. 2 сообщение. С помощью кнопок SB3 и SB4 стрелку-курсор перемещают по разрядам вводимого числа, а нажатиями на кнопки SB1 и SB2 устанавливают в выбранных разрядах нужные цифры. Теперь можно нажать на кнопку SB5, а за ней на одну из кнопок исследуемого пульта ДУ. При корректном завершении приема на ЖКИ появятся осциллограмма принятого сигнвла и сведения о нем. В противном случае программа вернется к вводу числа пропускаемых импульсов, если буфер пуст, или выведет на ЖКИ ранее записанный сигнал с сообщением о причине прекращения записи.

         Вид экрана ЖКИ прибора при отображении принятого сигнала показан на рис. 3. Экран условно разделен на три зоны. В зоне меню пять пунктов-строк перемещение по которым происходит нажатиями на кнопки SB1 и SB2. В зоне информации выводятся сведения об измеренных параметрах записанного сигнала соответственно выбранному пункту меню. Первая строка со значением частоты поднесущей присутствует в любом случае. И последняя зона — осциллограмма записанного сигнала, здесь же указаны времена начала и окончания видимого на ЖКИ участка кривой в микросекундах.
         Обозначенный символом I первый пункт меню — установка масштаба осциллограммы по оси времени. Число здесь показывает, скольким микросекундам соответствует один элемент изображения (пиксел) осциллограммы. Нажимая на кнопки SB3 и SB4, можно выбрать следующие фиксированные значения: 1,4, 8, 10 20, 40, 80, 100, 200, 400, 800, 1 000 2 000, 4 000, 8 000, 10 000 мкс/пкс. Если выбор очередного большего значения приведет к тому, что отображаемый на экране интервал времени превысит продолжительность записанного сигнала, нажатие на кнопку SB4 прибор проигнорирует.
         Второй пункт меню обозначен пиктограммой <ЛЛЛ>. Установив напротив нее курсор, можно с помощью кнопок SB3 и SB4 сдвигать осциллограмму по оси времени влево или вправо шагами по 10 пкс. При выборе первых двух пунктов меню в информационной зоне выводятся число записанных в буфер кодовых импульсов Nб, продолжительность записи Т0 и причина ее окончания — "по времени" в случае переполнения 24-разрядного программного счетчика времени или "по количеству", если в буфер записаны 52 импульса. В последней строке информационной зоны сообщается об отмене записи нажатием на кнопку SB2 или о слишком высокой частоте поднесущей.

         Третий пункт меню — измерение параметров отдельных импульсов. Он отмечен символом Я , за которым указан номер исследуемого импульса с учетом числа пропущенных (если пропуск был задан). На осциллограмме интервал измерения выделяется утолщенной линией. Перемещение от импульса к импульсу ведется с помощью кнопок SB3 и SB4. Программа стремится расположить осциллограмму на экране так, чтобы выбранный импульс был виден полностью. Если установленный масштаб не позволяет этого сделать, изображение начнется с фронта импульса. В информационной зоне выводятся время начала импульса Тн суммарная длительность импульса и следующей за ним паузы Т, длительность импульса Т1 и длительность паузы Т0.
         Оставшиеся два пункта меню отвечают за измерение продолжительности серии импульсов. В четвертом пункте нажатиями на кнопки SB3 и SB4 выбирают перепад сигнала, начинающий серию, а в пятом — завершающий ее. Кроме номеров соответствующих импульсов, выводятся символы если отсчет начинается или заканчивается на фронте импульса, или если на его спаде. В информационной зоне выводятся время начала серии Тн время ее окончания Тк и продолжительность Т.
         Сведения о способах кодирования команд, подаваемых с помощью ИК пультов ДУ бытовыми приборами (на английском языке), можно найти на интернет-страницах <http://www.sbprojects.com/knowledge/ir/ir.htm> и <http://www.geocities.com/SiliconValley/Lakes/3947/TABLE.HTML>. Наиболее распространены два способа: бифазный (БФ) и широтно-импульсный (ШИ). В БФ последовательности импульсов информация зашифрована направлением перепада уровня в середине каждого тактового интервала постоянной длительности. Вид экрана ЖКИ прибора после приема такой последовательности показан на рис. 4. Ниже экрана — расшифровка принятого сигнала. ШИ последовательность несет информацию в длительности каждой пары импульс+пауза На рис. 5 показано, как выглядит экран ЖКИ после приема такого сигнала и его расшифровка.

         Чтобы запустить процедуру декодирования записанного сигнала, необходимо выделить нужную часть осциллограммы и, установив курсор на самый нижний пункт меню, нажать на кнопку SB2 еще раз. Первой делается попытка БФ декодирования, и на экране появляется сообщение "БФ код N=". При ее успешном выполнении после знака равенства будет выведено число декодированных импульсов, а в следующей строке — шестнадцатеричное значение результата с выравниванием в сторону младших разрядов. Например, если декодировано шесть двоичных разрядов, а результат — 1В, фактическое двоичное значение кода — 011101 (два старших разряда отброшены).
         Как известно, в БФ последовательности длительность импульсов и пауз может принимать только два значения, находящихся в соотношении 1:2. Если погрешность выполнения этого условия в анализируемом сигнале превышает 25 %, декодирование выполнено не будет, а в информационной зоне появится сообщение "БФ код ошибка длительности".
         Так как длина строки в информационной зоне всего 13 символов, длину декодируемой команды пришлось ограничить до 52 двоичных разрядов.
         Превышение этого лимита приведет к выводу сообщения "БФ код N>52", а вместо результата будет написано "переполнение". Если в кодовой последовательности найдена ошибка, выводится сообщение "БФ код ошибка в коде”.

         По завершении попытки декодирования выделенной последовательности импульсов как бифазной, программа пытается декодировать ее как ШИ последовательность. Она должна начинаться и заканчиваться фронтами импульсов и состоять из пар им-пульс+пауза только двух разных значений суммарной длительности Если зти условия не выполнены, в информационной зоне ниже строк, отведенных БФ декодированию, выводится сообщение "ШИ код ошибка". Если требования соблюдены, после надписи "ШИ код N= " будет выведено число декодированных разрядов, а в следующей (пятой) строке — шестнадцатеричный результат.
         При БФ декодировании считается, что лог. 1 соответствует фронт импульса в середине тактового интервала, а лог. 0 — спад. В ШИ последовательности пара импульс+пауза большей длительности — лог. 1, меньшей — лог. 0. Нажав еще раз на кнопку SB2, можно проинвертировать результат, выведенный на ЖКИ. Признаком инверсии будет символ "~" перед буквой N в строках, сообщающих о длине кода. При курсоре, находящемся в нижнем пункте меню, последовательные нажатия на кнопку SB2 приводят к смене информации на ЖКИ в следующем порядке: временные параметры серии импульсов —> результаты декодирования без инверсии —> те же результаты с инверсией —> вновь временные параметры и далее по кругу.
         Чтобы записать новый сигнал, необходимо нажать на кнопку SB5, после чего программа выведет на ЖКИ запрос числа пропускаемых импульсов.
         "IR-master" собран на печатной плате, вид которой со стороны печатных проводников и расположение на этой стороне элементов для поверхностного монтажа (приемопередатчика В1, постоянных резисторов и конденсаторов типоразмера 0805) изображены на рис. 6. Микросхемы, кварцевый резонатор, подстроечный резистор R8 и питания Х2 установлены с противоположной стороны платы, как показано на рис. 7. Здесь же указаны точки подключения ЖКИ HG1, разъема Х1 для внутрисхемного программирования и кнопок SB1—SB5. Эти детали закреплены на корпусе прибора.
         Вместо МК PIC16F876 можно использовать PIC16F876A или PIC16C76. Необходимо лишь перед программированием задать такие значения разрядов слова конфигурации МК, чтобы были включены только Power-up Timer, Brown-out Reset и HS oscillator. К супервизору питания особых требований не предъявляется. С учетом необходимой переделки печатной платы можно применить любой с низким уровнем на выходе при чрезмерном понижении напряжения питания. Длительность его выходного импульса должна быть не менее 1 мкс при длительности перепадов не более 0,2 мкс.
         Чтобы запрограммировать установленный в приборе МК, не извлекая его, удаляют перемычку S1, а к разъему Х1 подключают программатор, например, MPLAB-ICD2 или его отечественный аналог MICD2 МС1. По завершении программирования необходимо выключить питание, отсоединить программатор и установить перемычку на место.
         Для питания прибора необходим стабилизированный источник напряжения 5 В ± 5 % при токе нагрузки 200 мА. Если предполагается использовать автономное питание, подсветку ЖКИ лучше сделать отключаемой, без нее прибор потребляет всего 35 мА.
         При отсутствии приемопередатчика TFDU4100 можно без изменения печатной платы применить его усовершенствованный аналог TFDU4101. Подойдут также TFDS4500 или TFDT4500, но под них плату придется откорректировать. В крайнем случае по схеме, показанной на рис. 8, можно изготовить приемник ИК сигналов из любого ИК фотодиода и микросхемы ТВА2800 или ее аналога КС1054ХАЗ. На печатной плате прибора предусмотрены контактные площадки для подключения такого приемника.
         Нужно сказать, что у него имеются некоторые недостатки. В частности, даже с помощью резистора R1, уменьшающего чувствительность, минимальное расстояние от исследуемого пульта до фотодиода VD1, при котором не наблюдается перегрузки и искажений сигнала, не удается сделать меньше 20 см. Наличие разделительных конденсаторов приводит к искажению формы импульсов. Этот приемник очень чувствителен к засветкам фотодиода, поэтому следует избегать попадания на него даже неяркого постороннего света.

    В архиве Исходные коды программ на ассемблере, прошивка и печатная плата

    irdaview.rar [62,42 Kb] (cкачиваний: 286)

    Комментарии