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

Oświetlenie choinki z diod RGB sterowanych niezależnie

zi.ko 23 Gru 2009 22:43 6437 0
  • Od dawna interesowało mnie wykonanie efektownego oświetlenia LED choinki. Jednak żeby efekty były satysfakcjonujące, każde światełko musiało by być sterowane niezależnie a nie tak jak w chińskich lampkach segmentami. Niestety, żeby każdą diodę sterować oddzielnie trzeba by całej sieci okablowania, zwłaszcza, że chciałem użyć diod wielokolorowych RGB. Doszedłem do wniosku, że aby pozbyć się większości kabli trzeba użyć transmisji cyfrowej. wygląda to tak, że do każda dioda LED RGB ma oddzielny mikrokontroler i do każdej dochodzi zasilanie oraz przewód sygnałowy, w sumie trzy przewody.
    Oświetlenie choinki z diod RGB sterowanych niezależnie

    Do sterowania ledami potrzebowałem możliwie małego mikrokontrolera z minimum 4 portami I/O i w jak najniższej cenie. Wybór padł na PIC 10F200. Mikroprocesorek posiada 4 wejścia/wyjścia z czego jeden port może być tylko wejściem, oraz 2 piny zasilania, ma małe wymiary (obudowa SOT23-6) i chyba najniższą cenę bo w TME kosztuje poniżej 2zł (przy zakupie ponad 25szt). Jak się później okazało wystarczyło pamięci (256 słów) na pomieszczenie obsługi protokołu komunikacji i sterowania 3 kolorami LED.
    Oświetlenie choinki z diod RGB sterowanych niezależnie
    Opracowałem prosty protokół do sterowania ledami. Ponieważ pin GP3 do którego dochodzi sygnał sterujący jest tylko wejściem, komunikacja odbywa się jednostronnie. Protokół oparty jest o kodowanie Manchester . Zawarte są w nim 2 bity synchronizacji, 6 bitów adresu, 1 bit trybu działania oraz 3 bity koloru. Gdy nie ma transmisji, na lini jest stan wysoki, stan niski trwający 100us oznacza początek transmisji(potrzebny czas aby mikrokontroler zdążył zorientować się o rozpoczęciu odbioru danych). Potem następuje pierwszy bit synchronizacji, czyli przesłane jest zero logiczne. Następnie przesyłane są bity adresu, po nich znów bit synchronizacji, tym razem logiczna jedynka, dalej bit trybu. Ostatnie trzy bity to określenie, który kolor zaświecić (gdy bit trybu to 0) lub tryb pracy odbiornika; demo, reset czy test (gdy bit trybu to 1). Przesłanie całej ramki trwa ogólnie 700us, potem musi nastąpić co najmniej 1400us przerwy i dopiero można przesłać kolejną ramkę.

    Oświetlenie choinki z diod RGB sterowanych niezależnie





    Na adresie o długości 6 bitów można zaadresować do 64 urządzeń, jednak przyjąłem, że pierwszy adres (czyli binarnie 000000) będzie zarezerwowany a ostatni (binarnie 111111) będzie adresem typu broadcast dzięki czemu jedną ramką będzie można wymusić takie same zachowanie wszystkich odbiorników.
    Program napisałem oczywiście w asemblerze i kompilowałem kompilatorem MPASM. Zajmuje prawie całą pamięć mikrokontrolera. Po włączeniu zasilania odbiorniki działają w trybie demo a więc załączają losowe kolory na około 30sek. Tryb test wymusza na odbiorniku "wymiganie" swojego adresu. Tryb reset resetuje odbiornik. Gdy zmienna tryb jest ustawiona na 0, odbiornik zaświeca odpowiedni kolor w zależności od bitów koloru. Najmłodszemu bitowi odpowiada kolor czerwony, kolejnemu zielony a najstarszy bit zaświeca niebieski kolor. Dzięki temu można zaświecać poszczególne składowe barwy oraz mieszać je ze sobą np 101 zaświeci kolor czerowny i niebieski co da nam kolor fioletowy. Doświadczalnie zauważyłem, że kolory lepiej mieszają się w diodach matowych (mlecznych).
    Dioda LED, mikrokontroler oraz rezystor zlutowałem "na pająka" i zabezpieczyłem koszulką termokurczliwą.
    Oświetlenie choinki z diod RGB sterowanych niezależnie
    Oświetlenie choinki z diod RGB sterowanych niezależnie
    Oświetlenie choinki z diod RGB sterowanych niezależnie
    Do testów zrobiłem na uniwersalnej płytce układ wysyłający odpowiednią ramkę danych w zależności od ustawień dipswitcha, na tym układzie (16F628A) testowałem teże fekty świetlne.
    Oświetlenie choinki z diod RGB sterowanych niezależnie
    Docelowo całością sterować będzie 10F202 (ma więcej pamięci niż 10F200) z jednym przyciskiem, którym kolejno zmienimy program świecenia. Nie mierzyłem poboru prądu całego zestawu ale nie powinien być wysoki. W danej jednostce czasu w odbiorniku świeci się tylko jedna dioda nawet jeśli wybraliśmy kolor mieszany, dodatkowo dioda świeci ok 2us, potem następuje przerwa ok 20us i znów kolejny 2us świecenia. ogólnie przy zasilaniu odbiornika napięciem 3,5V pobór prądu nie powinien przekraczać 20mA. Mnożąc to przez ilość odbiorników (do 62szt), pobór prądu całości nie przekroczy 1,3A. Rzeczywisty pobór prądu jest bardzo mały, zestaw z 30 odbiorników z powodzeniem zasiliłem dwoma bateriami AA (paluszkami) połączonymi szeregowo.
    Koszt takiego oświetlenia niestety nie jest niski. Jeden mikrokontroler kosztuje ok 2zł do tego dioda LED RGB co najmniej 1,2zł oraz opornik (ok 5zł za 100szt) wszystko to mnożymy razy ilość użytych odbiorników. Czyli np. (2zł + 1,2zł) * 62 szt = 198,40zł plus ok 10zł za pozostałe elementy (sterownik efektów, kable, rezystory i inne elementy).
    Oświetlenie choinki nie jest jedynym zastosowaniem mojego projektu. Można go użyć wszędzie tam, gdzie mamy ograniczenie w okablowaniu. Myślałem na przykład nad zrobieniem efektu "ambilight" znanego z telewizorów Philips. Jednak na razie mam sporo pracy przy wykonywaniu tego projektu.
    Niestety nie mam filmiku z efektem świecenia łańcucha. Jak uda mi sięcoś nakręcić to jeszcze wstawię.


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Sklep HeluKabel