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.

Ping-pongowa wielokanałowa lampa RGB

mopsiok 31 Paź 2013 20:34 19131 19
  • Ping-pongowa wielokanałowa lampa RGB

    Cześć!
    Prezentowany tutaj projekt to wielokanałowa lampa RGB wykonana na osiemnaste urodziny kolegi. Pomysł zrodził się podczas przeglądania granic internetu :D, gdzie kolega znalazł prostą lampę zbudowaną z piłeczek pingpongowych. W tym wydaniu każdą z 30 piłeczek wyposażyłem w diodę RGB.
    Projekt zasilany jest napięciem 5V i pobiera średnio 210mA. Z tyłu obudowy wyprowadzone jest gniazdo DC do doprowadzenia zasilania, a sama lampa została wyposażona w poręczny kabel-przejściówkę, do przyjemnego zasilania z komputera lub ładowarki USB.
    Od razu zaznaczę, że zdjęcia lampy w akcji nie oddają w pełni efektu (o czym za chwilę), ale mimo to zapraszam do lektury.

    Część sprzętowa i sposób połączenia diod
    Po wstępnym zarysie całości i długim planowaniu obsługi diod, ostatecznie zdecydowałem się na rozmieszczenie ich w matrycę 5 wierszy po 6 diod. 15 programowych kanałów PWM obsługuje jednocześnie 5 diod w wybranej multipleksowo kolumnie. Razem ze schematem wygląda to tak:
    Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB
    Jak widać, została zaprzęgnięta ATmega16L z kwarcem 16MHz. Kluczowaniem kanałów PWM zajmują się układy ULN2803 i ULN2003, a multipleksowaniem kolumn jakieś pierwsze lepsze tranzystory PNP. Jeszcze zdjęcia płytki sterującej:
    Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB
    Multipleksowanie kolumn postanowiłem nadrobić większym prądem dla każdej składowej (około 50mA zamiast nominalnych 20mA), aby obraz nie był aż tak przyciemniony. Całkiem zapomniałem, że przez jeden tranzystor popłynie podczas jego aktywności jakieś 400mA. Dlatego też rezystory przy bazach zmieniłem na bodajże 1k5, co trochę pojaśniło diody. Lampa świeciła całkiem mocno, więc nie widziałem potrzeby dalszego zwiększania prądów baz.

    Część programowa i sposób sterowania diodami
    Wygenerowanie tylu PWMów okazało się wcale nie takim trudnym zadaniem. Po wielu próbach doszedłem do wniosku, że czasem najprostsze rozwiązania są najlepsze i wykorzystałem funkcję _delay_us ze stałym argumentem, zapętloną odpowiednią ilość razy (w zależności od wypełnienia kanału). Okres kanałów PWM trwa 2ms i teoretycznie wystarcza do multipleksowania 10 wierszy. ATmega wyrabiała się nawet przy okresie 1ms, co teoretycznie pozwala obsłużyć 20 kolumn po 5 diod każda, czyli 100 diod RGB - ten mały mikrokontroler ma wcale niemałe możliwości. Sam program zajmuje 2.5KB pamięci flash (z czego 0.5KB to dane dla animacji) oraz 70 bajtów RAMu.
    Jeśli chodzi o animacje, najistotniejsze było napisanie "bazy" zamieniającej składową odcienia (Hue) z palety HSV na składowe RGB. Pod tym linkiem widać odpowiednią zależność: http://upload.wikimedia.org/wikipedia/commons/5/5d/HSV-RGB-comparison.svg . Postanowiłem ułatwić życie sobie i ATmedze i zapisać w pamięci flash gotowe do podstawienia wartości. Przebiegi tak naprawdę wyglądają identycznie (są jedynie przemieszczone względem siebie), więc wystarczyło zapisać tablicę dla przebiegu składowej Red, a odczytywać z niej wszystkie trzy składowe w taki (uproszczony) sposób:
    Kod: C
    Zaloguj się, aby zobaczyć kod


    Lampy część właściwa
    Po napisaniu programu i gruntownych testach, nadszedł w końcu czas na robienie lampy jako takiej. Jak przystało na prezenty osiemnastkowe, lampa powinna mieć swój urok, o co zadbał kolega artysta przelewając cząstkę siebie w piłeczki pingpongowe :D. Samą obudowę zleciłem do wycięcia laserowego w pleksi żeby jako tako to wyglądało.
    Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB
    Zdecydowanie najbardziej nużącą częścią projektu było okablowanie wszystkich 30 diod. Zanim wymyśliłem odpowiedni sposób miałem już mocno nadszarpnięte nerwy. Wybawieniem okazała się skrętka i jej podatna na stopienie izolacja. Okrągły kształt łączników podyktowany był rurką PVC, która przechodziła przez środek lampy będąc jednocześnie "kręgosłupem" jak i elementem maskującym niezbyt piękne wykonanie. Poniższe zdjęcia ukazują proces składania lampki do kupy.
    Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB

    Lampa w akcji
    Po włączeniu lampy wszystkie diody zapalają się na kolor fioletowy (taki zażyczył sobie solenizant) i co jakiś czas lekko pulsują. Do zmiany animacji służą 3 przyciski na obudowie, którymi można wybrać rodzaj animacji:
    - podstawowa: fiolet
    - relaksująca: każda dioda ma inny odcień, który płynnie zmienia się w czasie
    - "te co oczy wypalają" :)
    Z ostatniej grupy można wybrać kolorowe obracające się spirale, efekt kuli dyskotekowej i zmianę koloru losowej diody. Są to luźne wariacje od oficjalnych twórców projektu. Ze względu na utrudnienia natury technicznej, prezentowany tutaj projekt jest mojego autorstwa - z wyłączeniem piłeczek, które dostarczył kolega.
    Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB Ping-pongowa wielokanałowa lampa RGB
    Animacje można obejrzeć na filmie przedstawiającym projekt (00:38):

    Link


    Uwagi końcowe
    Zdecydowanie drugi raz bym się za to nie zabrał :lol:. Łączenie diod to była katorga. Już lepiej się wykosztować i zamówić wykonanie płytek dopasowanych wymiarami do projektu, które będą łączyć diody w matrycę. Ewentualnie wytrawić samemu. Cała reszta była nawet przyjemna, i zdecydowanie mogę powiedzieć że projekt uważam za udany, mimo że trochę widać przewody między piłkami.
    Jeśli ktoś chciałby wykorzystać koncept z piłeczkami, trzeba uważać na to w którym miejscu rysuje się obrazki - u nas kolega o tym zapomniał i efekt jest taki, że na większości piłeczek widać łączenie połówek. Warto też zrobić sobie jakiś szablon, który ułatwi równe sklejanie ze sobą piłek. Ja niestety o tym zapomniałem i w dwóch miejscach są szparki między piłkami.
    Niestety projekty multipleksowane mają ten minus, że ciężko sensownie nagrać ich działanie. Nie wiem czy są na to jakieś sposoby, ale u mnie na filmie cały czas widać było pasek wyciemnionych diod, co w połączeniu z tandetną jakością kolorów całkowicie psuło efekt. Na szczęście (bardzo) spowalniając animacje można wykonać serię zdjęć, a potem zmontować je do filmu.

    W załączniku zamieszczam pliki Eagle'a - schemat i płytkę sterownika. Kodu źródłowego nie udostępniam.

    Pozdrawiam i zapraszam do dyskusji
    mopsiok
    Załączniki:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    mopsiok
    Poziom 14  
    Offline 
    Więcej dziwnych rzeczy na: https://www.youtube.com/user/mopsiok
    Specjalizuje się w: wyważanie otwartych drzwi
    mopsiok napisał 180 postów o ocenie 401, pomógł 0 razy. Mieszka w mieście Kraków. Jest z nami od 2010 roku.
  • PCBway
  • #2
    ezbig
    Poziom 19  
    mopsiok napisał:
    Niestety projekty multipleksowane mają ten minus, że ciężko sensownie nagrać ich działanie. Nie wiem czy są na to jakieś sposoby, ale u mnie na filmie cały czas widać było pasek wyciemnionych diod, co w połączeniu z tandetną jakością kolorów całkowicie psuło efekt. Na szczęście (bardzo) spowalniając animacje można wykonać serię zdjęć, a potem zmontować je do filmu.


    Trzeba użyć kamery z możliwością ręcznej regulacji czasu otwarcia migawki.
  • #3
    ArturAVS
    Moderator - Na Wesoło HydePark
    Bardzo ładna lampka wyszła. Szkoda że nie zwróciłeś uwagi na szwy piłeczek. Można było tak je ustawić , aby były niewidoczne.
  • PCBway
  • #4
    mopsiok
    Poziom 14  
    Miło mi słyszeć tak pochlebne opinie :). Dzięki.
    Odpowiadając po kolei.

    Mikusiek48 napisał:
    Jakie koszty takiej zabawki ?

    Za lampkę wyszło razem nieco ponad 90 złotych, a dokładniej:
    diody RGB: 30zł
    elektronika: 18zł
    piłeczki: 15zł
    cięcie pleksi + wysyłka: 25zł
    rurka PVC: 5zł

    ezbig napisał:
    Trzeba użyć kamery z możliwością ręcznej regulacji czasu otwarcia migawki.

    Dzięki za info. Niestety nie dysponuję kamerą, mam tylko aparaty.

    arturavs napisał:
    Szkoda że nie zwróciłeś uwagi na szwy piłeczek. Można było tak je ustawić , aby były niewidoczne.

    Też mnie to razi, ale tak jak pisałem tu zawinił kolega i nie miałem mocy tego poprawić, bo sam takich buziek nie narysuję.
  • #5
    dondu
    Moderator Mikrokontrolery Projektowanie
    Bardzo fajny projekt/prezent, ale najważniejsze, że nie kupiony, tylko wykonany własnoręcznie. Widać zależy Ci na koledze :)
    Drobna uwaga dot. publikacji na forum. Jeżeli pokazujesz schemat, to uzupełniaj wartości elementów.
  • #6
    mopsiok
    Poziom 14  
    dondu napisał:
    Jeżeli pokazujesz schemat, to uzupełniaj wartości elementów.

    Wartości są uzupełnione, ale w niektórych miejscach zaciemniałyby obraz, więc dodałem odpowiedni opis nad krawędziami.

    bwoj napisał:
    BTW co to za piosenka w tle? :)

    To soundtrack z gry "Dumb ways to die", która z elektroniką ma mało wspólnego, za to bardzo wiele z powstawaniem i ofiarowaniem prezentu :D.
  • #7
    mopsiok
    Poziom 14  
    konrad123456 napisał:
    Dobrze widzę że nadrukowałeś na PCB masę pod atmegą ?

    Owszem, ale nie mam dodatkowego pola masy na spodzie obudowy - po prostu nie podobało mi się łączenie ścieżek, stąd też i prostokąt :lol:.

    kaamil1984 napisał:
    Ładne lutowanie i płytka.

    Używasz jakiegoś drogiego topnika?

    Jaka lutownica?

    Płytka ładna, bo nawet jak idzie w obudowę to i tak staram się wykonać ją estetycznie ;). Cieszę się że się podoba. Mam topnik RF800 do SMD za jakieś 6 złotych/15ml (niby no-clean, ale i tak trzeba umyć, bo brzydkie plamy zostawia), ale korzystam z niego raczej w ekstremalnych sytuacjach. Zazwyczaj po prostu plecionka zanurzona w mocnym roztworze kalafonii. Płytkę cynuję stopem Lichtenberga zakupionym na tym forum.
    Mam stację lutowniczą Zhaoxin 936A+ (typowy chińczyk za niecałą stówkę).
  • #8
    gervee
    Specjalista Automatyk
    Co to za diody RGB?
  • #11
    gervee
    Specjalista Automatyk
    Obudowa obudową, gdyby autor wątku podał typ diody to nie musielibyśmy zgadywać.
  • #12
    mopsiok
    Poziom 14  
    Podałbym, gdyby był mi znany :). Diody kupiłem jakoś rok temu po cenie śmiesznie niskiej 22 zł za 50 sztuk (normalnie 1zł/szt), więc to pewnie jakiś chiński no-name.
  • #13
    Mati_78
    Poziom 2  
    Fajny projekt, prezent wykonany własnoręcznie bardziej się docenia. Brakuje mi tylko płynnej zmiany koloru dla wszystkich piłeczek jednocześnie.
  • #14
    c4r0
    Poziom 36  
    mopsiok napisał:

    ezbig napisał:
    Trzeba użyć kamery z możliwością ręcznej regulacji czasu otwarcia migawki.

    Dzięki za info. Niestety nie dysponuję kamerą, mam tylko aparaty.
    W aparatach też często jest to możliwe, o ile mają pełny tryb manualny. Jeśli możesz ustawić czas naświetlania w zdjęciach to i w filmikach powinno się dać. Ale ten czas i tak będzie ograniczony ilością klatek na sekundę.
  • #15
    mopsiok
    Poziom 14  
    Mati_78 napisał:
    Brakuje mi tylko płynnej zmiany koloru dla wszystkich piłeczek jednocześnie.

    Fakt, to by było całkiem fajne - przyznam że nie przykładałem aż takiej wagi do animacji, jedyne założenie było takie że ma ich być 5, z czego 3 to luźne (niekoniecznie sensowne) pomysły.

    c4r0 napisał:
    W aparatach też często jest to możliwe, o ile mają pełny tryb manualny.

    Dzięki, poszperam w ustawieniach, bo mój aparat ma możliwość zmiany czasu naświetlania. Niestety i tak nic to nie da, bo przy 25 fps maksymalny czas ogranicza się do 0.04s - pewnie zależy to od wielu czynników, ale lampa ładnie wychodziła dopiero gdzieś koło 0.5s.
  • #16
    c4r0
    Poziom 36  
    Przy 25 fps maksymalny czas to po prostu 1/25 s, bo w ten sposób się mierzy czasy w fotografii. To jak ładnie wychodzi to inna sprawa. Wcześniej pisałeś o multipleksowaniu. 1/25 s powinna wystarczyć żeby nie było go widać w filmiku.
  • #17
    mopsiok
    Poziom 14  
    Teoretycznie powinno wystarczyć, bo okres całego "obiegu" multipleksowania trwa co najwyżej 1/50 s. U mnie akurat wynosi chyba coś koło 1/80 s, więc przy 1/25 s naświetlania na jednej klatce uwieczniłoby się 3.2 pełnego obiegu - jeden z rzędów byłby trochę jaśniejszy od pozostałych. Co gorsza, na każdej klatce jaśniejszy byłby inny rząd. Pytanie czy nie byłoby to zbyt widoczne.

    Przyznam że zaintrygowałeś mnie tym czasem naświetlania przy filmowaniu, lampy już nie mam, ale z pewnością poczynię eksperymenty w tym zakresie :D.
  • #18
    c4r0
    Poziom 36  
    Najlepiej byłoby odpowiednio zsynchronizować klatki z multipleksowaniem, co oczywiście nie jest za bardzo możliwe. Obejściem problemu jest duża ilość cykli w jednej klatce, tak jak napisałeś. Możesz też zwiększyć częstotliwość próbkowania jeśli masz zapas szybkości procesora.
  • #19
    eles12
    Poziom 9  
    Mozna zamowic u Ciebie taka lampke ?:)
  • #20
    mopsiok
    Poziom 14  
    @eles12: Wykonania całej lampki raczej się nie podejmę ze względu na ogrom pracy, ale mogę wykonać całą płytkę sterującą. Ewentualnych zainteresowanych proszę na PW :).