Автоматическое управление светом. Готовое устройство.

Всем доброго времени суток. В данной заметке хочется поделиться с народом мною разработанным, собранным, отлаженным и уже работающим устройством под названием «The automatic light switch». Что представляет собой приборчик, который включает свет, при появлении движения в комнате. Так же на борту устройства имеется датчик освещения (фоторезистор).
Подключение к электросети по схеме.
Подключение к электросети
Схема устройства.
Схема
Фотографии девайса.



Код написан на C, компилятор AVR Studio 4.
Принцип действия устройства заключается в следующем.
1.Циклично проверяется состояние датчика движения.
2.Циклично измеряется сопротивление фоторезистора. Он нужен для того чтобы не включать свет, когда в помещении станет достаточно светло. Для точной подстройки на борту имеется переменный резистор.
3.Если после включения света, движение в комнате не обнаружилось, то ATtiny отсчитывает 90 секунд и выключает свет.
В заключении хочу сказать, что главная проблема, с которой столкнулся в процессе наладки – это измерение освещенности с помощью фоторезистора.
После долгих практических опытов была выбрана данная схема измерения.
Измерение сопротивления фоторезистора
Схема и плата в eagle, а так же прошивка находяться в архиве.

Не судите строго. Это мой первый пост.

UPD 1.1:
Совсем забыл сказать. Измерение сопротивления фоторезистора происходит не постоянно, а с периодичностью ~ 3 минуты. Если вдруг возникнет движение, то при включении света, система будет использовать не последнее измерение, а предпоследнее. Это нужно для того что бы исключить влияние попадания ненужного света, например из-за открытия двери.

Исходя из этого, понял, что в прошивке есть не доработка.
Нужно добавить temp_adc=0x00; в ISR(TIM0_OVF_vect) что бы исключить влияние последнего измерения освещенности произошедшего перед включением света, на следующее за ним первое измерение. Конечно, вероятность возникновения ошибки, если не вносить изменение в код, очень мала, но все-таки будет, я думаю, неприятно.

Исправленный код должен выглядеть так:
ISR(TIM0_OVF_vect) // прерывание от таймера по переполнению
{
if (time > 0) time--; // декремент счетчика времени
if (time == 0) // время вышло?
	{
	PORTB &=~(1<<PB3); 		// выключаем свет
	flag &=~(1<<light_flag);// сбрасываем флаг включения света
	flag&=~(1<<time_flag);	// сбрасываем флаг отчета времени
	TIMSK0&=~(1<<TOIE0);	// запрещаем прерывание от таймера

	temp_adc=0x00;		// сбрасываем для того чтобы исключить последнее измерение adc

	}
}


Исправил файлы в архивах, а так же добавил для загрузки отдельно архив с прошивкой.
Файлы в топике: motion_sensor.zip, code_motion_sensor_v1.1.zip

Комментарии (64)

RSS свернуть / развернуть
Так а зачем в схеме фоторезистор? Из статьи я этого так и не понял.
+1
Фоторезистор нужен чтобы не включать свет, когда в помещении достаточно светло.
0
Ага теперь понятно. То есть если светло и ты заходишь в помещение, датчик то сработает. Но алгоритм в МК зная что светло все равно не даст свету включиться. Вот теперь понял. Слушай ну я бы рекомендовал тебе это описать ясно и понятно. Из твоей статьи это далеко не очевидно. По крайней мере просмотрев статью я этого не уловил.
0
Спасибо за замечание. Статью подкорректировал.
0
Извини, но плата сделана не аккуратно и грубо, как напильником. Само устройство прикольное если помогает в доме, а не мешает.
0
Согласен, эстетичность платы желает лучшего, да и сама фотография не добовляет красоты. Но плата разрабатывалась для размещения в коробе, куда никто и никогда не заглянет, я надеюсь…
0
Вполне годная плата. И за что плюсанул: полезное устройство, сделано практично и без заумностей.
0
Просто потом может привычка остаться, делать платы на таком уровне. Хотя я свою первую плату, хуже чем у тебя сделал раз в 10. Не было ни чем травить, на принтера, только кусок гетинакса и все. Ножом дорожки вырезал.
+1
Так ты ставишь для питания какой-то готовый блочок?
0
да, сначала использовался безтрансформаторный источник питания, но сейчас он заменен на импульсный блок питания из usb зараядного устройства.
0
импульсный блок питания из usb зараядного устройства.
Не китайского, надеюсь? Я бы поостерегся ставить их на работу 24/7. Да и насчет более качественных фирменных не факт.
0
Он самый, китайский, но другого в наличии пока нет, думаю обзавестись ими в скором будущем.
0
У меня в термометрах такие работают третий год 24/7, один от ALCATEL другой ZOGA, третий вообще NONAME. Нормально работают, правда в помещении, от +15 до +30 колебания температуры.
0
Температура минимальная и максимальная при -40 и +40 соответственно. Обычно +23, и сухо ))))
0
Кстати, некоторые датчики «человека» очень похожего внешнего вида (но немного другие) на микросхеме BISS0001 имеют или не распаянное место под датчик освещённости или сам датчик освещённости, который как раз для того, чтобы «днём» не срабатывало.

