Подсветим темные углы - инфракрасный датчик движения (HC-SR501) с доработкой

  • Цена: $8.63 за 10 штук

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

Подробно характеристики и фотографии этого датчика есть в моем прошлом обзоре. Кратко напомню:
— максимальная дальность обнаружения движения под прямым углом к сенсору составила 6,7 метров;
— под углом в 160 градусов — 5 метров;
— крутилка Sx — меняет расстояние обнаружения под прямым углом с 2,8 до 6.7 метров;
— крутилка Tx — меняет время удержания 1 на выходе OUT c 6 до 290 секунд.

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

В своем предыдущем обзоре я рассказал про решение проблемы питьевой воды на даче. Та поделка потребовала подвести коммуникации близко к раковине (питание и сеть). Я не случайно установил в металлическом ящике блок питания существенно большей мощности, так как рассчитывал его использовать не только для бочки.

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

Требуется довольно простое решение питающееся от 12 Вольт с простым автоматическим включением и выключением. В этот раз управление и мониторинг по сети я посчитал избыточным. Сразу возникла мысль про предмет обзора, но данный PIR-датчик сам не умеет коммутировать нагрузку. Использование какого-то простого устройства управления нагрузкой (реле, ключевой транзистор) конечно позволит организовать управление, но будет иметь ряд недостатков:
— освещение будет включатся и выключать резко (бить по глазам);
— таймаут бездействия жестко определяется возможностями PIR-датчика (лично мне удобнее при обнаружени активности включить свет на довольно-большой промежуток времени, чтобы вообще не думать о свете.
Все эти недостатки хотелось устранить, и я решил это сделать с помощью простенького контроллера. В наличии у меня были ATiny85, хотя вполне устроили бы и ATiny13.

В голове родилась такая схема:

Из входных 12 В с помощью линейного стабилизатора ams1117-5 добываем 5 В для питания контроллера и PIR-датчика. PIR датчик подключен на пин PB4 контроллера. Вывод контроллера PB0 будет использоваться как аналоговый выход, управляя затвором полевого n-канального транзистора добытого со старой материнской платы (70T03GH). Таким образом, контроллер анализируя данные с PIR-датчика и, помня предыдущие события, задает интенсивность свечения приоткрывая MOSFET.

В программе Sprint Layout получилась такая платка:

Размеры ее существенно меньше чем размеры обозреваемого датчика. Плату легко доработать под ATiny13, корпус которой немного уже.

Изготови плату. Печатаем на спецбумагу:

На мои заготовки для плат вошло аж 9 штук, решил так и изготовить.

Результат термотрансфера:

Результат травления:

Разрезаем:

Лудим сплавом Розе:

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

Припаиваем компоненты и собираем все в кучу, получилось как-то так:




Далее, необходимо загрузить программу, процесс подключения ATiny и заливки кода я подробно описывал здесь, отличий нет. сама программа довольно сложная, и не всякий сможет понять что она делает:

#define PIR_PIN 4
#define LED_PIN 0

#define SPEED_ON 5
#define SPEED_OFF 30

#define TIMEOUT_LED 200000UL

unsigned long AutoTimeOn = 0;
boolean LedOn = false;

void setup() {
  pinMode(PIR_PIN, INPUT);
}

void loop() {
  if (digitalRead(PIR_PIN)){ 
    if(!LedOn){
      for(int i = 0 ; i <= 255; i++) { 
        analogWrite(LED_PIN, i);         
        delay(SPEED_ON);                            
      }
      LedOn = true;
    } 
    AutoTimeOn = millis();
  }else if (!digitalRead(PIR_PIN) && LedOn && ((unsigned long)(AutoTimeOn + TIMEOUT_LED)) < millis()){ 
    for(int i = 255 ; i >= 0; i--) { 
     analogWrite(LED_PIN, i);         
     delay(SPEED_OFF);                            
    } 
    LedOn = false;
  }
}

SPEED_ON, SPEED_OFF — определяют скорость включения и выключения, задавая временной интервал между очередной сменой градации яркости.
TIMEOUT_LED — определяет временной интервал, в течении которого светильник будет светить после последнего срабатывания датчика. Тут отмечу, что данная величина складывается со временем отрегулированным потенциометром на датчике, так что лучше потенциометром выставить минимальное время и при необходимости увеличить.

В качестве корпуса использовал маленькую распаячную коробку:

Делаем отверстие перьевым сверлом (я использовал на 24 мм):


В качестве источника света будет использоваться светодиодная лента в специальных алюминиевых направляющих, купленных в Леруа Мерлен:

Режем ленту на куски по 1 метру и припаиваем проводки. Я рекомендую зачищать от изоляции минимальное количество провода:

В качестве провода использовал ШВВП 2x0.5. Соединение ленты и провода защищаем термоусадкой:


Немного монтажа:





Тестирование света от блока питания (без разработанной схемы):



Заодно читатели увидят мой хэнд-мейд не имеющий отношения к электронике.

Ну и напоследок видео работы:





На этом заканчиваю. Всем света и добра. Спасибо тем кто дочитал до конца, надеюсь кому-то информация окажется полезной! Если будет интересно, продолжу писать про дачное творчество.
+
avatar
  • MisHel64
  • 06 августа 2016, 09:51
+1
А чем такие красивые платки делаешь? Не уж-то ЛУТ?
+
avatar
  • yurok
  • 06 августа 2016, 09:53
+3
он, тут писал как я это делаю
+
avatar
  • islera
  • 06 августа 2016, 10:08
+1
Поторопился немного фотографировать платки в сборе — колодочки совсем не припаяны:)
Ну и есть же датчики движения уже с интегрированными стабилизаторами, например, эти:
aliexpress.com/item/Free-shipping-1PCS-LOT-HC-SR501-HCSR501-SR501-human-infrared-sensor-module-Pyroelectric-infrared-sensor-imports/32649039227.html
правда доставка:(
За обзор плюсанул, молодец, но как я понял, процессор и программирование потребовались только для плавного включения выключения? Если без этого и с автономным питанием (три мизинчиковых батарейки), то есть икеевские готовые датчики, 600 руб за пару:
www.ikea.com/ru/ru/catalog/products/30203690
Собрано все хорошо, аккуратно, но на батарейках можно разориться — я вытаскиваю плату из корпуса и питаю от старых телефонных аккумуляторов (Нокийский BL-5F как раз такого же размера).
+
avatar
  • yurok
  • 06 августа 2016, 10:14
+2
по ссылке датчик со стабилизатором — но нагрузку то включить всеравно не могут.
Отличие моего решения — возможность плавно включать и выключать (причем как нравится) и произвольный таймаут на отключение — можно хоть час поставить — ну и решение для света на батарейках или акумах — помоему только аварийное целесообразно делать — в самый нужный момент оно разрядится и доп походы — затраты времени
+
avatar
  • Arm100
  • 06 августа 2016, 11:37
+3
прекрасная работа!!!
с меня +
+
avatar
  • Zuskin
  • 06 августа 2016, 12:08
0
прикольно и удобно
+
avatar
  • kirich
  • 06 августа 2016, 12:30
0
Как схема относится к КЗ на выходе?
При приклеивании к радиатору лента иногда умудряется закоротиться на него. Было как то такое.
+
avatar
  • Mplus
  • 06 августа 2016, 12:34
0
Согласен на счёт кз и радиатора, после оного бп от ферона испустил волшебный дым
+
avatar
  • yurok
  • 06 августа 2016, 13:06
0
кз на выходе проверяю иными средствами + защита в блоке питания
+
avatar
+1
А ссылку на леруа мерлен направляющие можно? как они вообще выглядят то?
+
avatar
  • yurok
  • 06 августа 2016, 13:05
0
Они там в отделе света, где все для светодиодов: ленты, блоки питания и тп
+
avatar
  • 1gor90
  • 06 августа 2016, 12:44
0
Отличное решение! а лишних плат не осталось? )
+
avatar
  • yurok
  • 06 августа 2016, 13:05
