Как стать автором
Обновить

Простейший инфракрасный счётчик на Arduino. С мелкими гадостями

Время на прочтение6 мин
Количество просмотров2.2K

Здесь описывается очень простой (возможно, самый простой в мире) самодельный однолучевой горизонтальный инфракрасный счётчик (людей) на Arduino. Его сенсорная система содержит лишь инфракрасный светодиод, фотодиод, биполярный транзистор и три резистора.  Руководствуясь описанием, счётчик сделать совсем легко.

Но будьте бдительны: в описание я заложил мелкие гадости. А куда и какие - не хочу заранее сообщать. Долой скуку! Да здравствуют приключения!

Как и в обычном квесте, реальной опасности здесь никакой нет. Даже если вы не заметите заложенные “мины” и всё сделаете в точности так, как тут коварно предложено, струйка дыма из самоделки не пойдёт. Ни один её элемент вообще никак не пострадает. Обещаю. При любом раскладе в итоге удастся без потерь наставить это изделие на путь истинный. (На пути истинном оно прекрасно работает. Проверено.)

От всего этого вы получите большое удовольствие и нужные на практике навыки.

Итак, начинаем!

Далее здесь:

  • Принцип действия 

  • Чем занять микроконтроллер  

  • Простейшая инфракрасная сенсорная система 

  • Подключение сенсорной системы к Arduino  

  • Индикация  

  • Скетч  

  • Методика поиска неисправностей (мелких гадостей)  

  • Что дальше?

Принцип действия

Сенсорная система типичного счётчика состоит из излучателя, создающего инфракрасный луч, и приёмника, чувствительного к этому лучу. При этом излучатель и приёмник располагают друг напротив друга так, что луч, “протянутый” между ними, образует что-то вроде барьера на пути идущего человека. Проходя через него, человек прерывает луч. В результате логическая единица (высокое напряжение) на выходе приёмника сменяется логическим нулём (низкое напряжение). Микроконтроллер, подключенный к выходу приёмника, обнаруживает это событие и подсчитывает его.

Чем занять микроконтроллер

Сейчас нужно принципиально решить, чем же будет занят микроконтроллер (Arduino) именно в нашем самодельном счётчике.

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

Для начала (и лишь для начала), я предлагаю выбрать тот, который почему-то первым приходит в голову матёрым программистам. Обосновывается он следующим образом. В тот непредсказуемый момент, когда человек вторгается в инфракрасный луч, микроконтроллер, возможно, занят совсем другими делами. Значит, нужно временно их прервать и быстренько на человека отреагировать. Ну что же, с точки зрения очень занятых джентльменов - весьма логично.  

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

Какая завораживающая, волшебная игра слов!

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

Простейшая инфракрасная сенсорная система

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

Рисунок 1. Принципиальная электрическая схема простейшей инфракрасной сенсорной системы.
Рисунок 1. Принципиальная электрическая схема простейшей инфракрасной сенсорной системы.

Рассмотрим схему излучателя.

Главное в ней - инфракрасный светодиод D1 (TSAL6100). По принципу своего действия он разительно отличается от старомодной лампочки накаливания. Но, как и лампа накаливания, излучает он только тогда, когда через него протекает электрический ток. Здесь он работает на постоянном токе, то есть по правилу: “всегда включен”.

Сила тока через светодиод зависит от резистора R1, и при указанном на схеме сопротивлении (27 Ом) она составляет 100-120 мА. Это довольно большая сила тока, поэтому годится не любой резистор. Если брать с запасом, то лучше поставить резистор, способный выдержать рассеиваемую мощность до 2 Вт.

Рисунок 2. Излучатель (в картонном варианте), установленный на “испытательном стенде”.
Рисунок 2. Излучатель (в картонном варианте), установленный на “испытательном стенде”.

Теперь обратимся к схеме приёмника.

В приёмнике элементом, чувствительным к инфракрасному излучению, является фотодиод D2 (BVP10NF). 

Ток через него, порождаемый инфракрасным излучением (фототок), протекает в цепи базы транзистора T1. При этом транзистор T1 (BC557) играет роль усилителя слабого сигнала с коэффициентом усиления порядка нескольких сотен. 

В свою очередь, ток коллектора транзистора T1 создаёт падение напряжения на резисторе R3. Оно и является выходным сигналом приёмника.

Рисунок 3. Приёмник (в картонном варианте), установленный на “испытательном стенде”.
Рисунок 3. Приёмник (в картонном варианте), установленный на “испытательном стенде”.

