Фотодачик. Часть 2. Модуляция.

О простейших фотодетекторах я уже писал, но их применение для передачи информации или сигналов на расстояние весьма ограничено.

Предположим нам надо поймать световой сигнал, причем в любых условиях. И неважно будет это в полной темноте или с яркой внешней засветкой поймать и все тут. Но возникает проблема — как определить когда у нас есть сигнал, а когда фотодетектор засветило помехой?

Очевидный ответ — сравнение двух состояний. Когда полезный сигнал есть, и когда его нет. Для того, чтобы знать что полезный сигнал есть у него должен быть какой нибудь признак, например частота.
То есть если полезный сигнал будет мигать с частотой, скажем, 30кГц то мы увидим эти пульсации частоты при любом раскладе.
Теперь нам не достатавляет труда понять, что полезный сигнал есть: выходное напряжение с датчика скачет с частотой 30кГц — есть коннект. Если же не скачет — значит это всего лишь фоновая засветка и на нее можно не обращать внимания.

Теперь наш приемник можно усложнить.
Добавим усилитель с регулируемым коэффициентом.
А после него добавим фильтр, который будет отсекать постоянную составляющую (внешная фоновая засветка) и выделять только несущую частоту, те самые 30кГц. А выход с фильтра завяжем на управление коэффициентом нашего усилителя.

Получится АРУ (автоматический регулятор усиления). Работает он так — если после фильтра не слышно модуляции мы повышаем коэффициент усиления до тех пор пока не поймаем частоту полезного сигнала. Если не поймаем, то задираем коэффициент усиления настолько насколько сможем — все равно ничего кроме полезного сигнала не пролезет.

Но если вдруг сигнал появится, то уменьшаем усиление до такой степени, чтобы сигнал четко детектился. Уменьшать усиление надо для того, чтобы не усиливать шумы и не перегружать фильтр лишним мусором.

Несущая есть, на нее можно накладывать сигнал.
Информацию можно передавать пачками импульсов — есть пачка 0, нет пачки 1 или наоборот.

Структурная схема понятна, перейдем к практике. А тут даже изобретать ничего не надо — уже существюут готовые применики, имеющие на борту все необходимое. Например, широко распространенные, дешевые и простые в использовании датчики серии TSOP17xx где в качестве хх идет детектируемая частота. Например, TSOP1730 детектит несущую в 30кГц и когда чувствует ее наличие прижимает выходную линию в 0

Схема включения его элементарная — подать питалово, да завести выход на любой из портов микроконтроллера (на схеме обозначен как uC). Резисторы опциональны, их можно выкинуть.

В качестве передатчика может быть микроконтроллер, а импульсы можно генерить ШИМом.

Но есть тут одна хитрая особенность, не явная на первый взгляд — нельзя слать несущую без данных непрерывным потоком. Равно как и нельзя слать данные сплошняком. Так как АРУ начинает занижать чувствительность и в итоге передача затыкается через пару секунд. Это сделано для того, чтобы наш TSOP не забивался еще и периодическим шумом сходной частоты, например от люминисцентных ламп с электронным балластом, которые мерцают на очень близкой частоте.
Чтобы затыка не случилось надо слать информацию в виде удовлетворяющем условию:

Где f0 — это частота несущей на которую рассчитан TSOP.
Здесь биты шлются пачками (burst) , а N — это число импульсов несущей в одной пачке. Также указана минимальная длинна пачки и промежутка (Gap) между ними.

А сам параметр минимальной скважности (Duty Cycle) рассчитывается по такой формуле:

Если же надо сделать тупую «светилку», например, для организации ИК барьера реагирующего на пересечение, то можно не заморачиваться, а поступить так как советуют разработчики — собрав двойной генератор:

