Данное устройство контролирует пересечение барьера, причём, в обе стороны, считает число пересечений барьера (в данном случае до 3, но это меняется одной константой) и выполняет включение/выключение различной нагрузки в зависимости от ситуации.
Возможное применение, пример:
Заход в комнату/выход из комнаты. Допустим, есть ванная комната. В начальном состоянии там освещение выключено. Заходит один человек – освещение включается. Устройство считает 0+1=1. Он начинает принимать душ в душевой кабине. Заходит другой человек 1+1=2, моет руки. Заходит третий, допустим, побриться 2+1=3. Тот, кто помыл руки выходит 3-1=2. Потом, тот кто брился 2-1=1. И, наконец, первый завершает принимать душ, выходит 1-1=0, освещение выключается.
Говорю сразу – датчик движения вместо этого устройства не прокатит. Нет, если кому-то нравится махать руками время от времени – дело хозяйское, я через это уже прошёл.
Описание:
Генератор прямоугольных импульсов с выходом на IR-светодиод устанавливается на одной половине дверного проёма. Генератор собран на NE555 и имеет форму сигнала - меандр, и частоту примерно 20 кГц.
https://cloud.mail.ru/public/DyZ6/nJsxoqqdb
На другой половине дверного проёма устанавливаются два IR-светоприёмника, с некоторым разнесением по горизонтали (у меня примерно 2,5 см). Каждый светоприёмник имеет свой отдельный канал. На выходе фотодиода сигнал приблизительно 5-20 мВ, в зависимости от дальности, и, примерно, треугольная форма. Далее идёт каскад усиления на двух транзисторах VT1, VT2 (VT3, VT4), которые усиливают сигнал и доводят его до логических уровней. Каждый канал собран на отдельной плате. На схеме пунктирными линиями отображены отдельные платы.
https://cloud.mail.ru/public/zXoN/JaaE5YAuy
Затем идут ждущие мультивибраторы с перезапуском на микросхемах 176ЛA7 (2И-НЕ) и CD4013 (D-триггер), которые превращают факт наличия или отсутствия сигнала в 0 или 1. Настройка мультивибраторов сводится к подбору R9, C5 (R20, C11), чтобы их постоянная времени была раза в 3-4 больше периода сигнала. Светодиоды HL1, HL2 установлены в отладочных целях и информируют о том, когда сигнал на каком канале есть, когда нет. Мультивибраторы собраны на одной плате, так как логические микросхемы общие у обоих каналов. И, наконец, эти значения поступают на входы D2, D3 Arduino.
Arduino управляет нагрузкой 220 вольт с помощью типовой схемы с оптроном MOS3063M и симистором BT12-600BW. R10 подобран так, чтобы входной ток MOS3063M был номинальным, примерно 5 мА. Нагрузка у меня заведомо не индуктивная, поэтому снабберную цепь я не ставил. На этой же плате расположена сама Arduino, и миниатюрный блок питания Hi-link на 5 Вольт для питания низковольтной части.
Все пять плат на фото:
https://cloud.mail.ru/public/6MnN/2C5vYT4Sn
Описание алгоритма скетча (в сильно упрощенном виде).
Скетч анализирует эти входы, устанавливает, на каком из них сигнал изменился раньше, и делает вывод о направлении пересечения барьера. При наличии пересечения, он увеличивает или уменьшает внутренний счетчик, который отображается на светодиодах HL3, HL4 (выходы D6, D8) в двоичном коде (при желании, можно сделать цифровой индикатор). Состояния счетчика – в начальном положении счётчик равен 0. Если пересечение барьера происходит в «обратном» направлении, то счётчик не меняется и ничего не происходит. Если в «прямом», то счётчик увеличивается на 1, и схема включает нагрузку, подав 1 на выход Arduino D4, и, в конечном итоге, включив симистор Т1. Далее счётчик может увеличиваться или уменьшаться. При достижении максимального числа 3, схема далее ничего не делает. При достижении числа 0, нагрузка выключается, и схема переходит в исходное состояние. После любого события пересечения, устанавливается пауза в 2 секунды, когда скетч ничего не делает, эту паузу можно изменить.
Видео теста направленности и расстояния IR-компонентов.
Видео полного теста устройства.


