Схема ик приемника для дистанционного управления электрическими приборами. Arduino Uno

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

1. ИК-пульт

Что нужно для того, чтобы научить робота слушаться инфракрасного (ИК) пульта? Во-первых, нам потребуется сам пульт. Можно использовать обычный пульт от телевизора, а можно приобрести миниатюрный пульт от автомагнитолы. Именно такие пульты часто используются для управления роботами. На таком пульте есть 10 цифровых кнопок и 11 кнопок для манипуляции с музыкой: громкость, перемотка, play, stop, и т.д. Для наших целей более чем достаточно.

2. ИК-датчик

Во-вторых, для приема сигнала с пульта нам потребуется специальный ИК-датчик. Вообще, мы можем детектировать инфракрасное излучение обычным фотодиодом/фототранзистором, но в отличие от него, наш ИК-датчик воспринимает инфракрасный сигнал только на частоте 38 кГц (иногда 40кГц). Именно такое свойство позволяет датчику игнорировать много посторонних световых шумов от ламп освещения и солнца. Для этого урока воспользуемся популярным ИК-датчиком VS1838B , который обладает следующими характеристиками:
  • несущая частота: 38 кГц;
  • напряжение питания: 2,7 — 5,5 В;
  • потребляемый ток: 50 мкА.
Можно использовать и другие датчики, например: TSOP4838, TSOP1736, SFH506.

3. Подключение

Датчик имеет три вывода (три ноги). Если посмотреть на датчик со стороны приёмника ИК сигнала, как показано на рисунке,
  • то слева будет - выход на контроллер,
  • по центру - отрицательный контакт питания (земля),
  • и справа - положительный контакт питания (2.7 — 5.5В).
Принципиальная схема подключения Внешний вид макета

4. Программа

Подключив ИК-датчик будем писать программу для Ардуино Уно. Для этого воспользуемся стандартной библиотекой IRremote , которая предназначена как раз для упрощения работы с приёмом и передачей ИК сигналов. С помощью этой библиотеки будем принимать команды с пульта, и для начала, просто выводить их в окно монитора последовательного порта. Эта программа нам пригодится для того, чтобы понять какой код дает каждая кнопка. #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { Serial.begin(9600); // выставляем скорость COM порта irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли Serial.println(results.value, HEX); // печатаем данные irrecv.resume(); // принимаем следующую команду } } Загружаем программу на Ардуино. После этого, пробуем получать команды с пульта. Открываем монитор последовательного порта (Ctrl+Shift+M), берём в руки пульт, и направляем его на датчик. Нажимая разные кнопочки, наблюдаем в окне монитора соответствующие этим кнопкам коды. Проблема с загрузкой программы В некоторых случаях, при попытке загрузить программу в контроллер, может появиться ошибка: TDK2 was not declared In his scope Чтобы ее исправить, достаточно удалить два файла из папки библиотеки. Заходим в проводник. Переходим в папку, где установлено приложение Arduino IDE (скорее всего это «C:\Program Files (x86)\Arduino»). Затем в папку с библиотекой: …\Arduino\libraries\RobotIRremote , и удаляем файлы: IRremoteTools.cpp и IRremoteTools.h. Затем, перезапускаем Arduino IDE, и снова пробуем загрузить программу на контроллер.

5. Управляем светодиодом с помощью ИК-пульта

Теперь, когда мы знаем, какие коды соответствуют кнопкам пульта, пробуем запрограммировать контроллер на зажигание и гашение светодиода при нажатии на кнопки громкости. Для этого нам потребуется коды (могут отличаться, в зависимости от пульта):
  • FFA857 — увеличение громкости;
  • FFE01F — уменьшение громкости.
