094-Датчик приближения на ИК-лучах (ATtiny13).

Автор: | 10.04.2013

 

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

 

Видео работы датчика:

Чем отличается такой датчик от, скажем, датчиков движения заводского исполнения (которые, кстати, стали очень доступными и недорогими)?

Главное отличие – это область применения. Готовые датчики все-таки больше ориентированы на большие помещения и контроль движения. В нашем случае датчик компактен и больше рассчитан на функции контроля приближения и предназначен для встраивания в готовые проекты.

 

Сфера использования может быть обширной:

— реакция объектов на приближение руки (например, интерактивные игрушки, автоматические устройства);
— открывание шкафчиков, дверей и тому подобное при приближении руки;
— зажигание света при проходе «контрольной точки»;
— ориентация в пространстве робота (контроль стен и препятствий);
— системы управления движеньями рук;
— сигнализация;
— …

1 Принцип работы.

 

Работает датчик очень просто. Устройство с определенным периодом  посылает импульсы при помощи IR-светодиода. Инфракрасные лучи, отражаясь от объекта, принимаются инфракрасным приемником TSOP. Объект есть – есть сигнал, объекта нет – нет и сигнала. Дабы не было ложных срабатываний от бытовых пультов, помех, импульсов при включении света, устройством передается определенная последовательность импульсов и при декодировании TSOP, все что не совпадает с этой последовательностью – отбрасывается. На бытовую технику (управляемую при помощи ИК-пультов) устройство не оказывает никакого воздействия, так как сигнал относительно слаб и промодулирован последовательностью которая нигде не используется.

 

2 Схема, плата.

094-Proximity_scheme - Схема датчика приближения в sPlan

 

Готовая плата IR драйвера

 

069-IR-driver-PCB - Печатка датчика приближения в Layout

Конструктивно датчик собран на уже сделанной нами ранее плате IR-драйвера. Платка хорошо зарекомендовала себя в различных проектах, поэтому было принято решение и этот проект делать на ней же.
Незначительным изменением конструкции является установка переменного резистора для подстройки чувствительности датчика. Больше изменений нет. Компоненты, применяемые в конструкции, не критичны к номиналам – можно применять близкие к ним.

 

3 Прошивка микроконтроллера.

Для прошивки микроконтроллера (в  плате) нужно подключить программатор к соответствующим выводам:

094-main - Прошивка датчика приближения.
094-Fuse.png - Фьюзы датчика приближения

Напоминаю:Для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Фьюз-байты: Low=$7A, High=$FF
Как программировать микроконтроллеры читаем в FAQ.

 

4 Конструктивные особенности.

Одним из недостатков работы схемы является зависимость чувствительности датчика от общей освещенности. Это происходит по причине автоматической коррекции чувствительности самим TSOP (для того чтобы посторонняя освещенность не выводила приемник в нерабочую область).

Уменьшить этот эффект можно несколькими способами:

— Для того чтобы на приемник меньше попадало постороннего света нужно его поместить в непрозрачную трубку (я использовал черную термоусадку, предварительно ее усадив для получения более толстых стенок) и закрыть трубку с одной стороны непрозрачной пробкой (я залил черным горячим клеем) с другой поставив темно-красный светофильтр. Такая конструкция максимально ограждается от непрямых засветок при этом не страдает чувствительность так как для ИК-лучей красный светофильтр обладает хорошо проницаемый. Желательно и ИК-светодиод поместить в трубку – это уменьшит боковые отражения инфракрасных лучей – способных давать ложные срабатывания.

— Другим способом решения этой проблемы – применение коррекции по освещенности, например, самым простым является применение фоторезистора в цепи регулировки чувствительности (последовательно с переменным резистором чувствительности). При более ярком освещении ток через фоторезистор увеличивается, что ведет к увеличению чувствительности и наоборот.

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

 

5 Работа датчика.