Подключение сенсорной системы к Arduino

Излучатель и приёмник берут от Arduino электропитание (5V). (Для питания излучателя можно использовать и независимый отдельный источник постоянного тока. Для приёмника этого лучше не делать.) 

Приёмник, кроме того, посылает в Arduino свой выходной сигнал (на цифровой вход D2). При этом Arduino не обязан быть расположен близко. Я использовал для подключения к Arduino провода длиной 5 метров, и какие-либо проблемы, связанные с их большой длиной, замечены не были.

Индикация

Собственный индикатор для отображения результатов счёта людей в этой простейшей самоделке не предусмотрен. Чем меньше у вас трудностей, тем лучше, для начала. При прохождении человека Arduino просто посылает данные в свой последовательный порт, подключенный к usb-порту персонального компьютера. Результат счёта людей можно увидеть на экране компьютера, в мониторе порта, встроенном в среду Arduino.

Скетч

Святая-святых счётчика - скетч (управляющая программа) для Arduino. Он написан на языке C++. Среда программирования Arduino автоматически переводит скетч на машинный язык (компилирует скетч) и в таком виде загружает его в микроконтроллер.

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

Однако, для простейшего в мире счётчика скетч и вправду невелик.

Рисунок 4. Скетч для Arduino.
Рисунок 4. Скетч для Arduino.

Вы можете считать меня негодяем, но я умышленно не привёл текст скетча в удобном виде для волшебства “скопируй-вставь”. Он - лишь на картинке. Наберите скетч с картинки, буква за буквой. Ещё и наделайте при этом ошибок. Потом найдите свои ошибки и исправьте. Это будет отличной тренировкой.

Методика поиска неисправностей

Если самоделка не работает (вот они и всплыли, мелкие гадости! может мои, а может и ваши), первое побуждение: “растоптать её, и больше никогда за такое не браться”. 

Ну что вы, дружище! Остыньте. Давайте искать неисправность, из-за которой “девайс” устроил забастовку.

С чего начать поиск? С начала. С начала тракта, по которому “движется” инфракрасный сигнал. Рождается он в излучателе.  Далее - поступает на  приёмник. С выхода приёмника  - на счётчик импульсов (то есть, на Arduino). Неисправность может обнаружиться в любом из перечисленных модулей. (Бывает, что и в нескольких.)  Прежде всего, надо по-крупному определить, какой модуль исправен, а какой - нет. И затем уже выискивать, где спрятался гадкий “жучок” внутри этого проблемного модуля.

Проверка исправности излучателя

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

Рисунок 5. Свечение инфракрасного светодиода в исправном излучателе, наблюдаемое через камеру смартфона как сиреневый “огонёк”.
Рисунок 5. Свечение инфракрасного светодиода в исправном излучателе, наблюдаемое через камеру смартфона как сиреневый “огонёк”.

Проверка исправности приёмника

Исправность инфракрасного приёмника можно проверить только с помощью заведомо исправного излучателя. 

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

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

Проверка исправности счётчика импульсов (на Arduino)

Счетчик импульсов на Arduino можно проверить с помощью исправного приёмника, а можно и без него.

В отсутствие приёмника импульсы, которые Arduino должен считать, можно генерировать с помощью модуля-заглушки. Модуль состоит из резистора и кнопки. Если кнопка не нажата, на входе D2 Arduino - логический ноль. Нажимаете кнопку - ноль меняется на логическую единицу. Отпускаете кнопку - снова появляется ноль. И так далее. 

Рисунок 6. Модуль-заглушка, подключенный к Arduino.
Рисунок 6. Модуль-заглушка, подключенный к Arduino.

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

Рисунок 7. Пример отображения результатов счёта на экране персонального компьютера, в мониторе последовательного порта.
Рисунок 7. Пример отображения результатов счёта на экране персонального компьютера, в мониторе последовательного порта.

Что дальше?

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

Если вы самостоятельно нашли в описании самоделки все мелкие гадости и исправили их, самоделка у вас нормально работает. Поздравляю!

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

  1. Дождаться выхода следующей статьи на эту тему, в которой будет предпринят подробный “разбор полётов”.

  2. Сравнить свою самоделку с эталонным образцом (без “гадостей”), описанным мной в книге «Простейший инфракрасный счётчик на Arduino».

Ссылка на книгу

Теги:
Хабы:
+6
Комментарии23

Публикации

Ближайшие события