В качестве светодиода, используем встроенный светодиод на выводе №13, так что схема подключения останется прежней. Итак, программа: #include "IRremote.h" IRrecv irrecv(2); // указываем вывод, к которому подключен приемник decode_results results; void setup() { irrecv.enableIRIn(); // запускаем прием } void loop() { if (irrecv.decode(&results)) { // если данные пришли switch (results.value) { case 0xFFA857: digitalWrite(13, HIGH); break; case 0xFFE01F: digitalWrite(13, LOW); break; } irrecv.resume(); // принимаем следующую команду } } Загружаем на Ардуино и тестируем. Жмем vol+ — светодиод зажигается. Жмем vol- — гаснет. Теперь, зная как это все работает, можно вместо светодиода управлять двигателями робота, или другими самодельными микроэлектронными устройствами!

Проверка приёмника инфракрасного сигнала

Как известно, ИК-приёмник представляет собой специализированную микросхему. Это осложняет его проверку. Но, несмотря на это проверить ИК-приёмник можно. Для этого понадобятся кое-какие приспособления. А именно:

    Блок питания . Желательно, чтобы блок питания был стабилизированный с выходным напряжением 5 вольт. Можно с успехом использовать самодельный блок питания с регулируемым выходным напряжением.

    Цифровой мультиметр . Подойдёт любой цифровой мультиметр с возможностью измерения постоянного напряжения.

    Любой исправный пульт дистанционного управления (ДУ).

Перед тем как начать проверку ИК-модуля необходимо определить цоколёвку его выводов. Если этого не сделать, то можно «спалить» ИК-модуль. Если к вам в руки попал неизвестный ИК-приёмник, то не стоит торопиться с его подключением. Для начала нужно внимательно осмотреть его со всех сторон и найти его маркировку. Далее по маркировке находим даташит на данную модель ИК-приёмника на сайте alldatasheet.com или через поиск Гугла. О том, как это сделать читайте . Как правило, в даташите есть рисунок с указанием цоколёвки. Разобраться по нему легко.

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

Вывод под номером 1 - это вывод общего провода (GND ). К этому выводу подключается минусовой провод блока питания. Вывод под номером 2 - это плюсовой вывод (Vs ). К нему подключается плюсовой провод блока питания. Вывод под номером 3 - это выход сигнала приёмника (OUT ).

Если необходимое оборудование подготовлено, а цоколёвка выводов ИК-приёмника определена, то собираем проверочную схему. Собирать проверочную схему лучше на беспаечной макетной плате . Это займёт пару минут. Если беспаечной макетной платы нет, то придётся спаять проверочную схему навесным монтажом.

Итак, собираем или паяем проверочную схему. Плюсовой вывод от блока питания (+5 V) подключаем к плюсовому выводу ИК-модуля (Vs), минус – к минусовому выводу ИК-приёмника (GND). А третий вывод ИК-приёмника (OUT) подключаем к плюсовому (красному ) щупу мультиметра. Минусовой (чёрный ) щуп мультиметра подключаем к общему проводу (GND) проверочной схемы. Мультиметр переключаем в режим измерения постоянного напряжения (DC ) на предел 20 V.

Методика проверки.

Тем, кто уже узнал, что такое ИК-приёмник известно, что пока на ИК-приёмник не попадает излучение от пульта ДУ, на его выходе присутствует напряжение практически равное напряжению его питания. То есть 5 вольт. Оно не измениться до тех пор, пока на чувствительный фотодиод приёмника не начнут попадать «пачки» инфракрасных импульсов от пульта ДУ. На фото видно, что на выходе (OUT) ИК-приёмника 5,03 вольт.

Суть проверки заключается в том, чтобы проверить изменение напряжения на выходе ИК-модуля при попадании на него инфракрасного излучения от любого пульта ДУ.

Как только на фотодиод ИК-приёмника начнут падать пачки инфракрасных импульсов от пульта ДУ, то напряжение на его выходе будет падать. В теории оно должно падать практически до нуля, но поскольку мультиметр не успевает среагировать на изменение напряжения, то он будет показывать падение напряжения на несколько сотен милливольт. Напомним, что сигнал пульта ДУ имеет форму пачек импульсов. Именно поэтому рядовой мультиметр и не успевает отразить на дисплее столь быстрые изменения напряжения на выходе модуля.

Жмём на любую кнопку пульта ДУ и не отпускаем. При этом будет видно, как на дисплее мультиметра значение напряжения упадёт с 5,03 вольт до 4,57. Напряжение на выходе уменьшилось на 460 милливольт (mV).

Если отпустить кнопку пульта ДУ, то на дисплее значение напряжения вновь восстановиться до 5 вольт.

Как видим, приёмник инфракрасного сигнала исправно реагирует на сигнал с пульта ДУ. Значит ИК-модуль исправен . Аналогичным образом можно проверить и другие приёмники инфракрасного сигнала в модульном исполнении.

Думаю, понятно, что если ИК-приёмник не реагирует на сигналы с пульта ДУ и на его выходе напряжение не меняется ни на милливольт, то с большой степенью вероятности можно утверждать о том, что ИК-приёмник неисправен. На практике проводилась проверка ИК-приёмника HS0038 взятого из цветного телевизора, который сгорел во время грозы. Так вот, при проверке ИК-приёмника оказалось, что на его выходе отсутствует напряжение даже в «ждущем» режиме, а ток потребления равен 0. ИК-модуль оказался сгоревшим (скорее всего из-за превышения напряжения питания более 6 вольт).

Среди инфракрасных приёмников серии TSOP и аналогичных есть так называемые низковольтные экземпляры. В своей маркировке они имеют цифру 3. Представителем такого низковольтного ИК-модуля является TSOP 3 1236. Данный ИК-приёмник работает уже при напряжении питания 3 вольта.

Если проверяется низковольтный экземпляр ИК-приёмника (например, такой как TSOP31236 ), то на ИК-модуль можно подать напряжение питания как в 3 вольта, так и в 5 вольт. Методика проверки такого ИК-приёмника аналогична описанной.

При проверке приёмников инфракрасного сигнала стоит помнить, что любой из них имеет в своём составе фильтр. Фильтр этот настроен на определённую частоту, обычно лежащую в диапазоне 30-40 килогерц. Но на практике в руки может попасть и ИК-модуль с частотой настройки фильтра и 56, и 455 килогерц (мало ли ). Так вот, инфракрасный сигнал от рядового пульта такой приёмник может быть и будет принимать, но на выходе сигнала не будет. Почему? Потому что пульт ДУ будет излучать сигнал промодулированный частотой, например, 36 килогерц, а приёмник настроен на приём сигнала, промодулированный частотой в 455 килогерц. Понятно, что в таком случае сигнал просто не пройдёт через фильтр.

Для широко распространённых ИК-приёмников серии TSOP и аналогов частота настройки фильтра обычно составляет 36; 36,7 и 38 килогерц. Они хорошо принимают сигнал практически от любого пульта ДУ, взятого от бытовой электроники. И даже если частота фильтра не совсем совпадает с частотой модуляции сигнала от пульта ДУ, сигнал будет приниматься. Иногда для этого требуется всего лишь ближе поднести пульт к ИК-приёмнику.

схема из журнала "Юный Техник".

Интересное направление радиоэлектроники, которая дополнила эту электронику новыми преимуществами "невидимого" света (инфракрасный свет). Вот я и предлагаю схему простого (для примера) приемника и передатчика основанного на инфракрасных лучах. Основа: операционный усилитель к140уд7 (у меня тут уд708), излучающий и принамющие ИК-фотодиоды, УНЧ (к548ун1а(б,в - индексами)- на два канала)(правда куда второй канал усилителя "включите" решать вам - схема предатчика рассчитана на один канал, т.е. моно). Питание устройства: вообще рекомендую с приличной стабилизацией токов (а так "дендюшный" адаптер раздражает фоном "сети"). Способ: амплитудно-модулированный сигнал передатчика усиливается приемником в 1000 раз.