Обрати внимания на левую часть, которую я обвел красной рамкой. Тут два генератора собраных на простейшей логической микросхеме — нашей родимой К555ЛА3 или ее буржуйском оригинале. На первом элементе 2И-НЕ собран генератор пачек импульсов. Как видишь там есть кондесатор С1 на 10нФ и два резистора R1 и R2, а также диод.
Работает просто, допустим мы только включили схему и конденсатор у нас разряжен. На входе 1 всегда лог1, а на входе 2 у нас лог0 так как конденсатор еще разряжен. лог1 & лог0 = 0, но на выходе у нас инверсия, так что на 3 выводе будет лог1, то есть +5вольт. Конденсатор С1 начнет заряжаться от напряжения выхода через резисторы R1 и R2. Когда он полностью зарядится, то на входе 2 будет уже лог1, а лог1 & лог1 = 1, да инверсия = 0, на третьем выходе будет уже напряжение около нуля. И конденсатору С1 ничего не остается как начать разряжаться, но делать он уже это будет не через оба резистора, а только через R1, т.к. в обратную сторону через R2 ему помешает разрядиться диод. Обрати внимание насколько велика разница между R1 и R2 — в порядок! Так что длительность заряда будет в десять раз короче длительности разряда.

На втором 2И-НЕ элементе собран еще один генератор, на этот раз это генератор несущей частоты. У него и конденсатор меньше значительно, а значит заряжаться он будет быстрей и частота будет выше. Резисторы R3 и потенциометр P1 позволяют подстраивать частоту. Диод тут не нужен — несущая должна иметь одинаковые импульсы и паузы. Работает он точно также как и первый. НО! Обрати внимание на его верхний вход с номером 5. Если в первом генераторе там всегда был лог1, т.к. он был подвешан на питание, то тут на входе у нас выход с первого генератора. А значит второй генератор будет работать только тогда, когда ему разрешит первый. Все просто!
Вот и получается что данная конструкция выплевывает пачки 30кГц импульсов стоит только подать на нее питание.

Правая же часть это интерпритатор пачек, для создания полноценного сигнального ИК барьера. Там пачки интегрируются на RC цепочке (R7, C4), собираясь из импульсного (каждая пачка = импульс) в постоянный сигнал. На выходе происходит изменение уровня лишь тогда, когда сигнал действительно надолго прервался (чтобы не реагировать на провалы между импульсами-пачками).
Первый элемент (U1D) служит разделителем и пороговым формирователем, превращая колебания напряжения с RC цепи в логические уровни +5 и 0 вольт.
Бодяга из R8, R9, C5 и диода это линия задержки. Когда луч кратко пересекается вражеским телом, то пропадает много пачек, напряжение с интегратора снижается ниже лог0 и на входе U1D возникает ноль. Так как там инверсия на выходе, то на 11 выводе будет лог1, то есть +5вольт. Это напряжение, пройдя через диод и малое сопротивление R9 быстро зарядит кондер С5. Напряжение на заряженом С5 сформирует две лог1 на входе U1C, что даст 0 на выходе — АХТУНГ! АЛЯРМ!!!
Тело ушло с луча, на интеграторе (и на входе U1D) напряжение вновь подскочило, а с U1D стал опять выходить 0 и конденсатор С5 теперь начинает разряжаться, но благодаря диоду делать он это может только через R8 который уже в два порядка больше, а значит и разряд будет в два порядка дольше. И пока он не разрядится на выходе U1C будет гореть ахтунговый лог0.

Итог:
Схема не реагирует на провалы между пачками за счет первого интегратора. Но если потерялось много пачек (пересечение луча), то это интегратор пропустит, а элемент задержки запомнит и выдаст длительный сигнал тревоги. Гораздо длинней чем время пересечения луча вражеской тушей.

З.Ы.
Также, весьма в тему, будет отличная статья камрада Wodoocat о протоколах бытовых пультов дистанционного управления.

