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

Podstawka LED pod świąteczne pocztówki

Syzyf123 24 Sty 2012 17:47 9016 4
  • Podstawka LED pod świąteczne pocztówki

    Witam
    Zamieszczam projekt w ostatniej chwili, ponieważ pomysł zrodził się niedawno i układ dopiero został ukończony. Kilka słów wyjaśnienia skąd taka koncepcja się wzięła.
    Będąc już po po Świętach u rodziny, rozmowa zeszła na temat kartek pocztowych wysyłanych z tej okazji. Kartki stały wyeksponowane na honorowym miejscu, czyli na kredensie w stołowym pokoju. Jedna z nich nawet usiłowała wygrywać melodyjkę zbliżoną do kolędy. Wujek, który lubi elektroniczne gadżety, powiedział, że tylko czekać aż pojawią się kartki ze "światełkami" i roztoczył wizję, jak by to ładnie wyglądało, gdyby kartki świeciły. Niestety trzeba było zejść na ziemię, bo wiadomo, że nawet LED-y pobierają spory prąd i mała bateryjka w kartce szybko by padła.
    Jednak po powrocie do domu temat do mnie wrócił i tak narodził się

    Pomysł
    Skoro kartka i tak docelowo będzie stała na kredensie, to można by ją podłączyć do zasilacza albo większej baterii. Jednak stwierdziłem, że cienkiej kartki z diodami nie będę w stanie zrobić. Można by natomiast zrobić podkładkę pod kartkę, tzn. cienki "blat" z LED-ami, na który w jakiś sposób zamocuje się pocztówkę, która będzie miała otwory na diody wycięte przez mnie. Wujek w prezencie dostanie podstawkę wraz z kartką a w następnych latach będę wysyłał tylko kartki z otworami na diody.

    Pozostało wymyślić sposób mocowania kartki na takiej podkładce i prosty sposób wycinania otworów.
    Diody o średnicy 3mm są wystarczająco długie aby po ich przepchnięciu przez otwór w laminacie, wystawały na ok. 2,5mm ponad jego powierzchnię. Kilkanaście diod wystających ponad laminat umożliwi nałożenie na nie kartki z otworami.
    Wycięcie otworów w pocztówce okazało się bardzo proste dzięki wybijakom, które za kilka złotych kupiłem kiedyś w Castoramie. Jeden z nich ma średnicę 2,4mm, dzięki czemu pocztówka wchodzi na LED o średnicy 3mm z lekkim oporem i trzyma się mocno.
    Szczegóły staną się jasne po obejrzeniu zdjęć.

    Projekt
    Od niedawna uczę się programować w BASCOM-ie i zgłębiam temat mikrokontrolerów AVR. Postanowiłem zrobić swój pierwszy projekt oparty na takim układzie. Chciałem mieć możliwość sterowania 16 diodami w sposób niezależny, czyli jedna dioda na jednym pinie portu. Wybór padł więc na ATmegę8A, w którym portów jest dostatek.

    Schemat jest bardzo prosty:

    Podstawka LED pod świąteczne pocztówki






    Typowo diody pobierają 20mA, czyli 16 pobierze ponad 300mA. Z noty katalogowej wynika jednak, że sumaryczny prąd w stanie niskim na portach B i D nie powinien przekraczać 200mA. Postanowiłem więc wykorzystać diody o zwiększonej jasności i zmniejszyć pobierany przez każdą prąd do ok. 10mA.
    Diody okazały się dość tanie (ok. 20 gr/szt) i rzeczywiście świeciły wystarczająco mocno przy takim prądzie. Moje mają światłość od 500 do 4500mcd i rezystory zostały dobrane tak aby zapewnić podobną jasność świecenia. Użyłem diod w 4 kolorach: czerwonym, żółtym, zielonym i niebieskim.

    Na wyjściu portów B i D znajdują się diody z rezystorami ograniczającymi prąd. Pod 2 bity portu C są podłączone mikroswitche: W1 umożliwia włączanie panelu oraz wyłączanie poprzez wprowadzenie go w stan niskiego poboru energii (40uA). Drugi przycisk umożliwia zmianę programu wolny/szybki.
    Na schemacie są jeszcze 2 zworki na porcie C: podłączenie bitu 3 do masy spowoduje samoczynne wyłączanie się układu po ok. 30 minutach. Można tu zamontować dodatkowy włącznik stabilny ale nie udało mi się takiego pozyskać. Druga zworka pozostała nie wykorzystana, bo nie wystarczyło mi czasu aby ją obsłużyć w programie.

    Zasilanie zapewnia stabilizator typu 78M05 w wersji SMD, przed którym jest dioda prostownicza chroniąca moduł przed podłączeniem napięcia o odwrotnej polaryzacji.
    Dioda D18 umożliwia podanie z włącznika W1 na port PD2 stanu niskiego i wykorzystanie przerwania INT0 do "budzenia" układu ze stanu uśpienia. Złącze z sygnałami ISP umożliwia programowanie układu Atmega8A przylutowanego na płytce. Jest to złącze SMD (i wtyczka) wylutowane z jakiejś płytki ze starej drukarki.
    Wartości elementów są podane na schemacie, oprócz rezystorów R1-R16, które trzeba indywidualnie dobrać w zależności od posiadanych LED. U mnie są to wartości 220 omów dla diod czerwonej i niebieskiej, 330 omów dla żółtej oraz 470 omów dla zielonej.
    Diody były przeźroczyste o wąskim strumieniu światła, dlatego lekko zmatowiłem im soczewki papierem ściernym 1200 aby zwiększyć kąt świecenia.


    Płytka drukowana i obudowa
    Podstawka miała być możliwie cienka, zatem użyłem elementów SMD. Pierwszy raz zrobiłem układ z taką drobnicą ale o dziwo lutowanie przebiegło całkiem gładko.
    Płytkę zaprojektowałem metodą kartki i ołówka a narysowałem w Corelu, bo EAGLA jeszcze nie opanowałem.
    Została wykonana metodą termotransferu przy użyciu żelazka i wytrawiona środkiem B327. Płytka jest spora (ok. 10x15 cm) ale udało się zrobić dobry transfer tonera już za drugim razem.

    Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki

    Wokół płytki są przyklejone plastikowe paski zapewniające odstęp 2,5mm pomiędzy laminatem a tylną ścianką zrobioną z pleksi o grubości 1mm. Całość została oklejona żółtą folią samoprzylepną służącą do oklejania mebli.

    Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki

    Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki

    Ponieważ nie udało mi się zdobyć gniazda SMD do zasilania, kabel został wyprowadzony na zewnątrz i na końcu ma zamontowane gniazdo do podłączenia zasilacza 9V.
    Płytka została zabezpieczona przed korozją staromodnym środkiem, czyli kalafonią rozpuszczoną w spirytusie.
    W tylnym deklu zostały wycięte na górze i na dole otwory o średnicy 3mm aby zapewnić odrobinę chłodzenia. Moduł jednak nie przegrzewa się. Nawet po godzinnym miganiu nie czuć aby się nagrzewał a średni pobierany prąd wynosi ok. 100mA.
    Podstawka ma wymiary ok. 10x15cm oraz grubość 6mm.
    Na koniec zamontowałem tylną ściankę, w której jest wyprowadzone gniazdo do ewentualnego przeprogramowania układu w przyszości:

    Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki Podstawka LED pod świąteczne pocztówki

    Program
    Program został napisany w BASCOM-ie i zapewnia 2 tryby świecenia wybierane przełącznikiem W2. Tryb domyślny jest "wolny", tzn. diody migają sobie leniwie w ten sposób, że są zapalane a po chwili płynnie wygaszane. Każda dioda jest niezależnie sterowana programową modulacją PWM, oddzielnie dla każdego bitu. Ponieważ czasy świecenia każdej diody są różne, uzyskałem efekt losowego zaświecania i gaśnięcia. Drugi tryb jest dla osób żądnych mocniejszych wrażeń i jest tu kilka podprogramów zapewniających efekty bardziej bijące po oczach.

    Koszt wykonania całości, to ok. 20 zł

    Na koniec film pokazujący działanie układu (pod nim link do Youtube):



    Link

    W pliku ZIP zamieszczam skompilowany program i pliki pomocnicze oraz wzór płytki drukowanej w formacie PDF. Jest także rysunek pokazujący rozmieszczenie elementów. Rysunek płytki minimalnie różni się od tego na zdjęciach, bo źle był wyznaczony punkt podłączenia diody D18 - zostało to poprawione (stąd widoczny długi żółty kabelek na zdjęciach z widokiem od strony elementów).


    Fajne! Ranking DIY
  • Deimic Smart Home
  • #2 24 Sty 2012 21:46
    comer3
    Poziom 27  

    Syzyf123 napisał:
    Każda dioda jest niezależnie sterowana programową modulacją PWM, oddzielnie dla każdego bitu. Ponieważ czasy świecenia każdej diody są różne, uzyskałem efekt losowego zaświecania i gaśnięcia.


    Możesz wrzucić kawałek kodu odpowiedzialny za te programowe PWM? Ciekawi mnie jak to jest u Ciebie rozwiązane.
    Swoją drogą wzorowe opracowanie projektu - od pomysłu, aż do finalnego urządzenia. :)

  • Deimic Smart Home
  • #3 24 Sty 2012 23:41
    Syzyf123
    Poziom 12  

    Dzięki za dobre słowo :)
    Kod fragmentu odpowiedzialnego za PWM jest poniżej - pomiędzy Do i Loop.
    Dane dotyczące każdego bitu są zapisane w tablicach o rozmiarze 16. Indeksy 1..8 dotyczą portu D, zaś 9..16 dotyczą portu B.
    Program kręci się w pętli z szybkością, jaką daje zegar 8MHz.
    Współczynnik wypełnienia dla danego bitu to tablica Wyp(i). Jej wartość zmienia się od 30 do zera (nawet do -2 aby wydłużyć czas zgaszenia diody) i jest to ilość możliwych stanów . Jeśli Wyp(i)=30 to bit ma stale stan 0 (dioda świeci). Gdy Wyp(i)=10, to współczynnik wypełnienia wynosi 10/30=33%.
    Wartość 30 została ustalona doświadczalnie. Przy większych wartościach występowało już migotanie.
    Zmienna Pom(i) zmienia się szybko przy każdym obiegu pętli rosnąc od 0 do 30 i jest porównywana z Wyp(i). Jeśli jest mniejsza, to dany bit portu ustawiany jest na 0. Jeśli większa, to bit ma wartość 1.
    Wystarczy więc zmieniać płynnie wartość Wyp(i) aby uzyskać odpowiednią zmianę współczynnika wypełnienia na danym bicie portu.
    W zależności od indeksu tablic "i" jest wyznaczana zmienna Maska, która poprzez operację OR albo AND powoduje zmianę stanu bitu portu w zależności od indeksu.
    Maski (8 liczb) są zapisane w Tabela na końcu programu w liniach Data i odczytywane poprzez Lookup.
    Zmienna Czas(i) określa czas gaśnięcia diody (liczby rzędu 150-300) ale nie jest to czas np. w milisekundach, tylko umowna wartość ustalona doświadczalnie. Wartości początkowe są w danych na końcu Tabelaczas.
    Czaslicznik(i) mają za zadanie tylko wydłużyć czas zmiany współczynnika wypełnienia Wyp(i).

    Szczerze mówiąc nie wiem, jak takie PWM powinno być fachowo zrobione ale taka koncepcja mi przyszła do głowy i okazało się, że działa :)

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

  • #4 25 Sty 2012 01:29
    george2002

    Poziom 19  

    Pięknie wykonany projekt od początku do końca! Jako tylko jeszcze mały niedosyt mogę podpowiedzieć że bascom posiada funkcję random którą można wykorzystać do pierwszego programu aby na pewno diody migały w różnych odstępach z różną intensywnością, mogły by zaświecać i gasnąć w pierwszym programie troszkę wolniej - kwestia gustu :) co do podstawki to można zrobić ją tak aby działała również dla serduszka czyli nie trzeba by było Ją trzymać jak jakaś pocztówka lub kartka będzie niewymiarowa i na odwrót pasować :)

    Pozdrawiam
    george2002

  • #5 25 Sty 2012 11:13
    Syzyf123
    Poziom 12  

    Dzięki - rzeczywiście największą satysfakcję mam z tego, że projekt udało się zakończyć w terminie. Całość niby prosta ale roboty sporo.
    Funkcję RND() rzeczywiście można by użyć do zróżnicowania czasów świecenia, choć nie wiadomo z jakim efektem. W trakcie prób okazało się, że przy niektóry nastawach tablicy Czas(i) diody synchronizowały się i migały w tym samym rytmie, co bardzo psuło efekt.
    Oczywiście miganie można spowolnić wpisując zamiast liczby 1.3 większą wartość w części "inicjacja tabeli PWM".
    Walentynkowe serduszko na filmie miało być tylko uzupełnieniem, sugestią że ten projekt można użyć również w takim celu niemal bez przeróbek. Bo termin niebawem ;)
    Odnośnie kodu programu do sterowania PWM - sądzę, że można go trochę uprościć używając funkcji rotate do zmiany zmiennej Maska (zamiast Lookup i linii Data).
    Skróci to okres wykonywania pętli i będzie można zwiększyć zmienną Wyp_max powyżej 30, czyli zwiększyć liczbę poziomów PWM i polepszyć płynność przygasania diod.
    Coś takiego:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod