Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Świąteczny wyświetlacz LED 32x32

Sh44dow 15 Gru 2010 00:31 20131 32
  • Świąteczny wyświetlacz LED 32x32

    Witam.
    Niedawno ukończyłem budowę dwóch paneli LED 32x16, które świetnie nadają się do wyświetlania świątecznych grafik. Całość mam zamiar ustawić przy drzwiach balkonowych i obraz będzie widoczny z ulicy.

    Matryca została zbudowana z 16 modułów LED 8x8 5mm, rejestrów przesuwnych 74HC595 oraz sterowników ULN2803 - 8 logicznych multipleksowanych wierszy. Całość jest sterowana przez mikrokontroler ATMega32 taktowany kwarcem 11,0592MHz, który komunikuje się z PCtem przez sprzętowy UART (konwerter MAX232). Do wyświetlania tekstu\grafik\animacji napisałem niewielką aplikację w Delphi czytającą pliki BMP, a program dla mikrokontrolera napisany jest w C. Można również w kompilować kilka animacji w program na sztywno i wyświetlać je bez użycia komputera. Panele można ułożyć w prostokąt 64x16 lub kwadrat 32x32.

    Płytki pod panele wykonałem metodą termotransferu, a sterownik jest jeszcze mojej małej, zgrabnej płytce uniwersalnej (z ATMegą32) własnej roboty (planuję jeszcze zaprojektować w Eaglu lepsza płytkę).

    Więcej szczegółów na temat matrycy można przeczytać na moim blogu: http://silent.it.cx/

    Oto kilka zdjęć z budowy:
    Świąteczny wyświetlacz LED 32x32 Świąteczny wyświetlacz LED 32x32 Świąteczny wyświetlacz LED 32x32 Świąteczny wyświetlacz LED 32x32

    Film prezentujący przykładowe animacje:

    Link


    Fajne!
  • #2 15 Gru 2010 08:04
    yogi009
    Poziom 41  

    Bardzo fajny projekt, sporo pracy własnej. Jedyna sprawa, którą można by poprawić, to te wiązki przewodów na warstwie top. W tak zaawansowanym projekcie można się było pokusić o płytkę dwustronną.

  • #3 15 Gru 2010 09:03
    Sh44dow
    Poziom 16  

    Myślałem nad tym i jakbym zamawiał gotową płytkę to na pewno byłaby dwuwarstwowa, ale w przypadku termotransferu i tak musiałbym zrobić te wszystkie przelotki.

  • #4 15 Gru 2010 09:18
    mklos1
    Poziom 25  

    Bardziej eleganckim rozwiązaniem zamiast przewodów byłoby użycie przewlekanych rezystorów 0R, tym bardziej, że na dolnej warstwie zostało sporo miejsca.

    EDIT:
    Jaki jest koszt wykonania?

  • #5 15 Gru 2010 09:53
    shadow0013
    Poziom 34  

    Kiedy zacząłeś realizację świątecznego wyświetlacza, efekt będzie widać jak zamieścisz zdjęcie robione z dworu (proporcje, odległość). Włożyłeś dużo pracy pracy w swój projekt i żeby jej nie zaprzepaścić umieść pliki z projektu dodatkowo na elektrodzie - może ktoś kiedyś będzie chciał skorzystać z Twoich doświadczeń a nic bardziej nie wkurza jak odnośniki na stron które znikły, zmieniły serwery itd. (niestety dużo jest takich na elektrodzie). Jak zrobiłeś biały termotransfer?

  • #6 15 Gru 2010 15:22
    Sh44dow
    Poziom 16  

    Koszt - kupiłem te matryce na allegro po 2,50zł od kogoś kto miał cały karton i chciał się tego pozbyć, do każdej matrycy 2 scalaki za 50gr \ 1,40zł, do tego ponad 1zł na listwy + podstawki, laminat i kilka drutów, jakieś gniazda, taśmy - jeden panel 32x16 wyszedł około 70-80zl plus sporo chęci i wolnego czasu.

    @shadow0013:
    Zacząlem dawno temu, LEDy kupiłem jeszcze w wakacje, ale z powodu braku czasu praca poszła bardzo powoli - jakieś 2-3 tygodnie temu przyśpieszyłem.

    Co do plików, to mam zamiar udostępnić całość jak zrobię dedykowaną płytkę pod sterownik.

    Biały termotransfer? To jest zwykły toner, a biały dlatego, ze zostały na nim resztki papieru ;-).

  • #7 15 Gru 2010 15:28
    Boruc95
    Poziom 9  

    Efekt jak najbardziej ciekawy. Tylko zastanawia mnie czemu wzór płytki na laminacie jest w odbiciu lustrzanym ?

  • #8 15 Gru 2010 16:16
    bobo
    Poziom 28  

    A wracając do rzeczy, proszę autora o podanie zewnętrznych wymiarów tej matrycy.
    Pozdrówka

  • #9 15 Gru 2010 18:53
    FastProject
    Poziom 28  

    Poza tymi przewodzikami, to mi się podoba (osobiście wszystro zrobiłbym w SMD wraz z zworkami SMD).

    Interesuje mnie w jaki sposób przenosisz i generujesz obrazy oraz napisy z komputera do sterownika, oraz w jaki sposób wyświetlasz te grafiki na matrycach...chodzi mi o twoją metodę multipleksu. Jakieś tablice na pewno, ale jak pookładane i w jaki sposób przesyłane i wysyłane do rejestrów)

    I jeszcze pytanie jak myślisz jaką maksymalną rozdzielczość jesteś w w stanie osiągnąć na tym urządzeniu?

    Aaaa i piszesz, że "Panele można ułożyć w prostokąt 64x16 lub kwadrat 32x32" czy ta zmiana wykonuje się w programie automatycznie (jakaś zworka?) czy po prostu masz różne programy dla różnych rozdzielczości?

  • #10 15 Gru 2010 19:50
    Sh44dow
    Poziom 16  

    @Boruc95:
    Płytka z pierwszego zdjęcia była robiona jako pierwsza - po prostu zapomniałem na końcu odwrócić tekstu ;-).

    @bobo
    Moje matryce 8x8 5mm mają chyba około 6cm (chyba 57mm), więc jest to kwadrat o boku około 22,8cm lub prostokąt 45,6cm x 11,4cm.

    Co do przewodów to faktycznie, nie wyglądają zbyt estetycznie, ale jednak zdecydowałem się na jedną warstwę bo i tak są schowane pod matrycami.

    @Daro_Elektronik
    Multipleksowanie wygląda tak, że co przerwanie wpisuję do rejestru linię, zmieniam wiersz i zatrzaskuję. Logicznie jest 8 wierszy i jeden długi rejestr (dla 2 paneli jest to 128 bitów)
    Zapis do rejestrów jest krytyczną częścią i ważne było żeby wysłanie danych do rejestru nie wymagał żadnych ich transformacji, więc ułożyłem pamięć tak, żeby wystarczyło przesuwać wskaźnik o stałą wartość w celu wysłania linii.
    Przykładowo dla jednego panelu tablica wygląda tak: char mem[2][8][8]

    Świąteczny wyświetlacz LED 32x32

    Pierwszy wymiar to strona (o tym później), drugi odpowiada numerowi matrycy a trzeci odpowiada wierszowi w danej matrycy (jeden bajt to jeden 8-diodowy wiersz danej matrycy). I teraz wyświetlając wiersz N, wysyłam do rejestrów po kolei bajty mem[*][i][N], gdzie i=7...0.
    Oczywiście co przerwanie zmienia się N. Zwiększając rozmiar matrycy zwiększam odpowiednio drugi wymiar.

    Zwiększyłem pamięć obrazu dodając drugą "stronę" - procesor odbierając daje od PCta wyświetla ciągle stronę A wpisując nowe dane na stronę B i po zakończeniu odbierania strony zmienia aktywną (wyświetlaną) stronę na B, następne dane wpisuje do A i tak w kółko.
    Jest to szybka metoda nie wymagająca nieefektywnego kopiowania danych z bufora po zapełnieniu przy zachowaniu "ostrego" przeskoku klatek (zapis od razu do pamięci obrazu dałby "rozmytą" animację). RAMu w mikrokontrolerze jest sporo, więc nie trzeba oszczędzać ;-).

    Układ matryc uwzględnaim w programie na PC - czyta bmp do pamięci, odwzorowuje ją (klatkę) na układ pamięci dla mikrokontrolera i wysyła po RS232.

    Co do ilości matryc - trudno mi powiedzieć ile można ich podłączyć w szereg. Do jakiejś dużej ilości przydałby się szybszy procek żeby nadążał z wysyłaniem danych do rejestrów, najlepiej ze sprzętowym USB, bo transfer RS232 też trochę ogranicza. Można też podłączyć kilka równoległych szeregów matryc.

  • #11 16 Gru 2010 10:40
    J_Bravo
    Poziom 27  

    Kilka rzeczy bym zmienił:
    1. Matryce LED zamontuj bez podstawek. Podstawki z czasem przestaną łączyć. Przerabiałem to kilkakrotnie.
    2. Płytkę zaprojektuj tak żeby scalaki były z innej strony niż matryce. W razie czego będzie łatwiej je wymienić.
    3. Płytka 2-stronna albo zaprojektuj ją tak żeby nie było tylu zworek.

    Świąteczny wyświetlacz LED 32x32

  • #12 19 Gru 2010 09:18
    kamil007
    Poziom 12  

    Hey!
    Możesz podpwiedzieć jak się przesuwa taki obraz po matrycy :?:
    Wyświetlić potrafię, ale nie bardzo wiem jak w języku C zrealizować te przesuwanie (lewo , prawo, góra , dół)
    No i efekt choinki z padającym śniegiem. Jak to jest zrobione :?: :?: :?:
    Masz parę klatek (tablic) i je cyklicznie odtwarzasz, coś ala GIF :?:

  • #13 19 Gru 2010 14:08
    Sh44dow
    Poziom 16  

    Dokładnie tak. W przypadku animacji mam bitmapę w której klatki są ułożone jedna po drugiej z góry na dół i program po kolei wysyła je do sterownika. Jeśli mam jakąś szeroką bitmapę (np. napis "wesołych świąt"), ustawiam w programie tryb przesuwania w wybranym kierunku - wysyłane są po kolei odpowiednie kwadraty (prostokąty), np. dla 32x32 i przesuwania w lewo - [1,1,32,32], [2,1,33,32], [3,1,34,32] itd.
    Sam sterownik ma obsługę kilku komend - czyszczenie ekranu, ramka 64B (32x16) i ramka 128B (32x32 lub 64x16). Jest też miejsce na polecenia "przesuń w lewo\prawo\górę\dół", ale nie miałem jak na razie potrzeby ich implementować bo szybciej zrobi to komputer (jedynie "lewo" dla 32x16 do pierwszych testów).
    Jeśli chciałbym wkompilwoać w program jakąś przesuwającą się grafikę to musiałbym dopisać przesuwanie w lewo (ze wstawianiem nowej kolumny z prawej strony), w programie zrobić np. jakąś stałą tablicę z obrazem i cyklicznie przesuwać obraz w lewo i wstawiać kolejna kolumnę.

    Co do efektu padającego śniegu to zrobiłem taki trik: narysowałem w paincie śnieg (32x64 żeby wzór się aż tak często nie powtarzał, może być dłuższy). Żeby wyświetlić sam padający śnieg wystarczyłoby włączyć przewijanie tego obrazu w dół ale jest jeszcze choinka, więc potrzeba zrobić z tego pojedyncze klatki. Napisałem więc na szybko programik który skopiował z niej pierwszy kwadrat 32x32 na dół tworząc obraz 32x96 (chodzi o to, żeby był cykliczny) a następnie skopiował po kolei kwadraty [1,1,32,32], [1,2,32,33] (co raz niższe) do nowej bitmapy układając je z góry na dół. Na końcu wstawiłem na każdą klatkę choinkę z białym wypełnieniem i przeźroczystym tłem i gotowe.

  • #15 26 Gru 2010 16:53
    Sh44dow
    Poziom 16  

    To nie złudzenie - niestety dostałem nieposortowane matryce i każda ma inna jasność (w dodatku na dwóch albo trzech są ciemniejsze punkty) -zapewne dlatego były tak tanie ;-).
    Do sterowania jasnością przydałby się szybszy procesor - ilość danych zwiększyła by się 8- lub 16-krotnie w zależności od liczby odcieni.
    Próbowałem nawet ostatnio coś pokombinować z jasnością, ale przy tak zróżnicowanych matrycach efekt był marny. Jak mi się zechce to jeszcze do tego wrócę, może coś z tego wyjdzie.

  • #16 29 Gru 2010 18:07
    don_kovalos
    Poziom 9  

    Sh44dow

    Można prosić o schemat elektryczny?

    Zakupiłem 5x7 dot-matrix led ze wsp. katoda i zastanawiam się jak to podłączyć do ULN i 74HC595. Widać, ża masz odwrócone matryce o 90st. na panelach tak, że kolumy matrycy stały się wierszami całego wyświetlacza.
    1. Czyli ULN steruje wierszem panela(KATODA), a rejestry kolumnami panela(ANODA) (odwrotnie niż pojedynczej matrycy) ?
    2. Czy nie można było zastsować jednego ULN do sterowania wiersza całego panelu (czyli czterech matryc) ?
    3. Nie widzę żadnych rezystorów ograniczających prąd

  • #17 29 Gru 2010 20:18
    Sh44dow
    Poziom 16  

    Na stronie mam gdzieś poglądowy schemat.
    Jeden panel 32x16 to jest logiczne 64x8. Rejestry z ULNami (1 ULN do każdego rejestru ze względu na niską wydajność prądową 74HC595) sterują kolumnami (katodami), a wierszami steruje 8 tranzystorów, których nie ma płytce z LEDami - są na płytce sterownika (ULN może nie pociagnąć dłuższego szeregu).

  • #18 30 Gru 2010 12:23
    don_kovalos
    Poziom 9  

    Tak sie zastanawiam czy nie można byłoby przedłużyć rejestru (w pojedynczym panelu) o jeszcze jeden układ 74hc595 (+ Tranzystor do każdego wyprowadzenia), który sterowałby multiplexowo wierszem. Wtedy mikrokontroler steruje tylko długim rejestrem.

  • #19 30 Gru 2010 13:54
    Sh44dow
    Poziom 16  

    Można, ale wtedy przełączanie wierszy trwało by trochę dłużej. Mam dużo wolnych wyjść, więc nie muszę oszczędzać ;-).

  • #20 02 Sty 2011 14:18
    Kuba-Wiśnia
    Poziom 8  

    Czy to są wyświetlacze R, czy RG, o kolory mi chodzi. Czy są takie RGB ?

  • #21 02 Sty 2011 16:04
    Sh44dow
    Poziom 16  

    Moje są niestety tylko czerwone.
    Bez problemu można kupić R/G lub R/G/B, tylko są nieco droższe.

  • #22 03 Sty 2011 14:31
    don_kovalos
    Poziom 9  

    Można jednak prosić o schemat elektryczny np z Eagle'a ? Jeśli wiersze obługują tranzystory pnp np BC557, a kolumny ULN + rejestr '505 to uzyskuję różną jasność w zależności od ilości zapalonych diod w wierszu.

  • #23 03 Sty 2011 21:59
    Sh44dow
    Poziom 16  

    schemat poglądowy jest tutaj:
    http://silent.it.cx/home/2010/09/26/w-budowie-matryca-led-64x16/

    U mnie też spada jasność po zaświeceniu większej ilości diod w rzędzie, ale to zapewne przez tranzystory sterujące wierszami - aktualnie mam tam jakieś małe, chyba do 200-300mA i planuje je wymienić na cos "większego", wtedy powinno byc OK.

  • #24 14 Sty 2011 21:48
    kamil007
    Poziom 12  

    Słuchaj, a jak sie robi taki programik do zmiany bitmapy na taką mapę pixeli??
    Bo to mi spędza sen z powiek :D
    Wczytujesz sobie bitmapkę, przerabiasz na monochromatyczną, czytasz linie po lini i co dalej :?:

  • #25 15 Sty 2011 13:30
    Sh44dow
    Poziom 16  

    kamil007 napisał:
    Słuchaj, a jak sie robi taki programik do zmiany bitmapy na taką mapę pixeli??
    Bo to mi spędza sen z powiek :D
    Wczytujesz sobie bitmapkę, przerabiasz na monochromatyczną, czytasz linie po lini i co dalej :?:


    W Delphi jest gotowa klasa do obsługi bitmap. Wczytuję bitmapę i robię z niej (z całej lub z fragmentu który jest obecnie wyświetlany) tablicę wartości logicznych (1/0) o wymiarach wyświetlacza (32x32 \ 64x16) dla wygodniejszego operowania na danych. Wartość TRUE oznacza zaświeconą diodę. Podobnie z generowaniem tekstu - generuję tekst na bitmapie z pliku czcionki przenoszę klatkę do tablicy z wartościami logicznymi.
    Następnie przemapowuję tą tablicę na układ danych w pamięci sterownika i je wysyłam.

  • #26 15 Sty 2011 16:09
    kamil007
    Poziom 12  

    Cytat:
    Następnie przemapowuję tą tablicę na układ danych w pamięci sterownika i je wysyłam.

    Nie wiem czy dobrze rozumię ,ale chyba z tym mam własnie problem.
    Bo taką tablice wartości logicznych 1/0 potrafię zrobić, tylko własnie nie wiem jak ją przerobić na taki format jak potrzebuję. :| Czyli z wartości np: 1,1,1,0,0,1,1,1
    zrobić 0xE7

  • #27 15 Sty 2011 16:11
    Sh44dow
    Poziom 16  

    W jakim języku piszesz? Pokaż jak masz zdefiniowaną swoją tablicę.

    Zamiana liczby binarnej na szesnastkową jest bardzo prosta.

  • #28 15 Sty 2011 16:13
    kamil007
    Poziom 12  

    Pisze to mocno powiedziane :D
    C++ Builder

  • #29 15 Sty 2011 16:17
    Sh44dow
    Poziom 16  

    Skoro C++ to zapewne jest to np. bool t[8], prawda?

    Chcąc zamienić 8 wartości logicznych na 1 8-bitową liczbę (bajt) można to zrobić np. tak:

    Code:

    char bajt=0;
    for(int i=7; i>=0; --i)
    {
     if (t[i]) bajt+= (1 << i);
    }

  • #30 15 Sty 2011 21:19
    kamil007
    Poziom 12  

    heh , wielkie dzięki naprowadziłeś mnie "chyba" na właściwe tory :D

    Dodano po 4 [godziny] 38 [minuty]:

    No fajnie działa :D .
    Tylko jak teraz tego char wyświetlić w hex, bo teraz wyświtla ładne krzaczki:|

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME