Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Готовые конструкции » Умная ночная подсветка


Умная ночная подсветка

Сообщений 1 страница 26 из 26

1

В ходе перевода освещения квартиры с традиционного (накаливально-экономного) на светодиодное, родилась идея ночных светильников с датчиками движения. В итоге сие чудо враждебной техники оселилось в коридоре и ванной.
В ванне это выглядит так:
http://sa.uploads.ru/t/fC1UZ.jpg
Корпус, как обычно, из коробки на 2 автомата, светильник 4х1вт светодиода на планке из алюминиевого профиля для москитных сеток.
Электро_начинка совсем простая... Датчик движения sr501, трансформатор на 12в, вампир-повышайка для питания светодиодов (когда диоды включены напряжение проседает до 6в), релюшка с ключем НПН (по приколу релюшка щелкает).
http://s1.uploads.ru/t/NloGK.jpg
Вы спросите - а где же тут AVR?
Будет-будет, скоро. ;)  Собственно, работало сие чудо - глаз радовало... До поры, до времени... :)
Изменился у меня график работы, встаю я сейчас в 5 утра, и этой подсветки вполне хватает, чтоб собраться на работу.
Единственный недостаток - отключается в самый неподходящий момент. :(  Щелк, и кругом темнота.  :'(
Искал схему задержки отключения, думал взять 555 таймер. То ли искал плохо, то ли метеоусловия были неблагоприятные...
Закончилось тем, что поехал на радиорынок и купил пару tiny13. Слепил маленькую платку, встроил в светильник.
http://se.uploads.ru/t/Ze9kO.jpg
Идея такая - движение отслеживает sr501, задержка на нем выставлена минимальная (около 3сек),
                 - время работы считает tiny13 и по срабатыванию sr501 начинает считать заново.
Пока в помещении кто-то шибуршиться, sr501 периодически срабатывает, tiny13 всякий раз начинает свой счет заново, и свет не гаснет.
Как только помещение пустеет, sr501 успокаивается, tiny13 благополучно досчитывает время работы и выключает подсветку.
Как то так... 
http://sd.uploads.ru/t/ZGlyU.jpg
Программа простенькая (24%)

программа

$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 16
$framesize = 16

Open "comb.0:9600,8,n,1" For Output As #1                   'uart, чтоб на симуляции посмотреть счетчик
                                                                                  'времени работы прибора
                                                                                  'можно удалить
'----------------------------------------------------------------------------------------------
Dim Dlit_pauza As Byte : Dlit_pauza = 60                    'длительность паузы прибора (секунды)
'----------------------------------------------------------------------------------------------
Dim Dlit_rabota As Byte : Dlit_rabota = 0                   'счетчик времени работы прибора
'----------------------------------------------------------------------------------------------
Dim Flag_on_off As Byte : Flag_on_off = 0                   'флаг включено(1)-выключено(0)
'----------------------------------------------------------------------------------------------
Config Pinb.4 = Input : Dat_dvig Alias Pinb.4               'вход от датчика движения,
                                                                               'по схеме вход в состоянии 1,
                                                                               'подтянут к + через резистор 10кОм
                                                                               'и ключ на npn транзисторе
'----------------------------------------------------------------------------------------------
Config Portb.3 = Output : Key_rele Alias Portb.3            'выход на ключ реле
'----------------------------------------------------------------------------------------------
Do
If Dat_dvig = 0 Then Gosub Key_rele_on                      'проверка реакции датчика движения
                                                                                 'если сработал (0), включаем реле

Select Case Flag_on_off                                              'проверяем флаг включено(1)-выключено(0)
   Case 0                                                                   'если (0),
      Gosub Key_rele_off                                              'то выключаем ключ реле
   Case Else                                                               'если нет,
      Decr Dlit_rabota                                                   'уменьшаем на 1 счетчик времени работы прибора
      If Dlit_rabota = 0 Then Gosub Key_rele_off            'и проверяем его на =0, если =0,
                                                                                'то выключаем ключ реле

End Select

'----------------------------------------------------------------------------------------------
Print #1 , Dlit_rabota                                         'uart, чтоб на симуляции посмотреть счетчик
                                                                       'времени работы прибора
                                                                       'можно удалить
'----------------------------------------------------------------------------------------------
Wait 1                                                              'ждем 1 секунду
Loop
End

Key_rele_on:                                                    'подпрограмма включения ключа реле
Dlit_rabota = Dlit_pauza                                    'задаем длительность работы
Flag_on_off = 1                                                'флаг в 1 (включено)
If Key_rele = 1 Then Return                              'если ключ реле уже включен, возврат
Key_rele = 1                                                    'включаем ключ реле (1)
Return                                                             'возврат

Key_rele_off:                                                  'подпрограмма выключения ключа реле
Flag_on_off = 0                                               'флаг в 0 (выключено)
If Key_rele = 0 Then Return                             'если ключ реле уже выключен, возврат
Key_rele = 0                                                   'выключаем ключ реле (0)
Return                                                            'возврат

Отредактировано pavel1969 (2017-10-29 23:59:46)

+2

2

У меня ночная подсветка из одного элемента светодиодной 12 В лены (три светика), никакой автоматики, подсвечены все комнаты, спать не мешает, зато удобно - через кота не споткнёшься!

0

3

Adagumer
Ну чтож, каждому - своЁ...
Я в коридоре хочу еще и BH1750 прикрутить, чтоб подсветка включалась только когда общая освещенность недостаточна, или не включалась, когда большой (основной) свет включен.

Отредактировано pavel1969 (2017-10-29 22:26:50)

0

4

pavel1969 написал(а):

каждому - своЁ...

Я только рад что есть творческие люди!
Мне лень видимо я прогрессирую!

0

5

pavel1969 написал(а):

Я в коридоре хочу еще и BH1750 прикрутить


Могу ошибаться, но мне кажется, что фоторезистора хватит за глаза.

0

6

Adagumer написал(а):

Мне лень видимо я прогрессирую!


???

0

7

sasha_1973 написал(а):

???

Лень — двигатель прогресса. :D

0

8

sasha_1973 написал(а):

Могу ошибаться, но мне кажется, что фоторезистора хватит за глаза.

Дело в том, что коридорной подсветкой я хочу пригрузить умный дом (территориально они расположены рядом).
А в умном доме по шине и2с уже работают часы и память.
BH1750 будет проще подключить по этой же шине. Останется просто добавить подпрограмму обработки... :)