59 thoughts on “Фотодачик. Часть 2. Модуляция.”

  1. Забавно то, что статьи, которые ты пишешь как-то удивительно перекликаются с тем, чем я занимаюсь на момент написания статьи.

    Так вот, меня сейчас особенно интересует методика обнаружения коллизий при пересылке данных, когда мы имеем много передающих и много приёмных устройств (связь односторонняя).

    У меня есть свои соображения на этот счёт, но я бы не отказался послушать соображения и других людей. Причём, наибольший интерес представляет случай, когда у передающего устройства нет фотоприёмника.

      1. Про CSMA/CD я знаю. Но, как я и сказал, при этом передающий блок должен иметь и приёмник. Интересна ситуация, когда у передающего блока нет приёмника.

        Например, можно в начале каждого пакета слать несколько шумовых байтов, чисто случайных, но отвечающих определённому требованию (например, не более 2 одинаковых битов в шумовых байтах). Тогда два случайных байта от разных передатчиков, наложившись, с определённой вероятностью перестанут удовлетворять этому требованию. Так принимающее устройство узнает, что пакет недействительный.

        Есть ещё другой момент: битые пакеты. Допустим, принимающая сторона получит конец одного пакета и начало другого.

  2. Великие штуки :-) Для «тупых светилок» надо несущую модулировать пачками, чтобы правильно работала схема АРУ: она накладывает ограничения на частоту и скважность импульсов данных. Также важно защищать приемник от прямого попадания дневного света: собственный светофильтр не спасает и происходит насыщение встроенного фотодиода. Из личного опыта: барьер на TSOP1736 шириной 11 метров стабильно работает днем на улице (приемник помещен внутрь светонепроницаемой трубки, направленной на передатчик).

      1. Для несущей скважность всегда 2. Если давать только несущую, то работает на очень маленьких расстояниях (единицы — десятки сантиметров), на бОльших — глохнет через пару секунд. Вот документ, в котором есть пример схемы барьера (точнее, датчика на отражение) и дополнительные пояснения по поводу сигнала данных.

          1. Пожалуй, да. Либо интегратор: период сигнала слишком маленький, интегратор выдает что-то слабо изменяющееся и не пересекающее порог ТШ. В общем-то, идея схемы в том, чтобы отловить посылку пульта и не реагировать на постоянный фон с частотой, близкой к несущей — от какой-нибудь ЛДС с электронным балластом, например.

  3. ппц.. ну и мозгов у тех кто ТСОП придумал…
    а мое желание сделать из ИК фотодида ТСОП уже пропало =)
    Что касательно статьи то ничего так! тема сисек раскрыта! пешы исчо!

  4. Странно как-то фильтр работает в картинке. DC компонента должна отрезаться HP фильтром на частоту выше частоты модуляции (типа конденсотором) :).
    И обратная связь на АРУ вроде как должна идти после детектора частоты, так только он может сказать что мы видим.

    Это чисто мое ИМХО, но в простых детекторах АРУ не нужен.
    Это к тому же FM сигнал, теоретически пока сигнал находится выше/ниже какого-то уровня, он будет детектится не зависимо от dc компоненты.
    Короч очень живучая, хорошая и главное дальнобойная микруха :).
    Интересно кстати как там производится тренировка фильтра перед подачей сигнала.

            1. Они все на ультразвуке. Отражение звука практически не зависит от типа обьекта. Тут замеряется скорость прохождения звука, а не сила его отражения.

    1. 00N подойдет без проблем.
      КТ3107 тоже должен сгодится, тут транзы работают в ключевоом режиме.

      Потенциометр тоже любой, главное на такое же сопротивление, иначе частота уплывет.

    2. > Подойдут ли аналоги 4093 — 74LS00N или К561ТЛ1

      4093 — это «И-НЕ» с характеристикой триггера шмидта. А наша ЛА3 или буржуйская 74×00 в таком генераторе вряд-ли заработает, ибо без гистерезиса она тупо войдёт в линейный режим и на выходе будет постоянка (хотя может и синус небольшой амплитуды…). Так что подходящие аналоги:
      561ТЛ1 или 74HC132

      1. Дык какую решил ставить мс?
        Если вдруг всё-таки 74LS00, то у неё цоколёвка не подходит под твою разводку.
        Ну и остаюсь при своём мнении, что на ЛА3/74LS00 работать не будет. Хотя бы потому, что прямая замена серии КМОП на ТТЛШ некорректна. Может и удастся завести, только если сильно поменять номиналы обвязки. Взять хотя бы R1 = 2.2МОм — для ТТЛШ с их входным сопротивлением, это как мёртвому припарка.

        1. Поставил К561ТЛ1, только не работает что то =)
          Это моя первая сложная схема.
          На выходе ( 10 ноге) постояно +5
          Но на 3 ноге (OUT) TSOP когда светодиод виден +4.4 , когда прикрываю его +5

  5. ШЕКАРНЕЙШИЙ ответ на мой вопрос который я задал на форуме!!!!!
    http://easyelectronics.ru/forum/forbeginers/topic-445
    Я так понял на схеме несущего генератора подстроечным резистором можно регулировать
    частоту? Если да то в каких приделах?
    В смысле можно ли его настроить на 36кГц или 38 кГц?
    И ещё что делает с сигналом из тсопа правая верхняя часть той же схемы?

    1. Как понимаю, там пачки интегрируются, собираясь в постоянный сигнал и на выходе происходит изменение уровня лишь тогда, когда сигнал действительно надолго прервался (чтобы не реагировать на провалы между пачками). А второй элемент это линия задержки. Т.е. когда первый дал сработку, то через небольшое сопротивление R9 заряжает кондер. А когда сигнал вернулся обратно, то кондер начинает разряжаться уже через резистор R8, а это долго.

      Итог:
      Схема не реагирует на провалы между пачками за счет первого интегратора. Но если потерялось много пачек, то это интегратор пропустит, а второй запомнит и выдаст длительный сигнал тревоги. Гораздо длинней чем время пересечения луча вражеской тушей.

    2. Частота регулирцется в широчайших пределах. Точно не скажу, считать лень, но вкручиванием туда потенциометра с большим размахом (скажем на 47к) можно добиться любой частоты.

  6. не описал, что «чувствительность» или «дальнобойность» зависит от частоты (линейно) и скважности (не экспериментировал).
    т.е. меняя частоту , по «срабатыванию» можно приблизительно сказать, на каком расстоянии находится объект. разумеется, с другой поверхностью обьекта будет и другое «расстояние».

  7. Простите за дилетантскую просьбу, самому не получается разобраться.
    Нельзя ли накидать простейшую схемку типа: нога микроконтроллёра-передатчика —> нога микроконтроллёра-приёмника.
    И ещё вопрос: зачем конденсатор в схеме после слов «Схема включения его элементарная — подать питалово, да завести выход на любой из портов микроконтроллера (на схеме обозначен как uC). Резисторы опциональны, их можно выкинуть.».
    P.S. Приёмник я подглядел на http://woodocat.ru/LJ/IR/IR-TST.gif, а вот передатчик — не пойму: надо самой ногой мигать с частотой 30 кГц? Или нога мигает тридцатикилогерцовым генератором?

    1. Конденсатор обычный блокирующий, для гашения импульсных помех. Ставится почти на каждую микросхему на питание. Для профилактики, чтобы надежней работало.

      Да, ножка передатчика должна менять состояние с 0 на 1 с частотой 30кГц.
      При 1 светодиод горит, при 0 не горит

      С передатчика светодиод включается так:
      нога контроллера — |>|—— [резистор (510ом)] —- земля.

  8. Здрасте!
    Вобщем хочу я сделать один портативный девайс который сможет общаться ещё с одним девайсом по UART только не по проводам а по ИК. Но вот возникла проблема: как мне сделать чтобы нне мешала засветка? Можно конечно поставить модуляцию но я хочу юзать обычный аппаратный юарт и ИК приемопередатчики от мобилок.
    ЗЫ: дальность мне нада не меньше 5 см но дальность более 20 см вообще не нужна. Может модуляция и не нада? кто нить делал подобные девайсы использую ИК-порты с мобилок?

  9. Я не нашел TSOP17xx, были только ILMS5360. Мануал что-то сейчас не могу найти — на работе точно есть. Так вот что я заметил. Только что встал из-за паяльника, чтобы написать. Собрал обычный генератор на 561ла7 (частота 36кГц), импульсы на базу транзистора, в коллекторе моргает светодиод. Ну и запитал 5360. Моргаю ему в глаз, на выходе 0. И что удивительно (пока для меня) — около 20 секунд держал (расстояние ~ 30см), все равно 0 на выходе! Вывод напрашивается сам собой: или в 5360 не стоит АРУ, или мало (близко)держал…
    Завтра в дверной косяк вкручусь — там расстояние около метра. Отпишусь…

    1. Отписываюсь — на выходе 0! Ждал 30 секунд — ноль! Точнее сказать, 38мВ. Так вот пока мое предварительно резюме: если уж хотите делать нечто подобное описанное в статье, попробуйте поискать не TSOP, а ILMS53x0. ИМХО, у него наверное отсутствует АРУ. Надо повнимательнее поискать даташит на 5360. Но это только предварительное резюме!

  10. Возникла необходимость сделать модель машини которая будет управляться с компа а связь будет происходить через ИК звязь.
    Связь должна быть двухсторонней, но это вроде бы не проблема, но мшинка будет ездить и поворачивать а значит светодиод не будет постоянно направленый на приемник.
    Вобщем я хочу прицепить ИК диод и ИК-приемник машинки на самом верху. Насколько реальная эта идея? и на каком макс растоянии я смогу нормально контролировать машинку еси она будет ездить по комнате примерно 40х40м в дневное время и возможно с включеными ЛДС?
    PS: оба светодиоды BIR-BM13J4G-SI (Диаметр 5мм, l=940нм, 50мА, 1,5В, 5,8мВт/кв.см, угол изл. 20град, тип линзы — бесцветный) ИК приемник точно не знаю, но думаю обычный TSOP.

      1. отключать приемник во вемя передачи это не проблема. Мне интерестно как сделать чтобы при передачи по ЮАТР сигнал был в виде часттоты 38 кГц, можно ли поставить 2 транзистора ВС547, базу одного соеденить с OCR и давать на него частоту а базу второго в к Tx?

  11. Здравствуйте. У меня вопрос. Я не совсем понимаю, с какими промежутками надо слать несущую для организации ИК барьера? Так как TSOP1730 просто забивается и перестаёт прижимать ногу к земле

  12. Собрал схему(первую ступень), микросхему логики взял К155ЛА3.
    Схема http://www.pictureshack.ru/images/93921_IMG_0335.JPG
    Светодиод загорается, и тухнет,
    Принципиальная схема: http://www.pictureshack.ru/images/12997_Bezymyannyi.png
    Как объяснить работу схемы? Как получить генератор?

  13. Подскажите, пожалуйста. Никак не могу сообразить в схеме ИК-барьера. Если TSOP1738 принимает пачку импульсов, какой уровень сигнала будет на его выходе? Как я понял из даташит, будет низкий уровень. А при отсутствии пачки (несущей) — высокий. Если так, то при отсутствии «вражеской туши» на ноге 13 U1D будет низкий уровень, так как короткие положительные импульсы с выхода TSOP1738 будут сглаживаться через RC-цепь (R7 и C4), а это не соответствует выше приведенному описанию работы схемы. Подскажите, пожалуйста, где я ошибаюсь?

Добавить комментарий