
Witam,
Tu: https://www.elektroda.pl/rtvforum/topic3309757.html znajduje się opis powielacza czasu automatu schodowego.
Obiecałem tam, że na bazie tamtego układu opracuję „inteligentny” automat schodowy, i oto jest

Jego „inteligentność” jest zawarta w założeniach do projektu:
1. Ma być podłączony równolegle do przycisków oświetlenia, najlepiej w jednym z nich,
2. Ma być zasilany z obwodu przycisków i nie wymagać przeróbki instalacji (poza odpięciem istniejącego automatu schodowego),
3. Musi mieć możliwość łatwego ustawiania czasu świecenia,
4. Musi pozwalać na załączenie i wyłączenie oświetlenia na stałe,
5. Musi regenerować czas świecenia (po wciśnięciu dowolnego przycisku czas jest odmierzany od nowa (ta funkcja zastępuje wspomniany na wstępie powielacz.),
6. Musi powiadomić mignięciem odmierzenie czasu i podtrzymać świecenie jeszcze przez ok. 15 sek.
7. Powinien mieć możliwość wyłączenia oświetlenia dowolnym przyciskiem.
Schemat ideowy:

Schemat przedstawia wszystkie niżej opisane opcje sterowania.
Podłączenie i zasilanie jest podobne jak w powielaczu. Zasilacz zrealizo wany jest na kondensatorach C4, C5 i mostku. Diody Zenera D2 i D4 stabilizują wstępne napięcie sterujące (ok. 8.5 V), a sama D2 stabilizuje zasilanie mikrokontrolera (5 V). Dioda D3 zapobiega rozładowaniu kondensatora C2.
Tranzystor Q1 z rezystorem R3 i diodą Zenera D1 spełnia rolę klucza przenoszącego stan przycisków oświetlenia na wejście mikrokontrolera. Nie zastosowałem stabilizatorów napięcia, bo one pobierają energię a to przy dość krytycznym zasilaniu układu jest niedopuszczalne. Zwykła dioda Zenera przy obniżeniu napięcia poniżej progu praktycznie nic nie pobiera, a do tego jest znacznie mniejsza i tańsza. Napięcie zasilania mikrokontrolera tutaj nie musi być takie sztywne. Praktycznie w czasie pracy waha się między 2.5V i 5V w zależności od trybu w jakim się znajduje a i tak układ pracuje poprawnie. Można ewentualnie zastosować ATTINY 13V ale zwykła u mnie też daje radę i to nie jeden egzemplarz.
Wyjście mikrokontrolera steruje optotiakem MOC 3020, który załącza triak roboczy.
I to w zasadzie wszystko z harware, cała „mądrość” jest zawarta w programie sterującym.
Swoją drogą trzeba było trochę gimnastyki żeby to wszystko upchnąć w 1 kB pamięci i to w BASCOM, choć nie wiem czy C++ dałoby dużo krótszy kod, nie spróbowałem, bo pomimo wielu podejść ta nieprzyjazna składnia C mnie skutecznie od tego odwiodła

Zasilanie układu w czasie załączenia triaka jest zapewnione przez opóźnienie punktu zapalenia, które wprowadza zasilacz kondensatorowy. Dzięki temu w każdym okresie sinusoidy na anodach triaka przez chwilę utrzymuje się napięcie kilku woltów wystarczające do zasilania układu. Jest to możliwe dzięki zastosowaniu optotriaka bez załączania w zerze (MOC 3020). Z optotriakiem MOC 3043 (załączający w zerze) układ nie chciał działać. Opóźnienie zapalania oświetlenia nie wpływa na jasność świecenia żarówek. Takie zasilanie upraszcza układ, nie trzeba transoptorów do wykrywania przejścia przez zero i nie wymaga odpowiedniej funkcji w i tak już przeciążonym kodzie (wykorzystane są wszystkie bajty pamięci).
Działanie układu jest następujące. Wciśnięcie dowolnego przycisku oświetlenia powoduje spadek napięcia sterującego i zatkanie tranzystora Q1. Zasilanie mikrokontrolera jest wtedy podtrzymywane kondensatorem C2. Aby uniezależnić się od czasu trzymania przycisku (braku zasilania) i nie stosować kondensatora o bardzo dużej pojemności zastosowałem drobny trik w programie. Zatkanie tranzystora Q1 powoduje podanie „1” na wejście mikrokontrolera. Ten fakt wywołuje wyłączenie wszystkiego co się da i przejście procesora w tryb „POWERDOWN”. W tym stanie procesor pobiera mnij niż 1 uA i przy zastosowanym kondensatorze C2 może przebywać nawet kilka minut (nie sądzę, żeby komuś się chciało tyle trzymać wciśnięty przycisk). Po puszczeniu przycisku pojawia się napięcie sterujące, tranzystor Q1 się nasyca i podaje stan niski na wejście co wybudza procesor i program zaczyna ponownie działać, czyli zaczyna odmierzać czas. Jeśli jednak ktoś się uprze lub włoży zapałkę do przycisku i spowoduje tym rozładowanie kondensatora C2, to tragedii nie ma. Po prostu po puszczeniu przycisku zostanie przywrócone zasilanie, nastąpi reset procesora, światło zostanie zgaszone i będzie można go zapalić ponownie.
Po odmierzeniu zaprogramowanego czasu następuje dwukrotne mignięcie światła i podtrzymanie świecenia jeszcze przez 15 sek. dla umożliwienia dotarcia do najbliższego przycisku, po czym zostaje wyłączone. Wciśnięcie dowolnego przycisku w trakcie świecenia powoduje odmierzanie czasu od nowa niezależnie czy jest to normalny czas czy czas dodatkowy.
Zapalenie i gaszenia światła na stałe jest możliwe dowolnym przyciskiem oświetlenia. W podstawowym programie realizuje się to kodem , 3 krotne kliknięcie przycisku. Światło jest wtedy zapalane ale tak naprawdę dla zabezpieczenia przed zapominalskimi, na 1 godzinę. W trakcie tego świecenia co 15 sek. występuje krótkie mignięcie światła. Wyłączenie tego trybu następuje po ponownym wprowadzeniu kodu (pojedyncze wciśnięcie lub odstępy między wciśnięciami dłuższe niż 4 sek. nie wyłącza trybu). Procedura wyłączania światła odbywa się tak samo jak przy normalnej pracy, czyli dwukrotne mignięcie i podtrzymanie przez 15 sek. To po to, żeby powiadomić osobę, która w między czasie weszła na klatkę i nie jest zorientowana.
Każde podanie kodu, 3 krotne kliknięcie przycisku w trakcie świecenia, a więc również przy normalnym trybie odmierzania czasu powoduje wyłączenie oświetlenia. To tak dla zaoszczędzenia prądu gdzie się tylko da ( jestem z Krakowa

Programowanie czasu jest bardzo proste. Należy włączyć oświetlenie na stałe (3 krotne kliknięcie przycisku), np. przy bramie wejściowej, wyjść na ostatnie piętro , ewentualnie chwilę odczekać, i wyłączyć oświetlenie ale tym razem innym kodem, 5 krotne kliknięcie przycisku. Czas, jaki upłynął od momentu załączenia do chwili podania kodu programującego zostaje zapamiętany na stałe w EEPROM mikrokontrolera.
Przy zastosowanych parametrach programu maksymalny czas wynosi 4 minuty, ale oczywiście można to zmodyfikować. Tylko, że zastosowanie regeneracji czasu daje możliwość maksymalnego skrócenia, możemy przecież wciskać przycisk co 1 piętro.
Taki sposób programowania choć prosty, może być kontrowersyjny, zwłaszcza tam gdzie mieszkają lub pojawiają się osoby lubiące się bawić przyciskami bez potrzeby i w sposób nieodpowiedzialny.
Dlatego układ jest przystosowany do programowania specjalnym przyciskiem umieszczonym wewnątrz obudowy. Do tego sposobu jest przystosowany drugi program.
Nastawa czasu może być też wprowadzana analogowo np. potencjometrem podłączonym do ADC mikrokontrolera. Odpowiedni pin jest wyprowadzony na płytkę. Wystarczy tylko odpowiednio zmodyfikować program.
Układ jest dość uniwersalny i może być zastosowany też do innych celów niż oświetlenie klatki schodowej. Można go zastosować wszędzie tam gdzie potrzebne jest odmierzanie zaprogramowanego czasu i nie tylko.
Zasilanie nie musi być szeregowe. Po przecięciu zworki i podłączeniu dodatkowego przewodu układ może być zasilany ciągle, byle prądem zmiennym, a sterowanie odbywa się dodatkowymi przyciskami podłączonymi do wyprowadzonych na płytkę pinów, lub można podłączyć np. czujnik ruchu czy inne sensory do wyboru, byle miały zwierne styki.
Na płytce jest wyprowadzone złącze ISP do programowania procesora. Po zaprogramowaniu może być zastosowane do podłączenia zewnętrznych urządzeń i/lub zasilania z zewnętrznego zasilacza 5V DC.

Program 1
Code: vbnet
Program 2
Code: vbnet
Cool? Ranking DIY