У меня вот примерно такой:
0
Блин, извиняюсь, первый коммент после регистрации и промахнулся уровнем :)
0
Такой датчик заточен именно для фоторезистора или же модуля с дискретным выходным сигналом?
0
Если я правильно понял вопрос, то для фоторезистора, вот схема, на ней Cds2.
Схема датчика
Из даташита на микросхему по поводу 9 вывода:
Trigger disable input (VC >0.2Vdd=enable; Vc<0.2Vdd =disabled)
0
Но в схеме датчика как-то странно фоторезистор подключен, в даташите на микросхему там делитель напряжения, в одном плече которого резистор, в другом — фоторезистор, что, по идее, правильнее.
0
А про настройку порога срабатывания по фоторезистору есть что-нибудь?
0
Нет, китайцы на этом сэкономили. Две крутилки есть, но они не те: чувствительность (расстояние по их словам) и длительность задержки после включения.
0
Датчик движения имеет какие-нибдь «особенности»? Сам жду пока пришлют такой.
0
Не приятных особенностей я не обнаружил, ну разве что в моем датчике отсутствовала какая либо регулировка.
0
Интересный блочёк, полезный в умном доме. Думаю, при минимальной доводке покатит и для замены штатных релейных китайских управляющих блоков на галогенных прожекторах.
Но почему бы не реализовать заодно так называемое «щадящее включение» эл. лампы?
0
«щадящее включение» эл. лампы — хорошая идея. Я уже размышлял на эту тему и думаю вскорем времени я дополню чем нибудь похожим на это.
0
Можно сделать проще, при условии если есть две свободные ноги МК — включить последовательно с симистором мощный, относительно низкоомный резюк, и тривиально коротить его контактами реле по истечении например, полторы секунды после включения устройства…

Также, можно дополнить девайс акустическим датчиком — в «ведомом режиме»
т.е. PIR-модуль это как бы основной датчик — гипотетитеский же акустический, просто дополнительно «плюсует время пребывания во включенном состоянии».
0
Хорошая идея с аккустическим датчиком. Особенно учитывая то что девайс у меня находиться в санузле.
0
Ну да хорошая идея, точно, перданул и свет загорелся:)
+1
Если имеется в виду пирометрический датчик движения, то под ним надо периодически дергаться, чесаться и т.д. Если замереть, например читая текст с монитора, свет погаснет. Как у вас?
0
Эта проблема очень знакома, я справился с ней, добавив таймер на выключение света после пропадания сигнала с датчика, а так же добавил условие, если движение появилось во время работы таймера, счетчик обнуляеться и таймер начинает считать только после того как движение в комнате снова пропадет.
0
Помнится, читал что есть датчики присутствия — они предназначены именно для обнаружения присутствия. Принцип тот же, что и у датчиков движения — тот же пиродатчик; вот только чувствительность его выше. Ему достаточно для срабатывания самого легкого движения (ну не сидит же человек за монитором как статуя :))
0
А если возле такого датчика мышка пукнет, не будет ложных срабатываний?
0
Будет :) Идеального ничего нет :)
0
по самой верхней схеме: всё-таки выключатели обозначаются SA. и рисуются по-другому:)
0
Ну что сделаешь с безграмотным народом :)
В следующий раз учту.
0
понимай правильно — я это не со зла, тем более пост — первый:)

просто сначала впал в ступор — это чего, в аварийной ситуации стоять, как дебил, и держать кнопку SB2?:) а как же тогда перемещаться в помещении, если рядом нет верного товарища?:) ну а потОм заметил, что SB1 — такой же и успокоился:)
0
Спасибо за схему, описание и фото :)

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

Два вопроса к вам есть, буду очень рад, если сможете ответить.