После сборки датчика – включаем его в работу. Для начала выставляем чувствительность на середину, включаем датчик, направляем его в нужную сторону и чувствительностью настраиваем надежное срабатывание на нужный нам объект.

Если при работе датчика будет использоваться управление от бытового пульта, нужно пройти процедуру изучения кнопки (команды) пульта. В устройстве используется всего одна кнопка – переброс значения триггера. Для изучения кнопки необходимо обесточить устройство, «придавить» ножку выхода TSOP (на схеме ножка «Out») к «земле», включить устройство, отпустить ножку «Out» и нажать выбранную кнопку пульта. Теперь датчик начнет работать в штатном режиме.

При включении нескольких датчиков на близком расстоянии друг от друга (например, для контроля направления движения объекта) датчики будут мешать работе друг друга, так как их сигналы не синхронизированы. Для устранения этой проблемы используется вывод запрета инфракрасного излучения «LED-Запрет». На всех устройствах кроме одного этот вывод должен быть «прижат» к «земле». При этом все датчики будут работать от дного источника инфракрасного сигнала. Если одного излучающего светодиода недостаточно, то можно к выводу излучающего устройства подсоединять ИК-светодиоды в параллель (не забывая при этом о балластных резисторах).

 

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

 

6 Выводы.

По работе схемы есть как достоинство, так и недостатки.

Для начала недостатки:
— Зависимость работы устройства (чувствительности) от яркости освещения. Это решается, в некоторой степени, но проблема есть;
— Небольшая разрешающая способность (небольшие объекты будут «срабатывать» плохо);
— Небольшая дальность срабатывания (наличие отражающих стен и потолков уменьшают дальность, так как не позволяют увеличить чувствительность – появляются ложные срабатывания от отражений).

Ну и на десерт – достоинства:
— Простота конструкции (а если Вы уже раньше собирали платку – вообще делать почти ничего не нужно!);
— Отсутствие дефицитных и дорогостоящих элементов;
— Не нуждается в наладке.

Как видно из видео, датчик довольно уверенно реагирует на руку в пределах полуметра. Уверенно работает от пульта и не мешает находящемуся рядом телевизору. Потребляемый ток лежит в пределах 10мА.  Запитать датчик можно от источников напряжением от 3 до 6 вольт (некоторые TSOP не могут работать ниже 5ти вольт – это нужно учитывать).

 

По устройству все.

094-Proximity_Sensor_Source - Исходник датчика на Билдере

 

Не забываем заглядывать в раздел модификаций на форуме! Там можно найти (или оставить свои) модификации этого и других устройств блога.

(Visited 13 487 times, 17 visits today)