Как работает устройство. Предлагаю Вам просмотреть небольшой видеоролик тестирование ИК-пульта "на слух". Можно быстро проверить работоспособность и мощность сигнала по звуку.

Схема ИК-приемника и ИК-передатчика

При сборке конденсаторы С1 и С2 должны быть как можно ближе к усилителю! К выходу можно подключить высокоомные наушники (для низкоомных нужен отдельный УНЧ). Фотодиод ФД7 (у меня ФД263: "таблетка" с фокусирующей линзой); 0.125Вт резисторы: R1 с R4 задают коэффициент услиния сигнала в 1000 раз. Приемник налаживается просто: фотодиод направляется на источник ИК-излучения, например, лампу 220в-50Гц: нить накала будет фонит с частотой 50Гц или пульт ДУ от телевизора (видео и т.д.).Чувствителность приемника большая: нормально принимает сигналы отражённые от стен.

На передатчике ИК светодиоды АЛ107а: подойдёт любой. R2 2 кОм, С1 1000мкФх25в, С2 200мкФх25В, трансформатор тоже любой. Хотя вполне можно обойтись без трансфорсматора - подать усиленный аудиосигнал на конденсатор С2.

Схема устройств

Схема ИК приемника с УНЧ

Недавно по необходимости собрал ИК приемник для проверки ИК пультов (телевизоров и DVD). После доработки схемы - установил моно УНЧ TDA7056. Данный усилитель имеет хорошие харакетеристики усиления около 42 дБ; работает в диапазоне напряжении от 3В до 18В, что позволило ИК приемнику работать даже при напряжении 3В; диапазон усиления TDA от 20 Гц до 20кГц (УД708 проспукает до 800 кГц) вполне достаточно для использования приемника в качетсве аудио сопровождения; имеет защиту от короткого замыкания на всех "ножках"; защиту от "перегрева"; слабый коэффициент собственных помех. В целом мне понравился этот компактный и надежный УНЧ (у нас он стоит 90р.).
Есть к нему с подробным описанием. На рис.1 отображен пример использования усилителя.


Фото TDA7056


Рис.1. Схема усилителя с TDA7056

В итоге получился ИК приемник рис.2, который работает в диапазоне напряжении от 3В до 12В. Рекомендую применять для питания приемника батареи, либо аккумуляторы. При использованиии блока питания необходим стабилизированный источник, иначе будет слышен фон сети 50Гц, который усиливает УД708. Если устройство находится вблизи источника сетевого напряжения или радиоизлучения, то могут возникнуть наводки. Для уменьшения помех в схему необходимо включить конденсатор С5. TDA7056 рассчитан на выходной динамик в 16 Ом, к сожалению у меня такого нет. Пришлось использовать 4-омный динамик на 3 Вт, который был подключен через одноваттный резистор 50 Ом. Слишком низкое сопротивление катушки динамика вызывает избыток мощности и перегревает усилитель. В целом из-за дополнительного резистора УНЧ не греется, но обеспечивает вполне приемлемое усиление.

Приемник ИК — команд пульта дистанционного управления для управления бытовой техникой может быть легко сделан с применением десятичного счетчика CD4017, таймера NE555 и инфракрасного приемника TSOP1738.

Используя эту схема ИК приемника, можно с легкостью управлять своей бытовой техникой с помощью пульта от телевизора, DVD-плеера или же с помощью схемы ПДУ описанного в конце статьи.

Схема ИК приемника для дистанционного управления

Выводы 1 и 2 ик-приемника TSOP1738 используются для его питания. Резистор R1 и конденсатор C1 предназначены для стабильной работы и подавления различных помех по цепи питания.

Когда ИК лучи на частоте 38 кГц падает на ИК-приемник TSOP1738, на его выходе 3 появляется низкий уровень напряжения, при исчезновении ик-лучей вновь появляется высокий уровень. Этот отрицательный импульс усиливается транзистором Q1, который передает усиленный частотный сигнал на вход десятичного счетчика CD4017. Выводы счетчика 16 и 8 предназначены для питания его. Вывод 13 подключен к земле, разрешая тем самым его работу.