1. Какова чувствительность вашего датчика? На какие минимальные движения и на каком расстоянии от него срабатывает?
2. Реагирует ли на постоянную засветку от лампы накаливания, люминесцентной, Солнца?
0
Регуляторы, скорее всего для изменения чувствительности и времени «положительного» сигнала.
Ответы на ваши вопросы:
1. Если находиться в пределах метра от датчика, то любое движение вызывает срабатывание, даже незначительное. Но с расстояния 5-7 метров срабатывание возникало либо от перемещения туловища, либо от взмаха руки.
2. На засветку от лампы накаливания реакции я не замечал. Про люминесцентные лампы сказать ничего не могу, не было такого практического опыта. Прямые солнечные лучи на него так же не попадали в процессе тестирования, но в достаточно освещенной комнате датчик так же срабатывает, как и в полной темноте.
0
Спасибо за ответы! Разгребусь с грызущими делами, буду пробовать реализовать автосвет на кухне, в туалете и в ванной, давненько хочется. Ваш пост дал очередной стимул :)
0
О, у меня тоже десятка полтора таких мини-платок закуплено. :)
Где то и схема есь на жестком диске и даташит на микру…
0
2. Реагирует ли на постоянную засветку от лампы накаливания, люминесцентной, Солнца?
А с чего ему реагировать? Во первых, он работает в другом диапазоне (дальний ИК, вроде 10-15 микрон), во вторых — сам сенсор реагирует не на уровень, а на его изменение.
0
Теорию я плохонько знаю (в частности, что не должно реагировать на статичные предметы с меняющейся температурой). Интересовал практический опыт.
0
Насчёт регуляторов вот:
Регуляторы
0
О, спасибо, полезная информация :)
0
Появились дополнения и исправления.
0
Загрузил описание этого датчика. Сюда не удалось. Пришлось создать отдельный топик. we.easyelectronics.ru/Sneckus/opisanie-ot-kitayskogo-datchika-dvizheniya-sp501_2.html

Пытаюсь сделать такое же устройство с использованием этого датчика. Что то плохо он настраивается. Пока руками не начнешь махать прямо перед ним — мигает. А это значит, что нет движения.
0
пробовал крутить «Time Delay Adjust»?
0
Конечно пробовал. Очень тонкая настройка переменного резистора. Буквально +- 5 градусов.
Чуть увеличил длительность — перестает мигать при отсутствии движения. Т.е схема все время считает что перед ней человек.
Немного покрутил отверткой в другую сторону — перестает реагировать на человека. Вернее реагирует, но нужно активно махать руками перед датчиком. С трудом представляю, что кто то будет в туалете махать руками, что бы свет не выключился.
В итоге через час мучений как то настроил. Но это все на платке перед компом. У меня этот датчик подключен к MSP430 для обработки сигналов с китайского датчика. Ввел длительные задержки, в целом работоспособное устройство. Будет время — напишу схему и программу в другом топике.
0
Дык, соберите схемку с нуля согласно даташиту к подходящему PIR-Датчику.
0
А питание как сделано (на картинке как VCC)?
0
  • avatar
  • x893
  • 12 января 2014, 18:15
Выше ж спрашивали уже. Питальник от сотового.
0
Я себе в коридоре поставил такой датчик движения:


Он уже умеет сам определять наличие движения и яркость и включает/выключает нагрузку(лампочку). Дополнительно к нему поставил устройство плавного пуска и работает как надо :)
Стоит такая штука рублей 300-500.
Из регулировок на моём есть: чувствительность, яркость и время на которое включается.
Из минусов — там стоит реле, а не симистор и поэтому щелчки слышны, но нисколько не напрягают.
0
А если его доработать получится вот такой светильник.

Уже пару лет работает в туалете.
+1
Интересно :) Не помните, какой в нём внутри бп?
0
БП в нем 24В на конденсаторе. Я питаю этот датчик от внешнего блока снятого с принтера Canon.
0
интересное решение.
надо запомнить.
0
«Исправил файлы в архивах, а так же добавил для загрузки отдельно архив с прошивкой.» — подскажите а где качать эти архиви?
0
Ссылки мелким шрифтом под статьей.
0
спасибо, незаметние такиее!
0
А вот мне интересно как бы к плате еще добавить блок для понижения с 220 В до 12
0
Подскажите кстати а JP1 для чего нужен?
0
И если ктото может подскажите в Ом-ах номиналы резисторов 510Е, 360Е, 330Е, 39Е, или подскажите как посчитать, я не знаю (
0
Это и есть омы.
0
спасибо, в инете нашел был уже ))
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.