Пруф оф концепт - прием и передача ИК сигнала одним светодиодом

Решил сделать девайс, записывающий сигналы с ПДУ (от ТВ, DVD, кофеварок… :)), а затем воспроизводящий их. Вообще ничего необычного в этом нету, но возможно кому-то понравится решение: устройство состоит из МК (STM8L), резистора и ИК-диода… ну и питание еще :) А никаких дополнительных фильтров и усилителей нету.

Сия заметка исключительно «proof of concept» и код который я к ней прицепил не умеет ничего кроме записи и воспроизведения одной команды. Но функционал легко можно расширить.
Если верить законам физики, то светодиод может работать «наоборот». Посветив на ИК-диод другим таким-же диодом (в нашем случае это пульт) мы увидим скачки напряжения на нем. Если катод первого светодиода подключен к земле, то на аноде появятся положительные импульсы. Их амплитуда зависит от мощности излучателя в пульте, направления излучения (точно в диод или немного в сторону) и кучи других факторов. Если светить вплотную мощным пультом, то можно получить выбросы в 1-2 Вольта.
Проблема в том, что емкость проводов, дорожек, монтажа, выводов МК вместе с очень высоким входным импедансом ножки, создают прикольную RC цепочку, которая сглаживает импульсы на диоде так, что несущую частоту уже не разглядеть. Пришлось усложнять схему в два раза — ставить шунтирующий резистор:

(там написано D0 — это пин, на котором удачно совпали выход таймера и вход компаратора)
Теперь в МК подаются импульсы амплитудой 100-500мВ. Их мы заводим на +вход компаратора. На -вход подаем напряжение со встроенного DAC (соединить DAC с компаратором можно прямо внутри МК, переключив пару бит в регистрах). Отлично! Можно выставить DAC на любое нужное напряжение, и оно будет использоваться как порог компаратора.

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

(красный — пачки импульсов с диода, желтый — реакция системы на это безобразие)
Информация о длительности импульсов и пауз закидывается в массив, откуда ее потом можно воспроизводить.
Для воспроизведения сигнала используется таймер TIM3 в ШИМ-режиме. Его второй канал очень удачно оказался на ножке D0.
А вот, для примера, копируем сигнал от пульта для Sony Alpha:
(дискавери питается от батареек)
Исходники(IAR 1.30)
- +17
- 13 февраля 2013, 21:23
- dcoder
- 1
Файлы в топике:
IR_Sense_Test.zip
Молодец!
Нет, ну правда. В современную эпоху людей, которые только и умеют, что искать по каталогу нужную детальку, да запаять по схеме из ДШ такие статьи заставляют смотреть на мир немного подругому.
Нет, ну правда. В современную эпоху людей, которые только и умеют, что искать по каталогу нужную детальку, да запаять по схеме из ДШ такие статьи заставляют смотреть на мир немного подругому.
Коллега dcoder всегда поражал меня умением «нетрадиционно» применить стандартные компоненты. То температуру измеряет с помощью светодиода, то делает программатор из клавиатуры… ИМХО, это очень полезная черта для инженера – умение смотреть «под другим углом» на обыкновенные вещи. За это, однозначно, ему «респект и уважуха» :)
Проблема в том, что емкость проводов, дорожек, монтажа, выводов МК вместе с очень высоким входным импедансом ножки, создают прикольную RC цепочку, которая сглаживает импульсы на диоде так, что несущую частоту уже не разглядеть.Зато и сигнал на выходе диода сразу демодулированный :) Алсо, ты про емкость самого диода забыл, а она, подозреваю, далеко не последний вклад вносит.
А с чем связан выбор включения светодиода как фотогенератора, а не фотодиода (т.е. анод на землю, катод подтянуть к питанию)? Теоретически, в этом режиме можно получить на высокоомной нагрузке амплитуду, достаточную чтобы даже без компаратора обойтись.
Потому что так вообще ничего не надо делать, при переключении приемник/излучатель. И обходимся одним пином.
А если сигнал демодулированный, то как узнать частоту несущей? ;) А она потом пригодится при передаче
А если сигнал демодулированный, то как узнать частоту несущей? ;) А она потом пригодится при передаче
Нужен еще один подход к станку. Резистор лишний. Втыкаешь светик между выводов. Для детекта подаешь напругу встречно, заряжая емкость вывода, а фототок будет эту емкость разряжать. Время разряда зависит от интенсивности засветки. Но всяко больше естественной утечки. Код этой реализации был вроде бы у Элмчена.
Гдето я уже это видел. Если я правильно помню, то оригинал был на английском. Был русский перевод со ссылкой на оригинал. Еще там была типа реклама — Теперь телефоны перемигиваясь диодами подсветки могут общаться
Обычные телефоны? Без вмешательства в железо? Не верю, например.
А так-то, данные при помощи монитора я уже передавал www.youtube.com/watch?v=g2XmBdOXa-U
А так-то, данные при помощи монитора я уже передавал www.youtube.com/watch?v=g2XmBdOXa-U
Комментарии (26)
RSS свернуть / развернуть