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

Sterownik rolet wewnętrznych

_Arecki_ 01 Wrz 2012 17:03 38829 37
  • Sterownik rolet wewnętrznych

    Witam.

    Chciałem zaprezentować wykonany przeze mnie sterownik rolet okiennych wewnętrznych.
    Inspiracją do wykonania projektu było urządzenie zaprezentowane już jakiś czas temu: Link

    Sterownik pracuje już od około roku i cały ten czas zbierałem się na stworzenie tego opisu, jednak zawsze coś innego przeszkadzało.
    Dzisiaj znalazłem chwilę na krótką prezentację mojej pracy. Niestety nie mam fotorelacji z prac na sterownikiem i nie jestem w stanie jej teraz tak dokładnie opisać, jednak w razie możliwości postaram się odpowiedzieć na każde pytanie.
    Z czasem też postaram się ten opis uzupełniać.


    Założenia
    Głównym celem mojego projektu było automatyczne zasłonięcie okna po włączeniu światła w pomieszczeniu (po zmroku). Wynikało to z tego, że za każdym razem jak wchodziłem do sypialni to musiałem przedzierać się po łóżku do okna, aby zasłonić rolety.
    Dodatkowo ogólnie założeniem była duża uniwersalność i możliwość modyfikacji parametrów pracy sterownika.

    Funkcjonalność
    - sterowanie dwoma silnikami,
    - praca ręczna/automatyczna,
    - możliwość standardowej (ręczno-sznurkowej) obsługi rolet,
    - interfejs RS232,
    - menu do konfiguracji i testowania sterownika,
    - bootloader,
    - sterowanie zdalne - niezaimplementowane.

    Zasada działania
    Sterownik na bieżąco (co kilka sekund) sprawdza poziom oświetlenia (fototranzystor na wejściu ADC) i porównuje go z danymi historycznymi, jeśli nastąpi wzrost jasności uruchamia silniki rolet w celu zasłonięcia okna o ile nie jest ono już zasłonięte (sterownik pamięta stan rolet).
    Dodatkowo możliwe jest sterowanie przyciskami zasłonięcie/odsłonięcie (wejścia przerwania). Nie robiłem osobnych przycisków do prawej i lewej rolety, ponieważ zawsze używam ich jednocześnie. Jeśli byłaby jakaś wyjątkowa sytuacja to zawsze można zmienić położenie rolety ręcznie przy pomocy łańcuszków.
    Kolejnym sposobem uruchomienia rolet (w sumie używane do testów) jest użycie menu dostępnego poprzez interfejs RS232, a z wykorzystaniem przejściówki RS232/Bluetooth można to robić zdalnie (nawet telefonem, chociaż tego jeszcze nie testowałem).

    Odsłanianie okna jest na podstawie czasu dobranego doświadczalnie, natomiast zasłanianie do momentu wykrycia oporu ruchu (zwiększony pobór prądu silników).
    Sterownik kontroluję pracę obu silników niezależnie (2 x ADC) i po przekroczeniu granicznego poboru prądu wyłącza zasilanie silnika.
    Czasy odsuwania i zasłaniania rolet są konfigurowalne niezależnie dla prawej i lewej rolety, co wynika z nierównej pracy silników (różne opory pracy wykonanych mechanizmów). Taka mała różnica mi nie przeszkadza i dlatego nie modyfikowałem mechanizmów.

    Mechanika
    Elementami wykonawczymi są silniki z przerobionych serw HS-311. Wcześniej testowane Tower Pro SG-90 okazały się za słabe. Ponieważ budowa moich rolet różni się od "wzorcowych" musiałem wykombinować inny mechanizm "pociągania" sznurków. Wykorzystałem do tego "zestaw naprawczy" do rolet, czyli elementy mocujące roletę do okna (tę część napędową - z zębatką).
    Postaram się wkrótce wrzucić dokładniejsze zdjęcia mechanizmów.

    Elektronika
    Sercem sterownika jest poczciwa atmega8. Wybrałem ją z tego prostego powodu, że zostało mi kilka sztuk z innego projektu i wydawała się wystarczająca do tego zadania.
    Jako drivery rolet wykorzystałem standardowy mostek H w wersji scalonej. Ważne dla mnie było użycie tranzystorów unipolarnych w celu zmniejszenia strat i wydzielanego ciepła.
    Jako dodatkowy feature przygotowany jest odbiornik podczerwieni do sterowania pilotem, jednak nie mam obecnie potrzeby używania go, więc jego obsługa nie jest zaimplementowana.

    Dodatki
    Ważne dla mnie było (jako że to projekt prototypowy) łatwe aktualizowanie FW, dlatego postanowiłem użyć bootloader w celu łatwej podmiany oprogramowania.
    Dodatkowo w celach testowych i konfiguracyjnych zostało stworzone menu dostępne poprzez interfejs UART. Screeny z obsługi menu wkrótce.

    Hardware
    Projekt płytek wykonany w eagle.
    Płytki są dwustronne i wykonałem je w firmie tym się zajmującej. Dopasowane są do obudowy, którą miałem na stanie i niestety nie pamiętam jej symbolu. Wymiary ok 40x60x20 mm. Jak znajdę model obudowy to uzupełnię.
    W projekcie płytki wkradł się błąd, który zauważyłem przy montażu (dobrze, że nie później). Otóż przez moje niedopatrzenie złącze zasilania wyszło z masą na bolcu, a nie plusem. Poprawkę musiałem wykonać już na płytce.
    Całość zasilana jest z zasilacza zewnętrznego 7V/2A DC. Początkowo planowałem wykorzystać standardowy 5V, jednak silniki przy takim napięciu były za słabe. Podniesienie napięcia do 7V pomogło, jednak jest to napięcie graniczne dla układów driverów silników.
    Przy korzystaniu z rolet bez prowadnic lub przy użyciu mocniejszych serw napięcie 5V powinno być wystarczające.

    Software
    Program napisany w C, w AVR Studio.
    W celu ułatwienia sobie życia zastosowałem bootloader avr109, dzięki czemu programować można przy użyciu avrdude z linii poleceń. Do bootloadera przechodzi się wciskając oba przyciski jednocześnie na ok 10 sek. Następnie przez interfejs szeregowy można zaktualizować FW.
    Ze względu na użyty bootloader, do dyspozycji na program zostało 6kB flasha, który został wykorzystany w około 90%.
    Dość dużo miejsca zajmuje menu do konfigurowania sterownika (dużo stringów), ponieważ nie chciałem tracić miejsca w pamięci danych (bo i tak by się nie zmieściło) umieściłem je pamięci kodu. Wszelkie konfigurowalne dane przechowywane są w pamięci EEPROM, dzięki czemu ustawienia nie są tracone po zaniku zasilania.
    Zastosowałem też usypianie procka jeśli nic nie robi, więc w sumie przez większość czasu śpi, a wybudza się tylko co kilka sek na czas pomiaru natężenia światła i ponownie idzie spać.

    Sam projekt uważam za dobre ćwiczenie, dzięki niemu potrenowałem sobie uruchamianie bootloadera (odpowiednia konfiguracja procesora), przechodzenie z poziomu kodu do bootloadera, obsługę przetworników ADC, PWM (ostatecznie nie wykorzystuję), obsługę pamięci EEPROM, umieszczanie danych w pamięci kodu, czyli rzeczy, które tak na prawdę nie zawsze się wykorzystuje, a są przy nich różne problemy.

    Jeśli pominąłem jakiś istotny szczegół opisu postaram się go w miarę szybko uzupełnić.

    Kilka fotek sterownika:
    Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych

    Filmik z pracy sterownika:

    Link


    Załączam schemat wraz z projektem płytki (eagle) oraz program (avr-gcc). W zipie są zarówno źródła, jak i gotowe binarki.

    Pozdrawiam i liczę na konstruktywne opinie.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    _Arecki_
    Poziom 15  
    Offline 
    _Arecki_ napisał 217 postów o ocenie 99, pomógł 1 razy. Mieszka w mieście Świdnik. Jest z nami od 2005 roku.
  • PCBway
  • #2
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #3
    krakarak
    Poziom 39  
    To masz ładną jazdę z roletami na każde włączenie / wyłączenie oświetlenia w pokoju. Taka automatyka wg mnie jest bez sensu. Dużo lepszym rozwiązaniem byłoby zaimplementowanie obsługi za pomocą pilota, choćby najprostszego z 2 przyciskami - góra / dół. Wtedy ja jestem panem rolet a nie żarówka. No i przydałoby się pomalować silniki na biało.
  • #4
    _Arecki_
    Poziom 15  
    Rozwiązanie z silnikami na dole brałem pod uwagę, jednak po pierwsze nie podobało mi się (teraz mam na górze całość i rolety, i mechanizm, jakoś tak w kupie nie rzuca się w oczy), a po drugie, tak jak napisałeś, na dole mam łączenie łańcuszka, więc nie mogłoby to przejść przez mechanizm.

    Tego rozwiązania z modułami RFM73-D trochę nie rozumiem. W jakim to celu? Osobny moduł na każdą roletę? Zasilanie i tak trzeba ciągnąć, z baterii/akumulatorka długo nie pociągnie. Do tego nie ma sterowania ręcznego, na którym mi zależało.

    @krakarak, Nie mam żadnej jazdy. Rolety zasłaniają się po pierwszym włączeniu światła i tak zostają. Podnoszą się dopiero automatycznie po kilku godzinach (w środku nocy) lub ręcznie.
    Możliwość sterowania pilotem jest (do zaimplementowania w kodzie), jednak dla mnie to bez sensu, bo za każdym razem jak wchodzę do sypialni to i tak zapalam światło. Jeśli rolety nie są zasłonięte to się uruchamiają, w innym przypadku nic się nie dzieje. Dla mnie to jest optymalne rozwiązanie i dlatego tak zrobiłem u siebie.
  • #5
    gaspaccio
    Poziom 17  
    Pomysł rozwiązania mechanizmu napędu łańcuszka bardzo sprytny.
    Estetyka nienajlepsza jeżeli chodzi o wygląd okna.
    Można poprawić nieco:
    1. Masz bardzo długi parapet więc sterownik da się przymocować pod spodem, nie było by go tak widać
    2. Wymienić przewody na białe dwużyłowe linki i postarać się żeby te serwa były białe (pomalować?)
  • #7
    _Arecki_
    Poziom 15  
    Ten "zestaw naprawczy" występuje w internecie jako mechanizm rolety (może być dla rolety mini). Koszt to parę złoty za jeden komplet (na jeden mechanizm).
    Ja kupiłem kilka sztuk i kombinowałem połączenie z serwem.

    Poniżej zdjęcie zapożyczone z jednej z losowych aukcji.
    Sterownik rolet wewnętrznych
    Potrzebna jest nam tylko połowa (ta z mechanizmem do łańcuszka - zaznaczone na czerwono). Z tego odcinamy część na której mocowana jest roleta (zaznaczone na żółto) i wklejamy tam serwo. Ważne jest aby serwo było wklejone centralnie i w osi, aby nie było bicia. Należy też odpowiednio dociąć osłonkę łańcuszka, aby można było go poprowadzić na wylot i jednocześnie aby był dobrze osłonięty żeby nie spadał z zębatki.
    Sterownik rolet wewnętrznych Sterownik rolet wewnętrznych
    Po wklejeniu serwo trzeba jakoś zamocować, ja do tego użyłem aluminiowego kątownika. Dokładniejszych zdjęć niestety nie mam, bo musiałbym to rozbierać, a złożenie tego nie jest takie łatwe.
  • #8
    znamcie
    Poziom 11  
    witam mam 2 pytania:
    1. A czy nie można było pociągnąć kabelków i umieścić włączniki sterowania rolet
    obok włącznika światła? Nie trzeba by skakać po łóżku i po problemie?

    2. Czy jak otwierasz okno to serwa nie zahaczają o ścianę?
    Wydają się dosyć mocno wystawać od okna, a na zdjęciu widać że ściana
    (wnęka okna) jest zaraz koło zawiasu okna.

    Tak tylko pytam bo sam tak umieściłem włączniki.

    Pozdrawiam
  • #9
    _Arecki_
    Poziom 15  
    @znamcie
    Ad 1. Teoretycznie można wszystko. W moim przypadku kable trzeba by było ciągnąć przez całą sypialnię, pewnie kuć w ścianie, tynkować i malować, żeby ładnie umieścić, do tego i tak jakaś elektronika sterująca byłaby potrzebna (kontrola serw) więc nie byłoby ani prostszym, ani tańszym rozwiązaniem.

    Ad.2. Nie, przy otwarciu okna nic nie przeszkadza, lekko tylko dotyka do ściany przy maksymalnym wychyleniu skrzydła okna.
  • #10
    Krzysztof-FT
    Poziom 2  
    Też wolałbym podłączyć do tego prostą drogę radiową. Jeśli nawet nie wykonaną własnoręcznie, to modułową (dokładaną).
    Będzie estetycznie i funkcjonalnie.
  • PCBway
  • #11
    Arek460
    Poziom 17  
    Arecki a mógłbyś wrzucić tutaj jakieś pliki do wykonania sterownika ?
  • #12
    lvy
    Poziom 11  
    Witam, do sterowania zdalnego ja polecam klaskanie, dzięki temu można dowolnie opuszczać roletę. IMO jest to sposób wygodny i tani (nie trzeba ani kuć ani mieć pilota, bo każdy ma pilota w ręce). Przykład moduły do klaskania jest w moim poście:
    https://www.elektroda.pl/rtvforum/topic2354555.html

    (tak, wiem, muszę zrobić filmik, ale to jak będę mieć sprzęt)
  • #13
    krakarak
    Poziom 39  
    lvy napisał:
    Witam, do sterowania zdalnego ja polecam klaskanie ...

    Jak sam mieszkasz to możesz klaskać i gwizdać, ale jak z rodziną to można dostać klaśnięcie w ucho od żony, gdy śpiące dzieci zerwą się z płaczem na równe nogi, bo ktoś wysłał rozkaz "żaluzje w dół".
    Wg mnie to jedynie prosty pilot lub jeszcze prostszy - przewód z włącznikiem.
  • #14
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #15
    elektron321
    Poziom 9  
    ShowLuke napisał:
    Cytat:
    natomiast zasłanianie do momentu wykrycia oporu ruchu (zwiększony pobór prądu silników).
    Sterownik kontroluję pracę obu silników niezależnie (2 x ADC) i po przekroczeniu granicznego poboru prądu wyłącza zasilanie silnika.

    Możesz coś wiecej powiedziec na ten temat ? skąd uC wie, że silnik pobiera dużo prądu ?


    Wystarczy "przepuścić" prąd (pobierany przez serwomechanizmy) przez rezystory szeregowe o niewielkiej rezystancji i mierzyć na tych rezystorach spadek napięcia przy pomocy ADC.
  • #16
    _Arecki_
    Poziom 15  
    elektron321 napisał:
    Wystarczy "przepuścić" prąd (pobierany przez serwomechanizmy) przez rezystory szeregowe o niewielkiej rezystancji i mierzyć na tych rezystorach spadek napięcia przy pomocy ADC.
    Dokładnie tak jest robione. Do tego użytą są właśnie przetworniki ADC. Wzrost odczytanej wartości powyżej ustawionego poziomu powoduje wyłączenie silników.
  • #17
    keseszel
    Poziom 26  
    Fajne. Widziałem podobny układ na necie za jakąś kasę.
    Ile Cię to kosztowało?
    Czy nadają się silniczki od drukarek np. igłowych?
  • #18
    Arek460
    Poziom 17  
    Wydaje mi się że silniczki z drukarek będą za słabe. Ponownie pytam o potrzebne pliki do wykonania sterownika.
  • #19
    _Arecki_
    Poziom 15  
    Nie wiem jakie są te silniki od drukarek, więc nie mogę powiedzieć, czy będą dobre. Podejrzewam że są to silniki krokowe więc całkiem inaczej je się steruje.

    Pliki potrzebne do wykonania dodałem już wczoraj (w pierwszym poście).

    Co do kosztów, to ciężko powiedzieć bo było to dawno, a część rzeczy już miałem:
    za dwie płytki zapłaciłem ok 60 zł,
    silniki (serwa) ok 25-30zł za sztukę,
    części elektroniczne ok 30 zł,
    części na mechanizm ok 10 zł.
    Całość wychodzi ok 130 zł

    Druga płyta mi została (myślałem o zrobieniu drugiego sterownika, ale tam będę musiał jednak połączyć dwa okna i płytka musi być inna).
    Jak ktoś jest chętny, to mogę odstąpić.
  • #20
    keseszel
    Poziom 26  
    Silniki od drukarek igłowych to silniki krokowe. Co prawda nie wszystkie, ale ja nosiłem się z zamiarem wykorzystania krokowych. Sądziłem, że sterowanie będzie podobne do serwomechanizmu i zależało mi na ograniczeniu kosztów, ale widzę, że nie tędy droga i zostanę przy zwykłym ręcznym podciąganiu rolet :)
  • #21
    pox
    Poziom 11  
    Ja na mechanizmie dołożył bym jeszcze jakiś transoptor/kontaktron, dzięki któremu procesor wiedział by w jakim położeniu jest role tak aby mógł ją opuścić np do połowy czy 3/4 okna w zależności od zaprogramowanych warunków.

    Sterowanie na pilota to zdecydowanie lepszy pomysł, gdyż mamy większą władzę nad roletami - taka automatyka nie u każdego będzie najlepszym rozwiązaniem.
  • #22
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #23
    tom3sko
    Poziom 9  
    Koledzy czy moglibyscie podac jaki uklad zasialajacy wykorzystac do tego sterownika oraz do seromechanizmow HS-311 ?
  • #24
    _Arecki_
    Poziom 15  
    tom3sko, tak jak napisałem
    _Arecki_ napisał:
    Całość zasilana jest z zasilacza zewnętrznego 7V/2A DC. Początkowo planowałem wykorzystać standardowy 5V, jednak silniki przy takim napięciu były za słabe. Podniesienie napięcia do 7V pomogło, jednak jest to napięcie graniczne dla układów driverów silników.

    Do zasilania nadaje się dowolny zasilacz DC, o napięciu max 7V. Ten który ja zastosowałem znalazłem gdzieś w necie, nie pamiętam od czego on był.

    Same serwomechanizmy zasilane są przez driver BD6211F bezpośrednio z zasilacza (napięcie VCC na schemacie).
  • #25
    dandaw69
    Poziom 10  
    Witam robię właśnie taki projekt, mam kilka pytań. Może ktoś również robił ten sterownik i by mi udzielił kilku rad??
  • #26
    Gorim
    Poziom 11  
    Witam
    Pozwole sobie troche odkopać temat ;)
    Jestem obecnie na etapie lutowania swojego arcydzieła i pech chciał że wszedłem na Twój post. Swoje urządzonko oparłem również na Atmedze 8 ale zamiast serva użyłem silnika krokowego. Po przeczytaniu postu stwierdzam że nie mam co dokańczać lutowania płytki bo to i tak nie ma sensu. Sciągnełem sobie Twoje pliki w eaglu i pojawiło mi sie pytanie. Mianowicie..... jak wgrywasz program na uP ? Na płytce nie masz żadnych goldpinów a miejsce na nie przeznaczone chyba masz. wgrywasz program przed wlutowaniem poprzez jakas inna plytke czy moze po lutowaniu dolutowujesz goldpiny a potem je wywalasz ?
  • #27
    _Arecki_
    Poziom 15  
    @Gorim nie mam goldpinów do programowania tylko punkty lutownicze rozmieszczone w rastrze 2,54.
    Programowanie jest przez "złącze stykowe" ;), czyli przyciskam do tych punktów kabelek zakończony goldpinami i programuję bootloader. Akcja jest jednorazowa, później już przez RS.
  • #28
    Gorim
    Poziom 11  
    Super sprawa ;)
    a powiedz mi jeszcze proszę czy aby nie masz błędu w schemacie z tym zasilaniem ? Chodzi o to zazwyczja w zasilaczach mamy tak że wewnętrzny pin jest dodani a zewnetrzny ujemny. Ty natomiast zrobiłeś odwrotnie efektem czego na stabilizatorze na GND wychodzi że masz plusik. Zakładam że w płytce też ten błąd bedzie występował ;>
  • #29
    _Arecki_
    Poziom 15  
    Tak, na płytce miałem błąd o czym wspomniałem w opisie.

    Cytat:
    W projekcie płytki wkradł się błąd, który zauważyłem przy montażu (dobrze, że nie później). Otóż przez moje niedopatrzenie złącze zasilania wyszło z masą na bolcu, a nie plusem. Poprawkę musiałem wykonać już na płytce.
  • #30
    Gorim
    Poziom 11  
    aa faktycznie .... czytałem kiedyś cały post i teraz mi umkneło z pamięci !
    Szczęsliwego nowego roku !