Устройство (контроллер) этой статьи предназначено для подсветки ступеней лестницы в темное время суток или в местах с плохим освещением. Устройство контролирует в зоне лестницы (коридора, элементов интерьера, …) входящих и выходящих людей и создает различные динамические световые эффекты в зависимости от положения людей (их количества, стороны захода и т.д.).
Теперь подробней.
Написание этой статьи задумывалась уже давно, но разного рода обстоятельства этому препятствовали. Вот наконец-то звёзды выстроились в нужной последовательности, и как результат — данная статья. Кому интересна предыстория данного устройства (с чего всё начиналось), могут почитать здесь. Огромная благодарность пользователю Mail, за предоставленное видео работы данного устройства. Без его участия, устройство бы, ещё долго «пылилось» на полке у авторов.
Данное устройство разрабатывалось совместно с Евгением (GetChiper). Он создал основу устройства, красивые эффекты зажигания и погасания каналов освещения. Мне осталось лишь дописать логику включения и отключения эффектов.
Устройство реализовано в двух вариантах:
1 для 14+1 каналов
Дополнительный канал включается первым и отключается последним, без эффектов. Его можно использовать как сигнал для включения, например, общего освещения над лестницей, или освещения деталей интерьера.
2 для 16 каналов
Краткие характеристики контроллера освещения:
Контроллер для устройства может быть выбран любой, из ATmega48P_88P_168P. Частота тактирования МК от внутреннего генератора 8 МГц.
Первый вариант устройства имеет 14 основных каналов освещения и плюс 1 дополнительный (его функции?).
Второй вариант — имеет 16 каналов освещения
Устройство предназначено для работы с четырьмя датчиками движения и одним датчиком уровня освещённости.
Датчики движения и освещённости могут быть как с дискретным, так и с аналоговым выходным сигналом. Тип датчика не имеет значения — это могут быть:
— оптические датчики приближения типа SHARP,
— или ПИР-датчики присутствия,
— или ИК-барьер,
— в самом простом варианте в роли датчиков могут выступать концевики под крайними ступенями лестницы.
Пороговое значение (логический ноль / логическая единица) для устройства составляет 3 вольта (контролируется при помощи АЦП микроконтроллера).
Устройство подсчитывает количество входящих и выходящих людей в контролируемой зоне. Максимальное количество людей (одновременно находящихся в зоне) не должно превышать 100 человек.
Размещение датчиков движения.
Для контроля входа/выхода людей в/из зоны работы устройства используется 4 датчика движения. Датчики движения работают попарно. Два датчика с одной стороны зоны (А1, А2), и два датчика с другой стороны зоны (В1, В2).
Важно! Расстояние между парными датчиками должно быть таким, чтобы время перехода невидимой области обзора между датчиков (при выходе из зоны видимости одного, до входа видимости другого), было менее двух секунд. А между внутренними датчиками – более двух секунд. Дальше по тексту будет описано, зачем это нужно.
Общая логика работы контроллера следующая:
— при подходе к «темной» лестнице человека, ступеньки лестницы начинают поочередно загораться в сторону движения человека (создавая эффект волны),
— при движении человека по освещенной лестнице, периодически будет пробегать эффект «темной ступеньки», опять-таки, в сторону движения человека,
— при выходе человека из зоны лестницы, освещение ступеней «волной» погаснет за ним.
— при входе с обеих сторон, ступеньки лестницы начинают поочередно загораться как бы на встречу. Так же по освещённой лестнице, периодически будет пробегать эффект «темной ступеньки» (с обеих сторон в центр).
Контроллер умеет отрабатывать следующие эффекты (по номерам):
1 и 2 – зарезервированы;
3 – плавное увеличение яркости всех каналов;
5 и 6 – поочерёдное плавное увеличение яркости каналов в соответствующем направлении;
7 и 8 – поочерёдное плавное уменьшение яркости каналов в соответствующем направлении;
9 – поочерёдное — плавное увеличение яркости каналов с обеих сторон;
10 и 11 – перемещение тёмной точки по каналам в соответствующем направлении;
12 – перемещение тёмной точки по каналам с обеих сторон.
Описание алгоритма работы контроллера.
— при входе в зону видимости датчика А1 или В1, включается эффект 5 или 6 (поочерёдное — плавное увеличение яркости каналов в соответствующем направлении), а так же разрешает работу двухсекундного таймера.
— после завершения работы эффекта 5 или 6, включается эффект 10 или 11 (перемещение тёмной точки по каналам в соответствующем направлении).
— если при прохождении в одном направлении происходит вход на встречу, то при работе эффектов 5 или 6, происходит переключение на эффект 9 (поочерёдное — плавное увеличение яркости каналов с обеих сторон), а при работе эффектов 10 или 11, происходит переключение на эффект 12 (перемещение тёмной точки по каналам с обеих сторон).
— двухсекундный таймер начинает отсчёт времени, только после выхода человека и зоны видимости датчика. И сбрасывается при входе в зону видимости другого датчика.
— при прохождении парных датчиков (А1, А2 или В1, В2), после завершении отсчёта 2 секунд, контроллер прибавляет 1 к количеству находящихся в контролируемой зоне. При прохождении парных датчиков (А2, А1 или В2, В1), после завершении отсчёта 2 секунд, контроллер отнимает 1 от количества находящихся в контролируемой зоне.
— если после выхода из контролируемой зоны, количество находящихся окажется равно нулю, включается эффект 7 или 8 (поочерёдное — плавное уменьшение яркости каналов в соответствующем направлении).
— количественный подсчёт ведётся даже тогда, когда датчик освещённости запрещает работу каналов освещения.
— если при входе или выходе, до завершения отсчёта двухсекундного таймера, вернутся обратно, то количественный подсчёт не производится.
— если при нахождении в зоне, поступит сигнал запрета работы каналов от датчика освещённости, контроллер будет игнорировать данный запрет до выхода последнего из контролируемой зоны.
— если при нахождении в зоне, поступит сигнал на включения работы каналов от датчика освещённости, контроллер включит эффект 3 (плавное увеличение яркости всех каналов), по завершении этого эффекта, включится эффект 12 (перемещение тёмной точки по каналам с обеих сторон).
— после выхода из контролируемой зоны, в момент работы эффекта плавного уменьшения яркости каналов, вновь войти в контролируемую зону, эффект плавного уменьшения яркости переключится на эффект плавное увеличение яркости каналов в соответствующем направлении.
Подробно о работе алгоритма парных датчиков на примере датчиков А1 и А2.
1 Дежурное состояние датчиков — A1(OFF), A2(OFF);
2 Подходим к первому датчику — А1(ON), A2(OFF), включается эффект работы данного направления, взводится таймер (2 сек.) и флаг датчика А1. Пока находимся в зоне видимости датчика А1, таймер не считает. Так можно стоять сколько угодно долго, а устройство будет ожидать дальнейших действий.
3 Выходим с поля зрения первого датчика — A1(OFF), A2(OFF), запускается таймер (2 сек.). Так как устройство не знает в какую сторону движение то по истечении 2 сек, произойдёт сброс флага датчика А1 и устройство вернётся в дежурный режим.
4 Если менее чем за 2 сек, подошли ко второму датчику — A1(OFF), A2(ON), устройство сбросит таймер в 0, взведёт общий флаг датчиков А1 и А2. Так можно стоять сколько угодно долго, а устройство будет ожидать дальнейших действий.
5 Если продолжить движение далее по направлению, выйдя из зоны датчика А2 — A1(OFF), A2(OFF), запустится вновь таймер на 2 сек. После завершении отсчёта таймера, устройство проверяет взведенные флаги. По конфигурации данных флагов, устройство определяет, что вход в зону лестницы осуществлён корректно. Происходит количественный подсчёт (+1) и сброс взведённых флагов.
4а Если же от датчика А2 (пункт 3), переходим за мене чем 2 сек, к датчику А1 — А1(ON), A2(OFF), устройство сбросит таймер в 0, сбросит общий флаг датчиков А1 и А2 и будет ожидать дальнейших действий.
4б Продолжая движение на выход, выйдя из зоны видимости датчики А1 — A1(OFF), A2(OFF), устройство по окончании отсчёта таймера, сбросит флаг датчика А1, и выключит подсветку. Далее перейдёт в дежурный режим (пункт 1).
Конструкция устройства, его прошивка.
Устройство очень простое и может быть выполнено даже на макетной плате. Каких либо нюансов в сборке устройства нет. Единственно, необходимо позаботиться о экранировании проводов от аналоговых датчиков для исключения в них посторонних наводок или помех. На плате, естественно, необходимо предусмотреть разъем для программатора.
Для случая если Вы собираетесь повторить конструкцию не имея опыта работы с МК (или не имея программатора) драйвер дополнительно реализован для плат типа Arduino с микроконтроллером ATmega328p. В этом случае Вы получаете готовое устройство буквально за пару минут! Как прошить в Arduino HEX-файлом драйвера читайте в этой статье.
Все файлы для сборки устройства (схемы, прошивки, исходники, фьюзы) собраны в одном архиве:
105-Stairs2.zip (5498 Загрузок)
Напоминаю, для Algorithm Builder и UniProf галочки ставятся как на картинке.
Для PonyProg, AVR Studio, SinaProg галочки ставятся инверсно.
Как программировать микроконтроллеры читаем в FAQ.
UPD SVN — Вариант исходника и НЕХа для платы Arduino Nano
Проверил работу ардуиновскую версию «освещения лестниц»… в принципе всё работает нормально, но вот заметил небольшой косяк… порты подключения кварца были настроены на выход… исправил и ещё раз проверил – теперь работает как нужно.В архиве исправленный исходник.
ARDUINO_NANO_Ai_Di_V2.zip (1390 Загрузок)
Дополнительные материалы можно найти в соответствуещей ветке форума