094-Датчик приближения на ИК-лучах (ATtiny13).: 253 комментария

  1. Rimidalw

    Добрый день! Какой максимальный диапазон срабатывания? 1 метра можно добиться?

  2. xedory

    Можно ли использовать этот девайс для выключения света и не будит ли дребезга… , Скажем так, рукой махнул свет отключился, еще раз махнул включился, но нужно уменьшить напряжения на ик диоде наверное!..

  3. GetChiper Автор записи

    Rimidalw :

    Добрый день! Какой максимальный диапазон срабатывания? 1 метра можно добиться?

    Я думаю и 2 можно, главное соблюсти все условия — хорошо экранировать TSOP от соседнего ИК-светодиодадиода + чтобы не было отражений со стороны (поместить ИК диод или в коллиматор или в трубку. TSOP очень чувствительный.

    xedory :

    Можно ли использовать этот девайс для выключения света и не будит ли дребезга… , Скажем так, рукой махнул свет отключился, еще раз махнул включился, но нужно уменьшить напряжения на ик диоде наверное!..

    В общем то для таких применений устройство и создавалось.
    Дребезга не будет (программно этот эффект устраняется). На готовом устройства прямо по месту настроите чувствительность.

  4. SVN

    Прекрасное устройство! Мне безумно понравилось. Евгений как всегда на высоте!))) Теперь многие проблемы в будущих разработках исчезнут сами собой. Евгений, огромное спасибо!

  5. xedory

    А какую функцию выполняет вывод а (led запрет) ,???

  6. GetChiper Автор записи

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

  7. xedory

    Нужно закоротить вывод «а» с землей, чтобы добиться этого эффекта??? @GetChiper

  8. GetChiper Автор записи

    Да, точно.

  9. alexfick

    Устройство то что надо но еще хотелось бы получить такой эфект как, при появлении препятствия выход «статус» срабатывал а при исчезновении препятствия оставался включен еще секунд 10 а потом плавно выключался.

  10. GetChiper Автор записи

    Запросто! Но вот что значит плавно, для цифрового выхода о_0 ?

  11. xedory

    Здравствуйте… прошил мк, работает! Но… Работает как D триггер к примеру 4013 (при приближения объекта загорается светодиод статус, потом светодиод триггер, второй раз триггер гаснет и светодиод статус при приближение тоже)… На видео четко видно что при приближения объекта загорается светодиод статус, а у меня он светиться через раз, так не должно быть… Помогите разобраться!!!

  12. GetChiper Автор записи

    Приблизил загорелся и статус и тригер
    отдалил — оба горят
    опять приблизил — оба погасли
    так что-ли?

  13. SVN

    У меня работает как прописано в программе. При приближении загорается статус вместе с триггером. Если объект остаётся в поле видения датчика выход статуса остаётся гореть. Как только объект выходит из поле видения датчика, выход статуса – гаснет. При втором приближении, выход статуса вновь загорается, а выход триггера гаснет. То есть, выход статуса будет загораться при каждом приближении и гореть пока объект не выйдет из поля зрения датчика, а триггер перебрасывается только в момент приближения и не реагирует на выход объекта из зоны видения датчика.

  14. xedory

    GetChiper :
    Приблизил загорелся и статус и тригер
    отдалил – оба горят
    опять приблизил – оба погасли
    так что-ли?

    Извиняюсь, нашел баг… Делал схему на макетной плате, =))) Все работает отлично! Спасибо за труды! = )

  15. SVN

    alexfick :
    Устройство то что надо но еще хотелось бы получить такой эфект как, при появлении препятствия выход «статус» срабатывал а при исчезновении препятствия оставался включен еще секунд 10 а потом плавно выключался.

    Посмотрите МОД на форуме, может подойдёт. http://www.forum.getchip.net/viewtopic.php?f=24&t=360

  16. mcmega

    А есть возможность сделать мод, чтоб обучение происходило по удержанию кнопки пульта, а не замыканием на корпус (как в 076-Управление нагрузками при помощи IR-пульта (ATtiny13) мод 2)?

  17. SVN

    mcmega :
    А есть возможность сделать мод, чтоб обучение происходило по удержанию кнопки пульта, а не замыканием на корпус (как в 076-Управление нагрузками при помощи IR-пульта (ATtiny13) мод 2)?

    А как устройство будет определять, что его хотят обучить или это какие то помехи лезут?

  18. mcmega

    Длительным удержанием одной клавиши, скажем 15 секунд. Я думаю, что вероятность помехи с постоянным кодом в течении такого времени мала)) Да и предварительно можно исключить помеху при обучении.

  19. GetChiper Автор записи

    Какое применение для такого обучения? Датчик далеко не бьет, на столб не поставишь, всегда рядом и доступен для манипуляций.

  20. nikolyan

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

  21. sergik07

    @nikolyan
    В том-то и прелесть конструкций на этом сайте,что они являются готовыми блоками для применения.Если сделать простой таймер,например, на NE555 и запускать его от выхода «статус» датчика приближения из этой статьи через простой транзисторный ключ,то вы получите одно устройство из двух блоков(датчик + таймер),которое потом можно будет модифицировать как угодно.Каждый раз переписывать программу и отлаживать устройство под определенные нужды многих людей — это долго и нудно.А если проявить немного фантазии,то вполне можно использовать тот же датчик приближения «как есть».

  22. SVN

    sergik07 :
    @nikolyan
    В том-то и прелесть конструкций на этом сайте,что они являются готовыми блоками для применения.Если сделать простой таймер,например, на NE555 и запускать его от выхода «статус» датчика приближения из этой статьи через простой транзисторный ключ,то вы получите одно устройство из двух блоков(датчик + таймер),которое потом можно будет модифицировать как угодно.Каждый раз переписывать программу и отлаживать устройство под определенные нужды многих людей – это долго и нудно.А если проявить немного фантазии,то вполне можно использовать тот же датчик приближения «как есть».

    Золотые слова. Полностью поддерживаю эту мысль. Мод по готовому устройству сделать, не составит большого труда, при желании. Так как исходник предоставляется в каждой статье. А время отнимать у автора на разные моды, как-то не корректно. Так как мы, отнимая у него время, тем самым мешаем ему создавать новые, не менее интересные устройства. Так что давайте не только будем потребителями но и созидателями для других. Если что-то получили, нужно что-то отдать, принцип равновесия. Извините за лирику.

  23. alexfick

    SVN :

    mcmega :
    А есть возможность сделать мод, чтоб обучение происходило по удержанию кнопки пульта, а не замыканием на корпус (как в 076-Управление нагрузками при помощи IR-пульта (ATtiny13) мод 2)?

    А как устройство будет определять, что его хотят обучить или это какие то помехи лезут?

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

  24. alexfick

    SVN :

    alexfick :
    Устройство то что надо но еще хотелось бы получить такой эфект как, при появлении препятствия выход «статус» срабатывал а при исчезновении препятствия оставался включен еще секунд 10 а потом плавно выключался.

    Посмотрите МОД на форуме, может подойдёт. http://www.forum.getchip.net/viewtopic.php?f=24&t=360

    спасибо за мод но мне выход с тригером не подходит а вот за 555 микрушку спасибо что напомнили будем пробовать, хотя жаль хотелось бы с плавным гашением. Извините не то процитировал.

  25. SVN

    alexfick :
    спасибо за мод но мне выход с тригером не подходит а вот за 555 микрушку спасибо что напомнили будем пробовать, хотя жаль хотелось бы с плавным гашением. Извините не то процитировал.

    Вот ещё вариант, может подойдёт. http://www.forum.getchip.net/viewtopic.php?f=24&t=360&p=5200#p5200

  26. aui2002

    «Платка хорошо зарекомендовала себя в различных проектах, поэтому было принято решение и этот проект делать на ней же.»

    Эту платку, по-моему, уже пора серийно выпускать промышленным способом!
    И устройств на ней много и каждое из них часто требуется в нескольких экземплярах.

  27. Evgen-82

    Скажите, какой автор применил транзистор в SMD исполнении, какой у него код на корпусе?

  28. Evgen-82

    И еще, подойдет любой TSOP на частоту 36кГц?

  29. SVN

    Evgen-82 :
    Скажите, какой автор применил транзистор в SMD исполнении, какой у него код на корпусе?

    На схеме транзистор указан, а маркировку смотрите в даташите.

    Evgen-82 :
    И еще, подойдет любой TSOP на частоту 36кГц?

    Странно, так он же и используется, 4836.

  30. mcmega

    Приветствую.
    Подскажите, есть ли мод, чтоб на выходе статуса, при присутствии в зоне, 1 появлялась на 0.5 сек, затем 0. А то, помойму, замечен эффект «дребезга контактов». SVN написал прошивку для управления подсветкой лестницы. В роли датчиков присутствия использую с этой статьи. Оттачиваю на железе. У SVNа подсчитывается колличество вошедших и вышедших человек. При сработке датчика (добавил инд. светодиод на статус) визуально дребезг не виден, а колличество зашедших людей получается от 15 и больше. Может быть дело в датчике?

  31. SVN

    Датчик тут не причём.

  32. Evgen-82

    А не сгорит ли МК при питании схемы от 6V, если верить даташиту на микросхему Attiny13A, то максимально допустимое напряжение питания составляет 5,5V

  33. SVN

    А Вы сами как думаете? Если в руководстве написано максимально 5,5 В.

  34. Evgen-82

    @SVN
    А почему же тогда в схеме у автора написано напряжение питания устройства от 3 до 6V

  35. mcmega

    От 6 не сгорит, есть запас «прочности», я нечаянно 7 подал, работала нормально))… Но лучше не эксперементировать и поставить стабилитрон на 4,7-5,1В параллельно питанию МК и через резистор 50-200 на колодку питания. Резистор в зависимости от потребления всей платки.

  36. crezi-alex

    Отличное устройство а главное вовремя наткнулся на сайт http://licrym.org/index.php/%D0%98%D0%9A_%D0%B1%D0%B0%D0%BC%D0%BF%D0%B5%D1%80 где призывают делать нечто подобное в аналоговом эквиволенти обьясняя это не особо напрягаясь что устройство с применением TSOP имеет ряд недостатков и не упоминают что аналог чувствителен для стороннего излучения скажем от всевозможных источников пультов в зоне применения. Но есть и один плюс возможноть оценивать растояние. Возможна модификазия вашего устройства с функцией определения растояния?

  37. GetChiper Автор записи

    В принципе это возможно (измерять расстояние), но нужно каким-то образом регулировать мощность ИК-излучения. Устройство изначально задумывалось с такой функцией. Регулировать мощность ИК-излучения планировалось изменением скважности модулирующего сигнала. Но после сбора устройства оказалось, что скважность импульсов практически не оказывает воздействия на чувствительность приема TSOPом. Пришлось поставить переменный резистор в цепь IR-светодиода.

  38. hax

    @GetChiper

    Чувствительность можно регулировать плавным уходом от несущей частоты TSOP( +-5КГц ). В TSOP входной фильтр имеет форму колокола. Калибровать экспериментально. К сожалению, всё сильно зависит и от цвета поверхности.
    В инфракрасных датчиках Sharp стоит массив фотодиодов, расстояние определяется по углу отражения.

  39. GetChiper Автор записи

    «плавным уходом от несущей частоты» — точно! как-то это не пришло на ум. Нужно будет поэкспериментировать в этом направлении.

  40. Jenya2810

    Добрый вечер всем,прошу помощи!!! Решил повторить данный Очень интересный и полезный Девайс, но возникла проблема!!! Имея на борту Tiny13A-SU и програматор с этого-же сайта Algorithm Builder 5 проводков столкнулся с проблеммой прошивки!
    Если я правельно понял Автора данного Девайса то програмирование контроллера происходит как указано подключением програматора к контактам указанным на готовой плате, получается что через токоограничевающие резисторы на плате???
    Мои действия по прошивке были таковы, подключил к плате заветные пять проводков програматора,откыл программу Algorithm Builder -> Proximity_Sensor_Source- исходник Автора -> далее откомпилировал в нех-файл-> подал питание +5V на устройство и нажал клавишу запуск с кристалом!
    Программа задумалась и выдала ошибку! (Кристал недоступен) Я подумал, может дело в резисторах что стоят на плате устройства через которые идут линии связи с прогаматором, поставил перемычки на них (непомогло)!!! далее отключил выход фотоприёмника (непомогло)! Далее отключил резистор на 10кОм что стоит подтяжка к +питанию на плате тоже (непомогло)
    Где копать незнаю??? монтаж проверял 3 раза, на первом обнаружил что небыло минуса что идёт от кондёров питания к 4-й ножке! (исправил) далее щупал между 4 и 8 ножками питание есть +5V, блок пит с того же компа беру, пробывал и с другого!
    Что делать и где копать ума непреложу??? Фьюз биты нетрогал!!!
    Опыт програмирования небольшой, до этого шил Attiny2313 этим-же програматором и этой-же программой-проблем небыло!!!
    Да и ещё пробывал менять Tiny13 на другую, итог тот же!!! Микрыхи новые на шиты не вязаны как коворится!
    Помогите найти в чём дело? За ранее благодарен и извеняюсь за столь длинное сообщение!!!

  41. GetChiper Автор записи

    Микроконтроллер прошивается прямо через ножки платы — ничего отпаивать не нужно — все шьется так.
    Возможные ошибки:
    — не подключено питание (я серьезно — сам часто забываю втыкнуть)
    — перепутаны ножки программирования (часто путают МИСО и МОСИ)
    — теперь посложнее — ошибки при сборке — сопли/непропаи/обрывы в дорожках — нужно прозванивать.
    — и совсем плохо — проблема с контроллером (брак или спален — редко, конечно, но бывает)
    И еще — обязательно нужно измерить ток потребляемый контроллером — должен быть в пределах пары десятков миллиампер — не больше.

  42. Jenya2810

    Спасибо большое за столь быстрый ответ!:) утром попробывал прошить понипрогом, всё прошло удачно;) очень рад!!! Причину почему Билдер не захотел видет контроллер непонятно? Моси и мисо пробовал менять, непомогло! Получилось только через СТК200 программатором прошить через паролельный порт! В чём причина незнаю? С питанием всё нормально было, дорожки звонил все! Наверно баробашка завелся, 4 часа были танцы с бубном! Спасибо ещё раз за оперативный ответ!!!

  43. SVN

    Прошивать Algorithm Builder необходимо в строгой последовательности. Заключается она в следующем: Вначале необходимо подключить программатор к ПК. После того как ОС его определила и присвоила СОМ порт, запускаете Algorithm Builder и в опциях среды указываете соответствующий СОМ порт Вашего программатора и устанавливаете галки «Всегда открыт» и «Через адаптер», ещё и замедление (обычно 2). После этих действий программа видит МК. Если Algorithm Builder был запущен до подключения программатора, то Algorithm Builder всегда будет выдавать ошибку.

  44. Jenya2810

    спасибо за ответы, ранее пробовал на запущенной программе подключать программатор, замедления небыло, порт был всегда открыт, и как-то проблем небыло некаких с тини2313! Но за совет и рекомендации особая благодарность!!! Возьму на заметку, сегодня попробую вечером и опробую заново прошить! Да ещё вопрос, не как не думал что ос определяет программатор, т.к вроде как программа Билдер должна сама определять его?! Возможно ещё я до этого шил тини2313 использовав этот ком порт и тут видно оно и выходит? Это только мои догадки! Спасибо ещё раз за пояснения! И хотел бы добавить что Автор молодец и исходник предоставляет и что самое главное на Алгоритм Билдере, я начинающий и очень нравиться эта среда прогр-я хоть я ещё многих команд и макросов непонимаю!

  45. SVN

    ОС не определяет его как программатор, а определяет его как тип устройства с последовательной передачей данных и присваивает данному устройству номер порта. А в АВ нужно выбрать этот номер СОМ порта и тогда всё будет работать корректно.

  46. Jenya2810

    Спасибо за объяснения и ссылку!!! скачиваю ролик!!!

  47. SVN

    О программаторе: если не жалко 730 руб. + пересылка, то можно выписать заводского исполнения USB. Заточенный именно для Algorithm Builder. Три года им пользуюсь, проблем ни каких. http://www.ekits.ru/index.php?productID=2123

  48. dalneboy

    Евгений вы в статье про sinaprog говорили ,что во всех проэктах будут указываться байты конфигурации для неё.Наверно подзабыли..Конечно не проблема с помощью fuse калькулятора их вычислить и всё-же было бы удобнее их сразу видеть.

  49. GetChiper Автор записи

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

    P.S. Байты добавил.

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