Rolety. Bardzo przydatna rzecz, w dzień mogą chronić przed słońcem, w nocy przed wścibskimi sąsiadami. Lecz za każdym razem, w celu zmiany ich pozycji musimy do nich podejść i poruszać sznurkiem. Zazwyczaj rano podnosimy, wieczorem opuszczamy, rano znowu podnosimy, a wieczorem znowu opuszczamy. Czyż nie jest to trochę monotonne? Czy można coś na to poradzić?
Sam pomysł na automatyczne rolety narodził sie już w dzieciństwie. Jednak z braku środków, sprzętu oraz wiedzy programistycznej nigdy nie został on zrealizowany.., aż do teraz. Poniżej zamieszczam opis jak w końcu udało mi się tego dokonać.
Roletą porusza serwomechanizm HEXTRONIC HX5010. Moment 5,2kg przy napieciu 4,8V, jak na rolety więcej nie potrzeba. Wymiary to: 40 x 20 x 38 mm. Ważną rzeczą w doborze serwa jest także opór przekładni. Musi być on na tyle duży, aby zapobiegać samoczynnemu opuszaczniu się rolety. Serwomechanizm należało oczywiście lekko przerobić, tak aby mógł się swobodnie kręcić. W tym celu należało usunąć mały ogranicznik znajdujący się na jednej z zębatek. Element ten pokazano na zdjeciu poniżej.
Serwomechanizm trzeba czymś sterować i to w obydwóch kierunkach. Wybór padł na układ L293d - układ scalony do sterowania dwóch silników prawo/lewo z możliwością sterowania PWM, max. obciążenie 600mA. W celu zwiększenia wydajności połączyłem dwa kanały z sobą. Sterowanie PWM nie było potrzebne, z tego względu do nożek 1 i 9 na stałe podłączone jest 5V.
Mózgiem układu jest mikrokontroler Attiny13. Odpowiada za odbiór sygnałów z pilota, przetwarzanie tych sygnałów oraz za odpowiednie sterowanie układem L293d.
Odbiornik podczerwienii pracujący z sygnałem o częstotliwości nośnej 36kHz, ja zakupiłem TSOP31236.
Dowolny pilot nadający w standardzie RC5. U mnie jest to pilot uniwersalny, użyczony na czas nieokreślony. Dzięki Robert.
Tu głównie chodziło o przerobienie mocowania rolety, tak aby zamontować serwomechanizm. Po kilku chwilach spędzonych z miniwiertarka z oryginalnego mocowania powstało.. Zdjęcia poniżej. No może nie jest to cud techniki, ale do zamocowania serwa nadaje się idealnie.
Kolejną rzeczą było połączenie wału silnika z wałem rolety. Jak się okazało i tu nie bylo większego problemu. Wykorzystałem odcięty element z fabrycznego mocowania rolety i połączyłem go z jednym z orczyków. Wyszło takie coś...
Płytka elektroniczna zaprojektowana w Eagle, wykonana metodą termotransferu. Dodatkowo płytka od strony ścieżek została pokryta lakierem do wykonywania powłoki zabezpieczającej tzw. "solder maski" - kolor zielony. Z drugiej strony, także metodą termotransferu, zostały wykonane napisy. I teraz coś więcej jeśli chodzi o samą płytkę. Wstępnie całość miała być zasilana napięciem 12V, dlatego na schemacie przewidziano stabilizator napięcia 5V (7805). Jednak jak się później okazało w domu nie posiadałem żadnego zasilacza 12V. Z tego względu na płytce zamiast stabilizatora wmontowałem kawałek przewodu. Całość zasilana jest napięciem 5.1V 450mA - ładowarka od telefonu. Kolejną rzeczą do wytłumaczenia jest złącze znajdujące się z prawej strony. Służy ono do podłączenia krańcówek - max. położenie górne oraz max. położenie dolne. Złączę normalnie otwarte, po osiągnięciu danego położenia - obwód zamknięty. Masa podana na wejscie B1 bądź B2. Miały one służyć do samoczynnego wyłączania się serwomechanizmu po osiągnięciu jednego z max. położeń. Jednak w trakcie montażu postanowiłem zrezygnować z tego rozwiązania. Tym samym brak dodatkowych przewodów koło okna. Roleta zatrzymywana jest pilotem, po naciśnięciu przycisku "0-/10"
Program napisany w programie BASCOM. Jest to mój ostatni program napisany w tym języku. Kolejne projekty będą już tworzone przy wykorzystaniu języka C.
$regfile = "attiny13.dat" $hwstack = 16 $swstack = 16 $framesize = 16 Config Portb.3 = Output ' w góre Config Portb.4 = Output ' w dół Portb.3 = 0 Portb.4 = 0 Config Rc5 = Pinb.0 Dim Address As Byte Dim Command As Byte Config Pinb.1 = Input ' czujnik B2 - max. góra Config Pinb.2 = Input ' czujnik B1 - max doł Set Portb.1 Set Portb.2 Enable Interrupts Do Getrc5(address , Command) Command = Command And &B01111111 If Command = 57 Then Portb.3 = 1 Portb.4 = 0 If Pinb.1 = 0 Then Portb.3 = 0 Portb.4 = 0 End If End If If Command = 56 Then Portb.3 = 0 Portb.4 = 1 If Pinb.2 = 0 Then Portb.3 = 0 Portb.4 = 0 End If End If Waitms 100 Portb.3 = 0 Portb.4 = 0 If Command = 16 Then Portb.3 = 1 Portb.4 = 0 Do If Pinb.1 = 0 Then Portb.3 = 0 Portb.4 = 0 Exit Do End If Getrc5(address , Command) Command = Command And &B01111111 If Command = 0 Then Portb.3 = 0 Portb.4 = 0 Exit Do End If Loop End If If Command = 17 Then Portb.3 = 0 Portb.4 = 1 Do If Pinb.2 = 0 Then Portb.3 = 0 Portb.4 = 0 Exit Do End If Getrc5(address , Command) Command = Command And &B01111111 If Command = 0 Then Portb.3 = 0 Portb.4 = 0 Exit Do End If Loop End If Loop
by Seja
.