Kompletny sterownik taśmy składa się z dwóch urządzeń: nadajnika i odbiornika.
Nadajnik
Schemat nadajnika zdalnego sterowania, tzw. pilota, pokazano na rysunku 1. W pilocie znajduje się mikrokontroler ATtiny13V. Sufiks "V" oznacza rozszerzony zakres napięć zasilających, od 1,8 V do 5,5 V. Dzięki temu, możliwe jest zasilanie go z pojedynczej baterii CR2032 o napięciu 3 V. Dzięki temu, pilot może być lekki i niewielki.
Dioda nadawcza IR wymaga impulsów prądu o znacznym natężeniu. Sygnał wychodzący z mikrokontrolera wymaga wzmocnienia za pośrednictwem tranzystora T1. Rezystor R2 ogranicza prąd jego bazy, a kondensator C7 przyśpiesza jej przeładowywanie, czyli zatykanie i nasycanie tranzystora.
Prąd bazy tego tranzystora to ok. 2 mA, zaś prąd diody nadawczej to ok. 70 mA. Wynika z tego, że wzmocnienie prądowe T1 nie powinno być mniejsze od 100, aby ten prawidłowo wchodził w stan nasycenia. Ten warunek spełnia każdy BC807, bez konieczności wyszczególniania grupy.
Wszystkie wyprowadzenia enkodera zostały podłączone do mikrokontrolera. W typowym zastosowaniu, elektroda wspólna podłączana jest do masy, zaś pozostałe do dodatniego bieguna zasilania, za pośrednictwem rezystorów podciągających.
Pomimo oczywistej prostoty, tutaj taka realizacja jest niemożliwa do przyjęcia: jeżeli któryś ze styków enkodera ustawi się w takim położeniu, że zapewni długotrwały przepływ prądu przez rezystor podciągający, wówczas bateria ulegnie rozładowaniu w szybkim tempie, pomimo zredukowania poboru energii przez sam mikrokontroler.
Algorytm pracy zastosowany w tym układzie sprowadza się do okresowego (co 250 ms) wyprowadzania mikrokontrolera ze stanu głębokiego uśpienia i sprawdzania, czy zmienił się stan któregokolwiek ze styków A, B, lub SW.
Po wybudzeniu, wyprowadzenie wspólne (COM) jest ściągane do masy, przez co odczyt poziomu logicznego z pozostałych wejść, mających wewnętrzne rezystory podciągające, jest możliwy. Jeżeli zmiany nie ma, wyprowadzeniu COM zostaje nadany logiczny stan "1" i mikrokontroler przechodzi do trybu energooszczędnego. W razie wystąpienia zmiany, ponowne uśpienie zostaje odroczone na ok. 0,5 s od detekcji ostatniego ruchu na stykach. W tym czasie, układ znajduje się w stanie aktywnym i natychmiastowo reaguje na polecenia użytkownika.
Takie działanie jest możliwe dzięki zastosowaniu przerwania od układu watchdog, który pracuje z oddzielnym oscylatorem o niskiej częstotliwości. Generuje on okresowo przerwania, które uruchamiają uśpiony rdzeń. Na listingu 1 znajdują się fragmenty kodu, odpowiedzialne za konfigurację układu watchdog oraz przygotowanie do uśpienia i pracy po wybudzeniu.
Wymienione czynności pozwoliły na zredukowanie poboru prądu do wartości średniej oscylującej wokół 5 mA. Zakładając, że typowa bateria CR2032 ma pojemność 200 mAh, powinna ona wystarczyć na ponad 4 lata pracy takiego pilota. Pobór prądu w stanie aktywnym (po wybudzeniu) wzrasta do ok. 600 mA, zaś w czasie nadawania wynosi ok. 20 mA.
Sposób, w którym przebiega komunikacja w podczerwieni, opiera się na standardzie RC5 w jego typowym wydaniu. Nie zachodzi tutaj potrzeba specjalnego kodowania informacji bądź przesyłania długich ciągów danych, zatem ten prosty i doskonale znany standard powinien sprawdzić się bez zarzutu.
Takie rozwiązanie pozwala na sterowanie jasnością nie tylko za pośrednictwem opisanego tu pilota, lecz również każdego uniwersalnego, który jest wyposażony w diodę emitującą światło o długości fali 950 nm lub zbliżonej. Adres tego urządzenia został na sztywno ustawiony na 11 - niewykorzystany, zatem nie powinno być konfl iktów z innymi urządzeniami RTV w pomieszczeniu. Komendy oraz funkcje przycisków (odpowiadające pilotowi do TV) zostały zestawione w tabeli 1. Bit "toggle" nie jest sprawdzany przez odbiornik.
Do wytwarzania fali prostokątnej o częstotliwości 36 kHz został wykorzystany tryb CTC licznika Timer0, który jest taktowany bezpośrednio z zegara rdzenia. Ponieważ bity zabezpieczające należy pozostawić w ustawieniu fabrycznym, owa częstotliwość wynosi 1,2 MHz.
Ustawienie wartości rejestru OCR0A = 15 zaowocowało generacją sygnału o częstotliwości ok. 36,4 kHz. Niewielkie odstępstwo (rzędu 1%) nie szkodzi w stosowaniu scalonego odbiornika na częstotliwość 36 kHz, jak użyty tutaj TSOP4836, ponieważ filtr częstotliwości nośnej w nim zawarty nie jest tak bardzo selektywny (rysunek 2).
Dodatkowy rezystor R1, podciągający wyprowadzenie zerowania do dodatniego bieguna baterii, został dodany w celu uniknięcia nieprawidłowości w działaniu układu, wywołanych przez upływności montażowe oraz gromadzące się ładunki elektrostatyczne. Nie ma on wpływu na pobór prądu przez układ.
Obsługa pilota polega na przekręcaniu osi enkodera w prawo (zwiększenie jasności) bądź w lewo (zmniejszanie jasności) oraz wciśnięcie jej (wyłączenie taśmy LED).
Wykaz elementówNadajnik Rezystory: Kondensatory: Półprzewodniki: Inne: Odbiornik Rezystory: Kondensatory: Półprzewodniki: Inne: |
Odbiornik
Schemat ideowy odbiornika jest na rysunku 3. Podobnie, jak w nadajniku, tutaj również pracuje mikrokontroler ATtiny13. Jest on zasilany stabilizowanym napięciem o wartości 5 V, pochodzącym ze scalonego stabilizatora LM78L05. Dioda D1 zabezpiecza stabilizator przed uszkodzeniem, które mogłaby wywołać omyłkowa zmiana polaryzacji zasilania.
Taśma LED jest sterowana poprzez tranzystor MOSFET-N typu IRF7201. Jest on dostępny w obudowie SO8, co jest istotne z punktu widzenia miniaturyzacji układu. Liczne wyprowadzenia drenu ułatwiają odprowadzanie zeń ciepła. Niskie napięcie progowe (1 V) pozwala na sterowanie go bezpośrednio z wyjścia mikrokontrolera.
Cechuje się rezystancją otwartego kanału na poziomie 30 mV oraz może przewodzić prąd o wartości nawet 7,3 A (przy temperaturze obudowy 25°C). To przekłada się na maksymalną moc zasilanej taśmy: 87 W w instalacji 12 V oraz 175 W dla napięcia 24 V. Rezystor R6, włączony szeregowo z bramką, zmniejsza prąd płynący przez wyjście mikrokontrolera w momencie przełączania.
Do odbioru transmisji w podczerwieni służy wspomniany już wcześniej odbiornik TSOP4836. Jego zasilanie jest filtrowane przez prosty obwód RC składający się z elementów R7, C6, C7, co rekomenduje nota katalogowa. Odbiór komunikatu RC5 o poprawnym adresie sygnalizowane jest pojedynczym błyśnięciem diody LED1.
Po zamknięciu układu w transparentnej obudowie barwy niebieskiej, jej światło jest dobrze widoczne, a jednocześnie nie jest irytujące dla oczu. Układ odbiornika pobiera w stanie czuwania prąd o wartości ok. 8 mA. Nie zapamiętuje on nastaw jasności: po zaniku zasilania i ponownym jego załączeniu, startuje z wyłączoną taśmą.
Montaż i uruchomienie
Obydwa układy - nadajnika i odbiornika - zostały zmontowane na jednostronnych płytkach drukowanych o wymiarach 31 mm×45 mm. Ich schematy montażowe zamieszczono na rysunku 4 i rysunku 5.
Montaż należy przeprowadzić zaczynając od elementów lutowanych powierzchniowo. Następnym krokiem jest wlutowanie zwor z drutu: na płytce nadajnika jedna, na płytce odbiornika dwie. W ostatniej kolejności, montuje się elementy przewlekane, poczynając od najniższych. Diodę nadawczą należy przylutować na krótkich wyprowadzeniach i zagiąć ją równolegle do powierzchni płytki, co będzie widoczne na zdjęciu.
Takie wymiary płytek pozwalają na zamknięcie gotowych układów w niewielkich obudowach KM-10N. Transparentna, niebieska obudowa przepuszcza promieniowanie podczerwone oraz światło niebieskiej diody, wbudowanej w odbiornik.
Dzięki temu, w obudowie nadajnika należy wywiercić jedynie jeden otwór (na oś enkodera), a w obudowie odbiornika dwa (na przewody). Płytki są dopasowane do obudów i nie wymagają żadnego dodatkowego mocowania. Zmontowane płytki pokazano na fotografii 6 i fotografii 7.
Czynności uruchomieniowe sprowadzają się do zaprogramowania pamięci Flash obydwu mikrokontrolerów. Ponadto, w przypadku układu odbiornika, należy wyłączyć bit CKDIV8. Pozostałe bity zabezpieczające należy pozostawić w ustawieniu fabrycznym.
Po zaprogramowaniu, układy gotowe są do pracy. Zasięg pilota wynosi ok. 10 m (w otwartej przestrzeni), dzięki czemu pozostaje duża swoboda w doborze miejsca ukrycia odbiornika, aby światło podczerwone mogło padać na układ TSOP4836.
Dla ciekawskich
Wytwarzany przez mikrokontroler sygnał PWM ma częstotliwość ok. 290 Hz, przez co migotanie diod w taśmach jest niewidoczne. Rozdzielczość regulacji wypełnienia wynosi 1%. Liczba dostępnych dla użytkownika kroków wynosi 17, przy czym, pierwszy odpowiada wyłączeniu, a ostatni pełnemu rozświetleniu.
Ten "nadmiar" został przeznaczony do zrealizowania liniowej regulacji jasności. Ludzkie zmysły odbierają wrażenia jako zmieniające się liniowo, jeżeli w rzeczywistości zmiany te zachodzą logarytmicznie. Przykładem jest regulacja głośności, w której stosuje się potencjometry o charakterystyce logarytmicznej. Brak tej korekcji powoduje, że duża zmiana (odczuwalnie) zachodzi na relatywnie małym przedziale.
Rysunek 8 przedstawia wypełnienie przebiegu PWM, liczone liniowo oraz logarytmicznie. Widać na nim, że przy podejściu logarytmicznym, 75% zakresu zmienności wypełnienia jest pokryte pierwszą połową kroków. Pozostałe 25% zostało rozłożone po drugiej połowie. Podejście liniowe rozkłada wypełnienie równomiernie - oraz łatwo jest je zaimplementować, lecz uzyskany efekt jest zauważalnie gorszy.
Zaimplementowanie w mikrokontrolerze funkcji, która na bieżąco obliczałaby wypełnienie, znacznie zwiększyłoby objętość programu, co z kolei wymagałoby zastosowania innego układu. Wartości wypełnienia zostały obliczone i wpisane "na sztywno" do tablicy przez co cały program zajmuje ok. 0,5 kB. Poniżej znajduje się algorytm pozwalający na wygodne dokonanie obliczeń, co może być użyteczne w niejednym projekcie.
Pierwszym krokiem jest przeskalowanie numeru kroku (zmiennym w zakresie 1-17) na odpowiadającą mu liczbę z zakresu [1;10]. Taki zakres zmienności powoduje, że logarytm dziesiętny, którym w takich wypadkach zwyczajowo się posługujemy, przyjmie wartości z zakresu [0;1], co jest bardzo wygodne z punktu widzenia przeliczenia na procentową wartość wypełnienia. Owe przeskalowanie najprościej jest zrobić za pomocą zwykłej funkcji liniowej: (k - numer kroku)
Następnie, uzyskane wartości należy zlogarytmować i pomnożyć przez 100, jeżeli trzeba uzyskać wypełnienie w procentach:
Rezultatem opisanych wyżej obliczeń jest tabela, której ostatnią kolumnę należy napisać w programie jako tablicę i odwoływać się do kolejnych elementów w niej. Wyniki obliczeń przeprowadzonych na potrzeby niniejszego projektu znajdują się w tabeli 2.
Michał Kurzela, EP