0
Вы в новосибирске?
+
avatar
  • mike888
  • 06 августа 2016, 12:44
+3
Где отзывы от мышей, понравилась им подсветка или нет?
Датчик допускает питание до 20 вольт и питать его от 5 не обязательно.
В тонком пластике большое отверстие удобнее и аккуратнее сверлить ступенчатым сверлом.
По большому счёту проще было на дверцу микрик соответствующий поставить или геркон, включающий питание, чтобы не держать постоянно включеный блок питания. Схема управления освещёностью в зависимости от внешнего освещения легко собирается в аналоговом варианте на фоторезисторе и добавляется к аналоговому входу, раз уж огород с плавным стартом затеян, толку от неё больше чем от плавного включения.
А так конструкция прикольная.
Да ещё в Леруа профиль для ленты дорогой и убогий, в профильных конторах по свету, дешевле и интереснее. Да и вариантов намного больше
+
avatar
  • yurok
  • 06 августа 2016, 13:13
+1
мне так проще было развести плату, да и не на всех таких датчиках бывает стаб.

Отверстие под раковиной получилось хорошо, под мангалом хуже — но все-равно его никто не видит и заглянуть туда даже проблематично — решил так и оставить. Если надо аккуратно — делаю разверткой.

Вот и не проще ниразу… Совсем… Дети (и не только они) открывают и забывают закрывать дверцы легко! а под мангалом вообще нет дверей. От внешнего освещения зависеть тут как раз совсем не нужно — там подсветка нужна независимо от внешнего освещения.

