Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Sterownik rolet zewnętrznych - ATMega16

maciej747 25 Jan 2016 16:58 8250 14
Optex
  • Sterownik rolet zewnętrznych - ATMega16

    Przedstawiam sterownik rolet zewnętrznych, który niedawno skończyłem. Bardzo prosty, podstawowy projekt, ale może kogoś zainteresuje. Sterownik ma sterować 4 roletami zewnętrznymi. 3 rolety są w jednym pomieszczeniu, i tam jest dodatkowy komplet klawiszy góra/dół, które mają sterować tymi trzema roletami jednocześnie. Sterownik ma jeszcze jedno wejście, tak zwane centralne, do którego będzie podpięty zewnętrzny sterownik zegarowy. Jest więc 6 wejść z 3 priorytetami. Najwyższy priorytet mają klawisze lokalne (4 zestawy), potem klawisze do grupy 3 rolet, najniższy priorytet ma wejście centralne. Sterownik obsługuje przytrzymanie klawisza, wtedy realizowany jest autodojazd rolety. Czas autodojazdu jest ustalany indywidualnie dla każdej rolety. To akurat nie jest bardzo potrzebne, bo rolety mają wyłączniki krańcowe, ale zaimplementowałem to dla porządku - jeżeli roleta skończyła jazdę, to niech sterownik o tym wie. Klawisze, które mam do tych rolet mają mechaniczną blokadę wciśnięcia obu klawiszy naraz (tak zwane klawisze żaluzyjne), ale sterownik jest na to odporny. Jeżeli wciśnie się jednocześnie oba klawisze góra/dół, to sterownik jeden z nich zignoruje. Program wyklucza jednoczesne włączenie obu silników góra/dół w jednej rolecie, ale na wszelki wypadek połączenie przekaźników na płytce też to wyklucza. Każda roleta połączona jest ze sterownikiem 4 żyłami (góra/dół/niebieski/żółto-zielony), a każdy wyłącznik 3 żyłami.

    Sterownik rolet zewnętrznych - ATMega16 Sterownik rolet zewnętrznych - ATMega16 Sterownik rolet zewnętrznych - ATMega16

    Procesorem jest ATMega16, bo akurat miałem w szufladzie, aczkolwiek ATMega8 też ma wystarczająco dużo nóg. Program ma jakieś 2kB. Załączam kod, w którym jest sporo komentarzy. Kosztorys: przekaźniki 8 x 4, ATmega 10, trafo 5, reszta to drobiazgi. W sumie materiały: <=50 zł. Robocizna: bezcenna. :D

    Pozdrówko,

    Maciej

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    maciej747
    Level 12  
    Offline 
    Has specialization in: dsp
    maciej747 wrote 38 posts with rating 18, helped 4 times. Live in city Wrocław. Been with us since 2006 year.
  • Optex
  • #2
    nouki
    Level 25  
    Witam.

    Zastanawia mnie czemu klawisze nie posiadają jakiejś optoizolacji.
    Ciągnięcie kabli które zarazem zasilają procesor chyba nie są dobrym rozwiązaniem.

    Pozdrawiam
  • Optex
  • #4
    katakrowa
    Level 22  
    Bardzo zgrabna płytka i całkiem czytelny kod źródłowy.
    Ja bym jeszcze dodał obsługę portu szeregowego bo byłoby to krokiem w kierunku np. sterowania poprzez internet ( chyba, że taki bajer uważasz za całkiem zbędny ). Nakład pracy minimalny 1 max232 + 4 kondensatory i temat gotowy. Po załączonym kodzie widzę, że oprogramowanie RS232 raczej koledze nie sprawiłoby problemu.

    Podobnie jak poprzednik napisał - separacja optyczna na wejściach takich układów jest bardzo wskazana. Zwyczajnie szkoda roboty. Ja robiłem na procesorach w zwykłych obudowach DIL więc przynajmniej wymiana była banalna w Twoim przypadku upalenie układu już może być przykre a przy Twoim układzie ryzyko powstania wysokiego napięcia wskutek indukcji podczas włączania/wyłączania silnika istnieje.

    W programie masz fragment kodu odpowiadający za "wyłapywanie szumów przycisków" / zmienną sensitivity ... Także elektrycznie w takim układzie warto dodać jeszcze na wejściu zwykły filtr dolnoprzepustowy ( poniżej przykład wejścia z filtrem + optoizolatorem ):
    Sterownik rolet zewnętrznych - ATMega16

    A co do samego kodu wychwytującego drgania przycisków zrobiłbym tak, że wyłapuję zmianę stanu przycisku a następnie olewam wszystkie zmiany na tym pinie np. 50 - 100 ms. lub do zamknięcia jakiegoś logicznego cyklu algorytmu.
  • #6
    nouki
    Level 25  
    dondu wrote:
    nouki wrote:
    Zastanawia mnie czemu klawisze nie posiadają jakiejś optoizolacji.

    A jak byś zasilił te "klawisze"?


    Wszytko w fazie projektu... Wystarczy dać trafo nieco większe i jedno uzowojenie dać na zasilanie klawiszy.

    Osobiście jak bym robił sam - zwykły zasilacz 24v ( do klawiszy) i przetwornicę dc/dc FDD03-05s2. Oddzielone wszytko i w standardzie zasilania automatyki.
  • #8
    maciej747
    Level 12  
    Quote:

    Ja bym jeszcze dodał obsługę portu szeregowego bo byłoby to krokiem w kierunku np. sterowania poprzez internet.

    Podobnie jak poprzednik napisał - separacja optyczna na wejściach takich układów jest bardzo wskazana.

    W programie masz fragment kodu odpowiadający za "wyłapywanie szumów przycisków" i zmienną sensitivity, której nigdzie nie używasz.

    A co do samego kodu wychwytującego drgania przycisków zrobiłbym tak, że wyłapuję zmianę stanu przycisku a następnie olewam wszystkie zmiany na tym pinie np. 50 - 100 ms. lub do zamknięcia jakiegoś logicznego cyklu algorytmu.


    Koledzy: dzięki za uwagi. Sterowanie przez sieć to na pewno jest rzecz, o której można pomyśleć, być może zrobię nowszą wersję. Na razie wejście central jest sterowane przez zewnętrzny sterownik zegarowy. Do tej pory ten sterownik zegarowy sterował roletami z drugiej strony domu, teraz będzie sterował tymi też. To jest wbrew pozorom bardzo praktyczne, i od kiedy mam ten sterownik zegarowy, to "ręcznych" przycisków prawie wogóle się nie używa. Ale dodatek sterowania przez internet to może być fajny bajer.

    O separacji optycznej myślałem, ale nie wiem, czy jest to takie bardzo potrzebne. Tak jak ktoś zauważył, wymagałoby to osobnego małego trafa. Ale przewody do przełączników są całkowicie oddzielne od przewodów zasilających, nawet podłączenia są po przeciwnej stronie płytki. Zmienna sensitivity jest używana w jednym miejscu - ona ustala czas oczekiwania na wygaśnięcie drgań styków. Nie wiem, czy to jest bardzo potrzebne, bo na płytce jest też hardware'owy debouncing - sieć RC na każdym wejściu. A sam algorytm programowej likwidacji drgań jest dokładnie taki, jak piszesz. Po wykryciu zmiany stanu wejścia program czeka pewien czas, po czym sprawdza wejście ponownie. Ten czas to właśnie coś ok. 100 ms, reguluje go zmienna sensitivity.

    Dzięki za uwagi i czekam na dalsze :D.

    Maciej
  • #10
    miszcz310
    Level 20  
    ditomek wrote:
    Separacja galwaniczna to wg mnie obowiązkowy "bajer" nawet jeśli miałbyś zasilać IO i logikę z tego samego zasilacza.


    Nie bardzo rozumiem jaki to ma sens, może kolega przybliżyć? Co daje separacja galwaniczna przy stosowaniu tego samego zasilania?
  • #12
    maciej747
    Level 12  
    ditomek wrote:
    Separacja galwaniczna to wg mnie obowiązkowy "bajer" nawet jeśli miałbyś zasilać IO i logikę z tego samego zasilacza. Kolejna sprawa - obudowa. Dlaczego nie pokazujesz urządzenia kompletnego, w obudowie?


    Zastanawiałem się nad separacją galwaniczną. Ten dodatkowy transformator to nawet nie jest wielki problem. No, zobaczymy, jak to będzie działało. Przewody do przełączników mają po kilka metrów, jakieś 10 max. Jeśli chodzi o obudowę, to nie planowałem żadnej. Całość ma wejść do takiej puszki instalacyjnej:

    Sterownik rolet zewnętrznych - ATMega16

    Ale jest jeden aspekt sterownika, który nie jest skończony. Jedna z rolet zamyka drzwi tarasowe. Jeżeli ktoś byłby w ogródku, i zaskoczyłoby go centralne zamknięcie rolet, to miałby problem. Mój domek to szereg, więc żeby wydostać się z ogródka musiałbym przejść kilka płotów i kilka ogródków sąsiadów :D . W planie jest takie rozwiązanie tego problemu: jeżeli zgłaszane jest centralne zamykanie, to ta jedna roleta zamyka się tylko trochę - powiedzmy 20 cm. I czeka. Po powiedzmy 5 minutach domyka się. Jeżeli w czasie tych 5 minut wciśnie się jej klawisz lokalny, to otwiera się całkiem, i koniec, nie ma już centralnego domknięcia. To powinno załatwić sprawę. Osoba w ogródku, kiedy zobaczy zamykające się rolety (ogródek jest mały) ma czas, żeby zareagować. Tego jeszcze nie zaimplementowałem w kodzie, ale jest to w planie.

    Maciej
  • #13
    aftys6
    Level 19  
    _kaktus_ wrote:
    A co będzie gdy ktoś otworzy okno i będzie wyglądał, a sterownik opuści roletę .... nieszczęśliwy wypadek?


    A widziałeś jak "szybko" zjeżdża taka roleta ?? Przy oknie 140cm wysokości jest to około60 sekund.
    Podpinam rolety automatyczne kilka razy i nie widziałem by miały one czujniki otwarcia okna.

    Z mojej strony dołożył bym komunikację ze stacją pogody którą napewno kiedyś zmontujesz ;)
    W przypadku ulewy, gradu itd żaluzje zamykają się automatycznie.
  • #14
    marciu11
    Level 15  
    Wprawdzie już trochę czasu upłynęło, i nie wiadomo na jakim etapie jest (zaniechany, przerobiony, czy już wykonany :) ), ale może można by dodać detekcję obecności kogoś w ogródku? Bariera podczerwieni i licznik obecności? Ktoś wychodzi do ogródka (przecięcie bariery) zmienna się zwiększa, ktoś wraca zmienna się zmniejsza... Zmienna większa od zera równa się ktoś jest w ogrodzie - nie zamykaj automatycznie rolety.
    Wiem że to nastręcza kilka problemów - dwie osoby wychodzą jednocześnie - wracają pojedynczo... Ale to też można jakoś logicznie przemyśleć i oprogramować (czujnik ruchu na ogródek?).

    Ot rozważam zautomatyzowanie rolet w domu i trafiłem na ten wątek i tak luźno przemyślenia opisałem :)