
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:






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.
Cool! Ranking DIY