спс

ну искать где-то не захотел — меня вполне устроил — если бы надо было много — заморочился бы
+
avatar
  • yurok
  • 06 августа 2016, 15:36
+5
а мыши пока тестят — потом сюда отпишутся
+
avatar
  • Asasl
  • 06 августа 2016, 18:08
-1
По схемотехнике. Резисторы R2 и R3 можно исключить из схемы.
+
avatar
  • flymouse
  • 06 августа 2016, 19:04
+3
Нет нет и неееет! Ни в коем случае!!!
Автор, давай зачетку — пять!
Многие исключают эти резисторы и схема работает но:
R2 нужен для того чтобы ограничить импульсный ток который возникает когда включается полевой транзистор. Затвор — сток предсталяет собой конденсатор и в момент коммутации там проскакивает достаточно приличная «игла», выброс тока, которая в некоторых случаях вешает контроллер, особенно эту фитчу наблюдал в AVR.
R3 — он необходим когда к примеру плата уже собрана а контроллер не прошит или вовсе отсутствует. Тем самым наличие этого резистора гарантирует что выход будет обесточен. В противном случае затвор может «насосать» потенциал и быть на половину открытым и сгореть. Только номинал его 47К будет оптимален.
+
avatar
  • Asasl
  • 06 августа 2016, 21:03
-2
Ток умеет ограничивать сам GPIO.
Читайте даташиты.

R3 — он необходим когда к примеру плата уже собрана а контроллер не прошит
Я уже давно прошиваю (и отлаживаю) контроллеры прямо на плате куда они запаяны. Три провода надо для SWD, правда и такой дурью как AVR и Ардуино не маюсь, только Cortex ARM.

С друзьями на STM32F103 делаем хоббийный проект.
Многое уже работает.
sites.google.com/site/cansmarthouse/
+
avatar
  • flymouse
  • 06 августа 2016, 22:12
+1
Тоже давно прошиваю на плате запаянные контроллеры и тоже в основном ARM но бывают рабочие моменты когда нужно собрать на AVR.

С друзьями 3 недели перекапывали софт и железо вместо того что бы передать оборудование заказчику только потому что в даташите написано что GPIO сам все ограничивает.
Поэтому сейчас я не экономлю $0.0001 на парочке резисторов. Более того бывает туда ещё и ВЧ керамику добавляют чтоб FCC пройти например.
+
avatar
  • Asasl
  • 06 августа 2016, 22:22
-2
но бывают рабочие моменты когда нужно собрать на AVR
Вот тут по Станиславскому — «не верю».
Меня после ARM и RTOS с HAL загнать на AVR да еще под Ардуино невозможно. Ардуино удел тех, кто с микропроцессорами и Си всегда будет на «вы».
+
avatar
  • yurok
  • 06 августа 2016, 23:20
+4
А что конкретно вы делаете? Какие конкретно устройства? Выглядит просто — меня после белаза за легковушку не загнать и в булочную я поеду на своем белазе. И вы же не знаете людей которые тут пишут лично, советую быть аккуратнее иначе можно попасть в неудобную ситуацию
+
avatar
  • flymouse
  • 07 августа 2016, 00:19
0
В связи с этим 2 вопроса позволите?
Сколько проектов своих вы уже продали?
Сколько предзаказов уже у вас есть на ненавязчиво рекламируемый хоббийный проект с друзьями в котором многое уже работает?
+
avatar
  • Asasl
  • 07 августа 2016, 01:16
-1
За последние 20 лет и не подсчитать.

Сколько предзаказов уже у вас есть на ненавязчиво рекламируемый хоббийный проект
какие могут быть предзаказы на хобби?
Делаю УД для своего коттеджа в 340 кв.м, расположенного в красивом месте под Москвой, на берегу водохранилища. Заработал я его, продавая и обслуживая свои проекты :)

А что конкретно вы делаете? Какие конкретно устройства?
Сложные телекоммуникационные решения: СОРМ, визуализация образов и т.п.

И вы же не знаете людей которые тут пишут лично, советую быть аккуратнее иначе можно попасть в неудобную ситуацию
Скорее всего в неудобную ситуацию попадают (из моего опыта) люди не читающие даташиты :), предпочитая этому лишний раз «перекопать софт и железо». Как правило — это удел «аникейщиков»
+
avatar
  • flymouse
  • 07 августа 2016, 01:34
+3
Я вот не могу похвастаться коттеджем в таком понтовом месте, размер хороший, в качестве резюме вполне впечатляет.
Снимаю шляпу перед Вашим опытом, я не прав, пойду читать даташиты и выкидывать лишние детали пока очередная плата не ушла в производство!
+
avatar
  • Andy_ry
  • 15 августа 2016, 09:54