0

9

Пётр написал(а):

Лень — двигатель прогресса.

И вы с этим не согласны? ;)

0

10

а взять охранный датчик и в его релюху пригрузить ленточку не вариант? там все на 12в. мудро, кошерно и хорошо весьма  :D
а если взять совмещенный, ИК+АК, то можно еще и акустопуск зафилигранить! вот тока в ладоши хлопать убьешсси....

0

11

IDok
Конечно можно. Можно взять то, можно взять это, можно взять всяко-разное.... :)
Вспоминается мульт про Филеаса Фогга (80 дней вокруг света):

Используй то что под рукою, и не ищи себе другое.

Я предложил сию поделку в качестве Идеи.
А как эта Идея будет реализована в каждом конкретном случае, так то такое...

Отредактировано pavel1969 (2017-10-30 17:31:41)

0

12

pavel1969
ну да. просто как раз у меня под рукой гораздо больше охранных датчиков и БП на 12в, нежели микроконтроллеров и чего-то там еще :)

0

13

pavel1969 написал(а):

В ходе перевода освещения квартиры с традиционного (накаливально-экономного) на светодиодное

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

Пример из жизни:
В одном кабинете после ремонта сотрудники стали жаловаться на усталость глаз и повышенную слезоточивость после работы. Работают там по 12-ти часовому графику.
В ходе изучения проблемы (меня тоже привлекли) было выяснено, что в процессе ремонта были установлены с/д потолочные светильники (подвесной потолок).
Мной было предложено:
- расключить светильники на разные фазы (возможность есть);
- заменить часть светильников на лампы накаливания.
Было сделано следующее:
- смонтированные светильники остались "как есть";
- были добавлены три (дизайн сыграл свою роль) светильника с галогеновыми лампами.

Сотрудники счастливы и завалили меня дармовыми кофе и шоколадками... ;)
Это происходило еще в 2016 году, с тех пор все помещения ремонтируются по этому принципу.

Я не к тому, что ваша идея плоха, тут я "руками и ногами", я про другое... ;)

0

14

Nord
ну, с теплыми ламповыми лампами по спектру конечно никто не сравнится. хотя я вот для дома выбрал светодиодные "теплого" спектра. и вроде как нормально все. "холодные" лампы все ж резковаты, как по мне. я же не в морге (тьфу-тьфу) работаю

0

15

IDok написал(а):

Nordну, с теплыми ламповыми лампами по спектру конечно никто не сравнится. хотя я вот для дома выбрал светодиодные "теплого" спектра. и вроде как нормально все. "холодные" лампы все ж резковаты, как по мне. я же не в морге (тьфу-тьфу) работаю