Выход Q2 (4 контакт) подключен к выводу сброса (15 контакт), чтобы сделать работу CD4017 в режиме бистабильного мультивибратора. В время первого импульса на Q0 появляется лог1, второй синхросигнал вызывает появление лог1 на Q1 (Q0 становится низким), а на третий сигнал опять выводит на Q0 лог 1 (Q2 подключен к MR, поэтому третий тактовый сигнал сбрасывает счетчик).

Давайте предположим, счетчик совершил сброс (Q0 высокий уровень, а остальные низкий). При нажатии на кнопку ПДУ, тактовый сигнал воздействует на счетчик, что приводит к появлению высокого уровня на Q1. Таким образом, LED D1 светится, транзистор Q2 включается и активируется реле.

Когда вновь нажимают кнопку ПДУ, на выводе Q0 появляется лог 1, реле отключается и LED D2 загорается. LED D1 указывает, когда прибор включен и LED D2 указывает, когда прибор выключен.

Вы можете использовать свой пульт от телевизора для управления или собрать отдельный на по приведенной ниже схеме.

В сегодняшней статье будет рассматриваться подключение ИК приемника TSOP34836 к плате Aduino UNO. Для этих целей можно применить любой имеющийся у вас приемник, совместимый с вашим пультом по частоте. Назначение выводов показано на рисунке.

1. Vout – выход приемника.
2. GND – «земля», общий провод.
3. Vcc – питание.
Передача данных от ИК пульта к приемнику осуществляется по протоколу RC5, представляющий из себя последовательность импульсов. Подключение осуществляется по следующей схеме.

А собрав, получаем примерно следующее:

Для обработки данных, передаваемых пультом, используем библиотеку IRremote, данная библиотека прикреплена к статье. Вставляем следующий код:

#include "IRremote.h" IRrecv irrecv(11); // Указываем пин, к которому подключен приемник decode_results results; void setup() { Serial.begin(9600); // Выставляем скорость COM порта irrecv.enableIRIn(); // Запускаем прием } void loop() { if (irrecv.decode(&results)) // Если данные пришли { Serial.println(results.value, HEX); // Отправляем полученную данную в консоль irrecv.resume(); // Принимаем следующую команду } }

Теперь в консоле COM - порта можно наблюдать код нажимаемой клавиши в HEX.


Вот и все, теперь можно использовать эту схему в ваших устройствах. Ниже приведен пример одного из практических применений ИК - приемника.

В качестве демонстрации будет показано, как с помощью ИК-пульта управлять сервомашинкой.

Схема устройства:

Вот так оно должно выглядеть:

Для работы устройства используем следующий код:

#include "Servo.h" #include "IRremote.h" IRrecv irrecv(11); decode_results results; Servo servoMain; int servPoz = 90; //Начальное положение сервы int lastPoz = 0; void setup() { irrecv.enableIRIn(); servoMain.attach(10); // Servo присоединен к 10 выводу servoMain.write(servPoz); } void loop() { if (irrecv.decode(&results)) { int res = results.value; Serial.println(res, HEX); if(res==0xFFFF906F)// Если нажата кнопка "+" { lastPoz=res; servPoz++; servoMain.write(servPoz); } else if(res==0xFFFFA857)// Если нажата кнопка "-" { servPoz--; lastPoz=res; servoMain.write(servPoz); } else if(res==0xFFFFFFFF)// Если кнопку удерживают { if(lastPoz==0xFFFF906F) servPoz++;// Удерживают "+" if(lastPoz==0xFFFFA857) servPoz--;// Удерживают "-" servoMain.write(servPoz); } irrecv.resume(); delay(100); } }

Пульт используется какой-то китайский, при нажатии "+" серва вращается в одну сторону, при нажатии "-", в другую.