0
Ерунду Вы тут написали. Много лет (9) занимаюсь ARM, когда ещё STM в помине не было и, тем не менее, периодически пишу программы на С под MCS-51 и даже PIC микроконтроллеры! То, что Вы сосредоточились на STM говорит только о том, что это Ваше хобби. В реальном производстве до сих пор используются очень разные микроконтроллеры.
+
avatar
  • dima810
  • 06 августа 2016, 18:13
0
Спасибо! А можно к Вам в личку обратиться за кучей советов?
+
avatar
  • yurok
  • 06 августа 2016, 19:31
0
Можно
+
avatar
  • rexen
  • 12 августа 2016, 12:33
+1
использование какого-то простого устройства управления нагрузкой (реле, ключевой транзистор) конечно позволит организовать управление, но будет иметь ряд недостатков:
— освещение будет включатся и выключать резко (бить по глазам);
У транзистора ещё имеется линейный режим — за одну секунду коммутации не перегреется. Так вот используя заряд-разряд конденсатора в делителе на затвор можно рулить плавно током через полевик.
Я всё понимаю, во времена айфонов как-то копеечную тиньку проще заюзать, чем гуглить классику аналоговой схемотехники, но, право же, это огорчает электронщиков старой закалки.
Впрочем, сабж ещё туда-сюда, а вот проскакивало на ГТ «реле поворотов» на Ардуине вместо банальной 555 — вот это точно «приехали»…
+
avatar
  • yurok
  • 12 августа 2016, 21:19
0
время менять в зависимости от целевого использования — проблемно в аналоговом варианте
+
avatar
  • Andy_ry
  • 15 августа 2016, 10:01
+1
Вовсе не проблемно. Тау = R*C. Это время заряда-разряда конденсатора до уровня 0,707 В. Ставим переменный резистор с ограничивающим минимальное время резистором и готово!
+
avatar
  • yurok
  • 15 августа 2016, 19:07
0
размеры этого дела следует учитывать и универсальность
+
avatar
  • LynXzp
  • 14 августа 2016, 12:30
0
Ну еще в зависимости от знаний того кто делает. Если человек на микроконтроллере сделает за пару минут, а для аналоговой схемы нужно гуглить почти готовое решение, т.к. в схемах не разбирается. И кроме того если с микроконтроллером что-то не так — понять и исправить легко, а если аналоговая схема не заработает как нужно, то можно долго головой биться. Так что кроме банальной экономии времени экономиться еще и нервы. И стоимость уже не причем.

Разве что при массовом производстве стоить экономить, и то не всегда. Вот недавно делал… сигнализацию с несколькими уровнями… три входа, три светодиода, два звуковых сигнала — заказчик сделал плату на atmega128 (ну очень жирный микроконтроллер для этой задачи, 64 ноги). На стоимость изделия это никак не скажется потому что вместе со всеми датчиками, упсами, дизайном, сертификацией там точно за 1000 у.е. зашкаливает за шт.

Конечно еще есть встроенный перфекционализм. И я тоже печалюсь когда вижу exe-шник в сотню мегабайт или написаный на java/.net. Но это суровая реальность. Лень и невежество увы процветают, т.к. жизнь конечна во всем не успеешь разобраться.
+
avatar
  • 12val12
  • 15 августа 2016, 20:28
+1
на платке датчика есть стабилизатор 3.3 вольт можно его использовать если полевик будет открываться от 3.3 вольтов
и вообще зачем городить контроллер если можно сразу с датчика движения плавно зажигать?
+
avatar
  • skeptik
  • 25 августа 2016, 19:04
0
а если управлять таким образом свечением ленты, суммарной длиной порядка 2 метров. При этом лента кушает не более 2х ампер по 12 В. При минимальном свечении ленты транзистор будет сильно греться? Или так лучше не делать?
Я хочу на время сна светодиодную ленту гасить до такого состояния, чтобы свет в диодиках еле тлел. Если засить ленту ШИМом, то она (лента что у меня есть) все равно ярко светится.
Вот думаю, может быть также MOSFETом.
Либо второй вариант в голове крутится: это DC-DC на LM2596S удалить штатный потенциометр, и вместо него впаять цифровой потенциометр TPL0401A с i2c(от TI ) или DS1804 от Даллас с трехпроводным интерфейсом. И ардуинкой управлять этим потенциометром в зависимости от фоторезистора.
+
avatar
  • yurok
  • 26 августа 2016, 17:37
0
MOSFETом норм
+
avatar
  • dop2000
  • 08 октября 2016, 06:42
0
А встречал кто-нибудь у китайцев готовые модули для плавного включения/выключения нагрузки?
Я бы тоже хотел к светильнику прикрутить, но с электроникой не настолько дружен, чтобы самому травить платы и паять такие схемы…