Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Bascom][ATmega8]oświetlenie schodów

jacek1987-1987 26 Lip 2012 12:57 5267 21
  • #1 26 Lip 2012 12:57
    jacek1987-1987
    Poziom 11  

    Witam chciałem zaprojektować sobie oświetlenie schodów podobne do tego na filmiku

    Link

    udało mi się napisać program który by zapalał oraz gasił światła na schodach z taką sekwencją jak na podanym filmiku z wykorzystaniem 4 czujników ruchu.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Dodatkowo zastosowałem fotorezystor podłączony tak jak na zdjęciu
    [Bascom][ATmega8]oświetlenie schodów
    w celu regulacji tego kiedy ma być aktywne to oświetlenie schodów tzn. żeby nie dochodziło do zapalania świateł na schodach np. gdy jest słoneczny dzień i jest jasno w domu tylko po zmroku. Dodatkowo chciałem jeszcze dodać taką funkcję żebym mógł zapalać oraz gasić to oświetlenie przy pomocy włączników schodowych tylko że wtedy miały by się zapalić wszystkie światła na raz a nie po kolei z opóźnieniem i drugą rzeczą jaką chciałbym jeszcze dodać jest gaszenie wszystkich świateł na raz gdy ktoś przejdzie przez czujnik co spowoduje zapalanie świateł po kolei a następnie ponownie przejdzie przez wiązkę tego samego czujnika z tym że chce aby wtedy do zgaszenia doszło po np. 5s opóźnieniu. I mam problem z tym jak to wykonać te dodatkowe dwie funkcje jakie sobie założyłem podczas projektowania. Jest możliwe napisanie tak tego programu aby wykorzystać tylko dwa czujniki ruchu a nie 4? Z góry dzięki za pomoc

    0 21
  • #3 06 Sie 2012 13:40
    zielony_gajowy
    Poziom 13  

    jacek1987-1987 napisał:
    udało mi się napisać program który by zapalał oraz gasił światła na schodach z taką sekwencją jak na podanym filmiku z wykorzystaniem 4 czujników ruchu.

    No, a co jak żona zawoła z dołu i w połowie schodów trzeba się wrócić?
    Już to przećwiczyłem.
    Stanęło na przełączniku schodowym, przełączanym "fotokomórki".
    jak podchodzę do pierwszego/ostatniego stopnia załącza oświetlenie całych schodów. I jeśli je przejdę, wtedy wygasza podświetlenie schodów. Z praktyki użytecznej - wolę mieć na widoku, całe schody (bo mogę być w stanie wskazującym, lub obciążony demencją starczą), niż chodzić po schodach jak niewidomy z laską.

    I podkreślam. Dla takiego bajeru - musi być czujnik na każdym stopniu, aby podświetlenie płynnie przebiegało. Fajny pomysł, ale trzeba masy czujników zapakować w ściany (lub tensometryczne, w stopnie).

    Najprościej. Dwie czujki podczerwieni podpięte do przełącznika schodowego.

    Pozdrawiam
    Jeżeli, chcesz mieć "bajer", to "fotokomórka" muszą być na każdym szczeblu.

    0
  • #4 06 Sie 2012 21:05
    jacek1987-1987
    Poziom 11  

    Cytat:
    No, a co jak żona zawoła z dołu i w połowie schodów trzeba się wrócić?

    Do tego właśnie chciałem wykorzystać ta funkcję którą chciałbym dołożyć mianowicie jak ktoś zawróci na schodach to żeby po przejściu przez wiązkę fotokomórki oświetlenie gasło po np. 5s.
    Cytat:
    Najprościej. Dwie czujki podczerwieni podpięte do przełącznika schodowego.

    Mógłbym prosić o sprecyzowanie tego i o jakiś schemat podłączenia bo nie bardzo rozumiem

    0
  • #5 07 Sie 2012 17:03
    zielony_gajowy
    Poziom 13  

    jacek1987-1987 napisał:
    Mógłbym prosić o sprecyzowanie tego i o jakiś schemat podłączenia bo nie bardzo rozumiem

    Przepraszam. wycofuję się z tych czujek. Nie o to chodzi.
    Napisz ile stopni mają schody. Wieczorkiem coś namaluję.
    Czy detekcja ma być przez podczerwień, czujniki tensometryczne,ultradźwięki?
    Czym będą podświetlane schody - LED, lampki LED, żarówki, folie elektroluminescencyjne halogenki i z jakiego napięcia.

    0
  • #6 07 Sie 2012 22:19
    jacek1987-1987
    Poziom 11  

    Schody mają 12 stopni. Myślałem żeby detekcje zrobić przez podczerwień na początku i na końcu schodów. Schody będą podświetlane przez lampki LED na 230VAC

    0
  • #7 08 Sie 2012 10:34
    SylwekK
    Poziom 28  

    jacek1987-1987 napisał:
    Dodatkowo chciałem jeszcze dodać taką funkcję żebym mógł zapalać oraz gasić to oświetlenie przy pomocy włączników schodowych tylko że wtedy miały by się zapalić wszystkie światła na raz a nie po kolei z opóźnieniem...


    No nie rozumiem w czym problem... jeśli na wyłącznikach schodowych jest tylko niskie napięcie z Twojego układu (zakładam, że nie podłączasz "schodów" pod wyłączniki z instalacją 230V) to przecież wystarczy wyskoczyć do podprogramu, który ustawia bądź zeruje wszystkie bity portu wyjściowego, a najlepiej jak je po prostu "toggluje"

    jacek1987-1987 napisał:
    ...drugą rzeczą jaką chciałbym jeszcze dodać jest gaszenie wszystkich świateł na raz gdy ktoś przejdzie przez czujnik co spowoduje zapalanie świateł po kolei a następnie ponownie przejdzie przez wiązkę tego samego czujnika z tym że chce aby wtedy do zgaszenia doszło po np. 5s opóźnieniu...


    Najprościej to zrealizować przez uruchamiany programowy licznik (wykorzystaj Timer) w momencie każdego przecięcia fotokomórki. Licznik powinien odliczać przeciętny czas na przejście po schodach najlepiej do połowy lub nieco dalej (ale nie dłużej niż na całkowite przejście). Jeśli licznik nie zdąży odliczyć tego czasu, a ta sama fotokomórka znowu będzie aktywna to wtedy potraktuj to jako sygnał zawrócenia ze schodów.

    Oczywiście trzeba sobie zdawać sprawę, że rozwiązanie takie ma ograniczenia (jak i każde inne) jeśli nie zrobi się detekcji kierunku ruchu opartej na dwóch czujnikach z każdej strony schodów (co było by najlepszym i, odważę się powiedzieć, niezawodnym sposobem)
    Pozdrawiam

    0
  • #8 08 Sie 2012 14:01
    jacek1987-1987
    Poziom 11  

    Mógłbyś mi napisać fragment kodu jak by to miało wyglądać z tym podprogramem do tych włączników schodowych oraz z tym licznikiem? Na jakiej zasadzie miała by działać ta detekcja ruchu? W chwili obecnej do sterowania tym programem który napisałem muszę wykorzystać 4 czujniki ruchu (fotokomórki) po dwie na początku i na końcu schodów. Jedna na dole jest do zapalania schodów od dołu a druga do gaszenia od góry analogicznie jest na końcu schodów- jedna fotokomórka ma zapalać schody od góry a druga gasić od dołu.

    0
  • #9 08 Sie 2012 14:31
    SylwekK
    Poziom 28  

    Po prostu w momencie wciśnięcia wyłącznika schodowego wykonujesz instrukcje "Toggle Portd" wtedy wszystkie jedynki zamieniają się w zera, ponowne wciśnięcie wyłącznika zamienia zera w jedynki.

    Do licznika MUSISZ poznać timery. Nie napiszę Ci nic jeśli nie zrozumiesz ich podstawowego działania (jakaś inicjatywa musi być z Twojej strony ;-) )

    Rozpoznawanie kierunków działa analogicznie jak w enkoderach obrotowych. Czyli mówiąc najprościej w zależności od kolejności zasłonięcia jednego z dwóch czujników określany jest kierunek. Daje to duże pole do popisu bo można liczyć wchodzące na schody osoby nawet jednocześnie z obu stron i praktycznie nigdy (chyba, że równocześnie weszły i schodzą jedna po drugiej) nie zdarzy się sytuacja, że schody zgasną jeśli ktoś na nich będzie lub będą świecić mimo braku osób przebywającej w "strefie zero" ;-)

    0
  • #10 08 Sie 2012 17:26
    zielony_gajowy
    Poziom 13  

    jacek1987-1987 napisał:
    Schody mają 12 stopni. Myślałem żeby detekcje zrobić przez podczerwień na początku i na końcu schodów. Schody będą

    podświetlane przez lampki LED na 230VAC


    Zaczynam czarno widzieć :cry: .
    Filmik obejrzałem kilka razy!

    Można zrobić prosto, ale takie oświetlenie będzie miało więcej wad niż zalet.
    Załóżmy kilka sytuacji w których prosty układ się nie spełni:
    - wbiegam/zbiegam po schodach, bo zostawiłem żelazko (gorące!)na koszuli
    - idę bardzo powoli, bo noga w gipsie, albo idę z małym dzieckiem za rękę
    - jedna osoba chce zejść, a druga w tym samym czasie wejść
    - wchodzą/schodzą dwie/trzy/cztery/pięć/itd. osób,ale w odstępie którego nie przewiduje program.

    IMHO, przy prostych schodach najwygodniej jest użyć ultradźwiękowego miernika odległości (jest kilka na forum).
    Dla schodów krętych lub z podestem, mogą być potrzebne dwa lub trzy takie mierniki (zależy od stopnia "krętowatości" schodów ).
    Układ sterujący "wie" gdzie znajduje się człowiek (pierwszy i ostatni i w jakim kierunku podąża(mogą być problemy w wypadku "spadania/turlania", ale wtedy podświetlenie ma znaczenie poślednie).
    Układ sterujący wie, iż są jedna lub dwie osoby. Może trzy osoby, ale tego jeszcze nie sprawdzałem.
    Dodatkowa zaleta takiego rozwiązania, polega na podświetleniu stopnia pierwszego/ostatniego w chwili zbliżenia się do schodów (problem polega na odpowiednim umieszczeniu czujnika ultradźwiękowego).
    A bajerów, w tym momencie, można wymyśleć do bólu.
    A jeszcze dodatkową zaletą jest mniej kabli na ścianach do zamaskowania, że nie wspomnę o samym prowadzeniu tychże.

    A co powiesz na podświetlenie stopni linijką LED (jak na filmiku), lub folią elektroluminescencyjną?
    linijka LED umieszczona na krawędzi zewnętrzenej stopnia (trzeba zabezpieczyć ją np. płytą z pcv o minimalne grubości), folia EL umieszczona na podniesieniu (to takie pionowe w schodach). Folię też warto zabezpieczyć.

    IMHO. Bardzo fajny pomysł, rzeczywiście cudowna sprawa, robi nieziemskie wrażenie na gościach, po przećwiczeniu praktycznym można wdrażać w automatyce.

    Ja mam przy schodach dwa przełączniki schodowe (dla niekumatych, nob jeden na górze, a drugi na dole), które oświetlają całe schody trzema lampkami umieszczonymi w suficie nad schodami. Oczywiście przełączniki schodowe obligatoryjnie muszą mieć podświetlenie.
    Dlaczego nie zrobiłem bajeru:
    - Bardzo duża komplikacja, przy małej użyteczności.
    - W wykonaniu jednostkowym, duża awaryjność.
    - Zero oszczędności na energii. Wiadomo, bajery kosztują.
    - Kupa kasy, a i tak należy dać przełączniki schodowe. Bo jak elektronika padnie, to i tak trzeba chodzić po schodach. A schody trzeba oświetlić!
    - Dublowanie oświetlenia schodów.Vide pkt. wyżej

    Ale, jeśli chcesz to mieć, to pomogę.
    Tylko, jedna uwaga. Mega8 w Bascom nie da rady, trzeba będzie trochę kodu napisać w asm.

    Pozdrawiam

    0
  • #11 08 Sie 2012 19:20
    SylwekK
    Poziom 28  

    Czujnik ultradźwiękowy na dole i na górze to strzał w 10! Takie rozwiązanie eliminuje nawet te wady, o których wspomniałem w poprzednim swoim poście - rozpoznają, z której strony się wchodzi, czy z drugiej strony też ktoś jest, czy wraca... wystarczy dobrze algorytm rozpisać i śmiało powiem, że układ z punktu widzenia elektroniki za wyjątkiem stałego poboru prądu nie ma wad :-)

    0
  • #12 08 Sie 2012 19:50
    jacek1987-1987
    Poziom 11  

    To w takim razie pomóżcie mi coś takiego zrobić z wykorzystaniem tych czujników ultradźwiękowych. Jakie zastosować do tego typy tych czujników i czy ich zasada działania była by w tym wypadku podobna do działania fotokomórki?

    Cytat:
    Tylko, jedna uwaga. Mega8 w Bascom nie da rady, trzeba będzie trochę kodu napisać w asm

    Niestety ale w asemblerze nie programuje na razie uczę się programować w BASCOM. Ale chciałbym mieć taki bajer i prosił bym o pomoc w jego stworzeniu. A co do tego czym będą podświetlane schody to jeszcze do końca decyzja nie zapadła więc to również jest kwestia otwarta i jestem jak najbardziej otwarty na sugestie co do tego czym oświetlić stopnie schodów.
    Cytat:
    Po prostu w momencie wciśnięcia wyłącznika schodowego wykonujesz instrukcje "Toggle Portd"

    A czy to że włącznik zostanie przełączony i zostanie jakiś czas w drugiej pozycji nie będzie powodowało ciągłej zmiany stanu potru? A co do tego timera to co powinienem wiedzieć żeby napisać program tak jak pisałeś?

    0
  • #13 08 Sie 2012 21:30
    SylwekK
    Poziom 28  

    jacek1987-1987 napisał:
    A czy to że włącznik zostanie przełączony i zostanie jakiś czas w drugiej pozycji nie będzie powodowało ciągłej zmiany stanu potru? A co do tego timera to co powinienem wiedzieć żeby napisać program tak jak pisałeś?


    Chodziło mi o wyłączniki takie jak do dzwonka do drzwi czyli po wciśnięciu same powrócą. Czas wciśnięcia nie jest istotny bo załatwia się to programowo.
    Co do timerów, liczników programowych i lepszej kontroli przycisków przeanalizuj programik z mojego tematu:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=2232417&highlight=
    to Ci się nieco może rozjaśni. Sposób w jaki napisany jest tam program pozwala na pracę bez zatrzymywania pętli głównej przez WAIT, a to instrukcja bardzo utrudnia lub wręcz uniemożliwia realizację wielu funkcji.
    Po prostu musisz poznać zasadę działania i konfiguracji Timera. Poczytaj trochę o tym. To są podstawy i bez tej wiedzy zapomnij o sensownym wykorzystaniu mikroprocesorów. Tego Cię niestety nauczyć nie mogę, a napisano na ten temat już sporo...

    0
  • #14 09 Sie 2012 12:06
    zielony_gajowy
    Poziom 13  

    jacek1987-1987 napisał:
    Jakie zastosować do tego typy tych czujników i czy ich zasada działania była by w tym wypadku podobna do działania fotokomórki?

    Najprościej i najszybciej, byłoby chyba kupić kit z AVT np. http://sklep.avt.pl/go/_info/?id=46867
    Napisz własny program w BASCOM. Będziesz musiał użyć Timer'ów i przerwań. To nie takie straszne :D .
    Fotokomórka nie zmierzy odległości, zupełnie inna zasada działania.

    0
  • #15 09 Sie 2012 18:18
    jacek1987-1987
    Poziom 11  

    Cytat:
    Czas wciśnięcia nie jest istotny bo załatwia się to programowo

    tzn. jak załatwić to programowo poprzez zastosowanie opóźnienia?
    A ten Timer to mam wykorzystać jako licznik wchodzących osób na schody czy do odmierzenia czasu jako timer?

    0
  • #16 09 Sie 2012 19:44
    SylwekK
    Poziom 28  

    Kurcze, coraz bardziej się pogrążamy ;-) Mam nadzieję, że masz jakąś książkę do BASCOM'a np. Marcina Wiązani - jeśli jeszcze nie to biegiem do sklepu, bo długo tak nie pociągniemy...
    Aha, i helpa bascomowego po polsku sobie ściągnij - też się przydaje czasem. Aby rozmawiać o algorytmach potrzeba minimum podstawowej wiedzy, której niestety ciężko nauczyć w wątku na forum, a cytowanie książki jest nieco bezsensownym rozwiązaniem. Polecam analizę różnych prostych programów w bascom'ie.

    0
  • #17 09 Sie 2012 20:21
    jacek1987-1987
    Poziom 11  

    Owszem mam tą książkę i przestudiowałem ją

    0
  • #18 09 Sie 2012 20:27
    SylwekK
    Poziom 28  

    Od strony 156 na początek o Timerach wykuć na blachę i przeanalizować w praktyce liczniki programowe i badanie klawiatury z mojego programu (tych jest wiele różnych rozwiązań ale moje jest specyficzne i bardzo antydrganiowe), którego linka podawałem wcześniej - to na początek.

    0
  • #19 10 Sie 2012 16:47
    zielony_gajowy
    Poziom 13  

    SylwekK napisał:
    Kurcze, coraz bardziej się pogrążamy :wink:

    Ale, za to, jak Jacek1987-1987 skończy, to będziemy mieli gotowy projekt za darmo! :D

    A w temacie.
    Najsampierw, należy opanować nielogiczną logikę procesorów.
    Bez opanowania Timer'ów ani rusz!
    Problemem na początek, mogą być przerwania - konfiguracja procka, etykiety i powroty z przerwania. Ale, to się da wytłumaczyć książkowo/forumowo/przykładowo/praktycznie.

    Dalej to już będzie jak w filmach Alfreda Hitchcocka.
    Polecam "Ptaki". Świetnie odzwierciedla proces pisania programów ;).
    Najpierw sielanka, a czym dalej w las - tym więcej drzew i tym bardziej włos się jerzy :cry: .

    PS
    Właśnie, zamarzyło mi się podświetlenie ścieżki - od furtki do drzwi. Idea polega na tym, iż przed człowiekiem idącym w kierunku, podświetlana jest "fala" biegnąca od pozycji człowieka do celu (furtka/drzwi), a zanim narastająca ciemność.
    Ale, jak zawróci (bo zapomniał kluczyków od samochodu) to podświetlenie (fala) odpowiednio zareaguje.
    Dodatkową trudnością będzie - płynne wygaszanie podświetlenia za człowiekiem, natomiast z przodu "fala" operuje podświetleniem w zakresie od 50% do 100 % jasności. Planuję użycie 30 punktów oświetlających (10m).
    No, jak Jacek1987-1987 skończy to sobie "zerżnę" projekt, a za pomoc zażyczę przerobienie programu pod moje wymagania ;).

    Dodano po 17 [minuty]:

    jacek1987-1987 napisał:
    tzn. jak załatwić to programowo poprzez zastosowanie opóźnienia?
    A ten Timer to mam wykorzystać jako licznik wchodzących osób na schody czy do odmierzenia czasu jako timer?

    AD1. Nie opóźnienia. Jeden Timer przeznaczasz na przerwania systemowe - do badania stanu wejść mikrokontrolera, lub innych czynności które muszą być wykonane w określonych odstępach czasu. Na tej podstawie (m.in.) możesz określić czy przycisk jest wciśnięty, czy to tylko "drgania".
    AD2. Drugi Timer mierzy czas odbicia ultradźwięków, a tym samym odległość "przeszkody/człowieka" od czujnika (czujnik, jest to zespół nadajnika i odbiornika). Trzeci Timer mierzy odległość z drugiego odbicia, czyli albo jest druga osoba, albo wcześniej ustalone tło (podłoga, przeciwległa ściana).

    PS
    Popraw interpunkcję, bo zaraz, jakiś, Moderator, Cię, skarci.
    PS2 AD.moderator. Staram się wstawiać znaki interpunkcyjne, gdzie tylko mogę ;).

    0
  • #20 22 Sie 2012 22:02
    jacek1987-1987
    Poziom 11  

    Witam wprowadziłem kilka zmian w moim pierwotnym programie i jest teraz zrobione zliczanie osób wchodzących na schody w zależności od której strony ktoś wejdzie na schody. Ale podczas testowania programu wystąpił jeden problem mianowicie program działa poprawnie wtedy gdy jest napisana konfiguracja wyświetlacza LCD oraz prosty kod wyświetlający stan liczników na wyświetlaczu. Gdy tego nie ma to program nie działa już poprawnie i np. ponowne wciśnięcie przycisku do zapalania świateł od dołu gdy te już zostały zapalone powoduje od nowa zapalanie świateł w sekwencji od dołu. Analogicznie jest z zapalaniem świateł od góry. Jak można to zniwelować bo potrzebował bym PORTC wykorzystać do czegoś innego niż do tej konfiguracji wyświetlacza LCD.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #21 22 Sie 2012 22:09
    SylwekK
    Poziom 28  

    Nie przeglądałem kodu ale czy przypadkiem nie wystarczy Ci aby przed sprawdzaniem przycisku kontrolowany był jakiś znacznik, że coś się akurat wykonuje i przycisk powinien być nieaktywny ?

    0
  • #22 23 Sie 2012 14:22
    jacek1987-1987
    Poziom 11  

    To zrobiłem zablokowanie przycisków jeśli zostanie ustawiona zmienna1 lub zmienna2 oraz gdy licznik1 lub licznik2 mają wartość większą od zera

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Tak to wygląda w programie. Takie coś miałeś na myśli?

    0