Тут дело не в спектре, а в мерцании с/д и л/ц ламп.
Спектральная составляющая - дело вкуса по отношению к освещаемой зоне.
Визуально это как-бы не наблюдается, но на подсознательном уровне фиксируется однозначно...
Лампы накаливания гораздо более инертны в светоотдаче и компенсируют их (с/д и л/ц) мерцание.

Есть о-о-о-очень хорошая книга - "Справочная книга по светотехнике" Москва, Энергоатомиздат, 1983 г., под ред. Ю.Б.Айзенберга.
Там, разумеется, про с/д освещение практически ничего, но вот уже более 15 лет эта книга для меня - почти настольная по роду выполняемых работ... ;)
Рекомендую. Где скачать не знаю, пользуюсь печатным вариантом...
Сканировать не буду - почти 470 страниц формата А4... ;)

Отредактировано Nord (2017-10-30 21:34:43)

0

16

Nord написал(а):

Есть о-о-о-очень хорошая книга - "Справочная книга по светотехнике" Москва, Энергоатомиздат, 1983 г., под ред. Ю.Б.Айзенберга.
Там, разумеется, про с/д освещение практически ничего, но вот уже более 15 лет эта книга для меня - почти настольная по роду выполняемых работ...
Рекомендую. Где скачать не знаю, пользуюсь печатным вариантом...
Сканировать не буду - почти 470 страниц формата А4...

У меня есть - http://turbobit.net/3bcuj0vmtn3h.html
з.ы. Пож, не перезаливайте на другие файлообменники.

0

17

Прочитав пост, первая мысль - CD4060, решает данный вопрос. Вторая мысль- валяется старый тостер на чердаке. Вообще, я сторонник жёсткой логики по возможности.

0

18

С светодиодными лампами есть только одна проблема, почему устают глаза - это некачественная/дешевая сборка/разработка. Когда мы экономим - это значит, что не только срок службы лампы будет меньше, но и: сила отдачи светового потока меньше, мерцание. Вот глаза у человека в основном устают от мерцания. Лампа накаливания да, имеет большую инерционность (сглаживает). В общем лампы нормальные надо ставить, а не гнать на лэд.)

+1

19

RDW написал(а):

С светодиодными лампами есть только одна проблема, почему устают глаза - это некачественная/дешевая сборка/разработка.
В общем лампы нормальные надо ставить, а не гнать на лэд.)

Согласен "на все сто", только тут тоже ситуация двоякая...
В с/д лампе все решается драйвером, но лично мне ни разу не попадались лампы, где драйвер стабилизирует напряжение, а не банально ограничивает.

Я дома (опробовано и смонтировано) взял "электронный тр-р" для галогенок и на выходе припупырил КРЕНку 12в, сдобрив ее электролитом 200,0х50в.
Осциллограф на выходе показал практически плоскую (+-0.1в) "пилу".
КРЕНка на плоском радиаторе 2х6х0,3см.
Питает светильник с 4шт по 7вт с/д лампами.

0

20

http://lamptest.ru/

+1

21

RDW написал(а):

http://lamptest.ru/

Интересный сайтик.
Спасибо !

0

22

Nord написал(а):

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

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

0

23

IDok написал(а):

у цокольных наверное да, а вот у больших типа офисных - там драйвер солидного размера и внутре у него понатыкано всякого

Не буду спорить, но факт остается фактом, о чем я ранее говорил...
Дохлые драйвера от светильников пока не попадались, а живой ковырять не хочу.
Поэтому понятие "понатыкано" - еще не говорит о качестве работы аппарата. ;)

0

24

Nord
завтра гляну, если не выкинул. на вскидку - диодный мост, транс и мелкосхема точно были. ну кондерчики еще. драйвер от прожектора на 36 вольт

0

25

IDok написал(а):

завтра гляну, если не выкинул. на вскидку - диодный мост, транс и мелкосхема точно были. ну кондерчики еще. драйвер от прожектора на 36 вольт

Да перечень "начинки", думаю, у всех будет примерно одинаковый...
Главное - что на выходе.

0

26

Добавлю свой вариант "ночника"... ;)

В качестве собственно подсветки используется лента с чипом WS2811 (секции по 3 RGB с/д, питание 12в).

Выключателем служит датчик AM312: https://amperkot.ru/products/miniatyurn … 27383.html
Этот датчик удобнее HC-SR501 из-за миниатюрности и более коротких и точных временнЫх параметров.
Выход датчика инвертирован транзистором для повышения помехоустойчивости системы.
"Базовый" резистор имеется на плате датчика (20кОм), поэтому в схеме отсутствует.

Рулит всем ATTiny45...
Пробовал ATTiny25 - компилятор ругается на нехватку SRAM... ;)

При обнаружении движения по ленте двигается "точка с хвостиком" от начала ленты до конца и обратно до тех пор, пока фиксируется движение.
Яркость подобрана примерно так: 100% - 50% - 10%, самый яркий - "голова".
При прекращении движения лента гаснет в той позиции, где её "застало" событие датчика.
Повторное включение обусловлено параметрами датчика (около 2 сек).

Цвет свечения можно менять, переуказав необходимые значения в программе.
Количество с/д (секций) в ленте достаточно указать один раз (у меня использованы 4 разных ленты от 20 до 7 секций длиной).

Вся схема собрана в одном корпусе, подключается к ленте 4-жильным кабелем (типа UTP, частенько используется при монтаже систем охраны).
Схема устойчиво работает при удалении датчика от точки подключения на 5,5 м (дальше не приходилось).
Помехозащищенность при этом достаточно высокая, проверялось помехой в виде эл/дрели, шнур которой был несколько раз обернут на кабеле связи (разъем "Лента WS2811" на схеме).

Схема:
http://forumuploads.ru/uploads/0000/25/b8/1743/t58824.jpg

Прошивка:

Свернутый текст

$Regfile="attiny45.dat"
$Crystal=8000000
$hwstack=32
$swstack=16
$framesize=32

'---------------------------------------------------------------------------------------------------------
$lib "Rainbow1.21.lib"
$external WS2812b

'---------------------------------------------------------------------------------------------------------
Config PINB.0 = Input                                   ' Сингал от датчика движения

'---------------------------------------------------------------------------------------------------------
Declare Sub Select_Rainbow(byval Channel As Byte)
Declare Sub Setcolor(byval Lednr As Word , Color() As Byte)
Declare Sub Send()
Declare Sub Rotate_left(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_left
Declare Sub Rotate_right(byval Left_index As Word , Byval Width As Word) : $external Use_rotate_right
Declare Sub Clear_colors() : $external Use_clear_colors

'---------------------------------------------------------------------------------------------------------
'#Rainbow0
Const Rainbow0_len = 20                                  ' Указываем количество секций
Const Rainbow0_port = PortB
Const Rainbow0_pin = PB4

'---------------------------------------------------------------------------------------------------------
Dim Color(3) As Byte
Dim a As Byte
Dim m As Byte
Dim p As Integer
p = 40                                                              ' установка паузы
m = Rainbow0_len - 3

R Alias Color(_base)
B Alias Color(_base + 1)
G Alias Color(_base + 2)

'---------------------------------------------------------------------------------------------------------
Call Select_Rainbow(0)
Gosub svet3

'====================================================
'====================================================
main:

Do

If PINB.0 = 0 Then Goto svet                      ' Ожидание срабатывания датчика движения

Loop

End

'====================================================
'====================================================
svet:                                                              ' Движение от начала к концу ленты

a = 0

sv_kr1:
For a = 0 To 2
'--------------------------------------- Назначение желтого цвета
'      If a = 2 Then
'            R = 250
'            G = 100
'      End If
'      If a = 1 Then
'            R = 100
'            G = 30
'      End If
'      If a = 0 Then
'            R = 10
'            G = 2
'      End If
'--------------------------------------- Назначение R, G или B
      If a = 2 Then R = 250
      If a = 1 Then R = 50
      If a = 0 Then R = 5

      Call Setcolor(a , Color())
      Call Send()
Next a

For a = 1 To m
      Call Rotate_right(0 , Rainbow0_len)
      Call Send()
Waitms p

If PINB.0 = 1 Then Goto svet3

Next a

Gosub svet3

'---------------------------------------------------------------------------------------------------------
                                                                    ' Движение от конца к началу ленты
sv_kl1:
For a = 19 To 17 Step -1
'--------------------------------------- Назначение желтого цвета
'      If a = 17 Then
'            R = 250
'            G = 100
'      End If
'      If a = 18 Then
'            R = 100
'            G = 30
'      End If
'      If a = 19 Then
'            R = 10
'            G = 2
'      End If
'--------------------------------------- Назначение R, G или B
      If a = 17 Then R = 250
      If a = 18 Then R = 50
      If a = 19 Then R = 5

      Call Setcolor(a , Color())
      Call Send()
Next a

For a = 1 To m
      Call Rotate_left(0 , Rainbow0_len)
      Call Send()
Waitms p

If PINB.0 = 1 Then Goto svet3

Next a

Gosub svet3

Goto svet

'====================================================
svet3:

Call Clear_colors()
Call Send()
Return
'====================================================

Отредактировано Nord (2020-01-14 00:33:29)

+1


Вы здесь » Программирование ATMEL в BASCOM. » Готовые конструкции » Умная ночная подсветка