Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Tablica diodowa 126x15 sterowana z PC

KJ 09 Jun 2005 00:20 58900 87
Altium Designer Computer Controls
  • Chciałem przedstawić moje najnowsze dzieło, jakim jest matryca diodowa. Inspiracją do zbudowania urządzenia była jedna z prac dyplomowych znajdujących się w mojej szkole tyle, że tamta zabawka zawiera 7680 dwukolorowych LEDów (120x64). Matryca została oparta o procesor AVR atmega32 wybrałem taki ze względu na sporą ilość pamięci programu oraz RAM a także na wydajność. Procesor pracuje z taktowaniem 22,1184 MHz ponieważ ta częstotliwość umożliwia rozwinięcie maksymalnej prędkości uart-a z zerowym błędem. Matryca komunikuje się z komputerem przez port COM z prędkością 115200bps ta prędkość w zupełności wystarcza do wyświetlania dynamicznej płynnej grafiki. Struktura samej tablicy jest następująca: Linie załączane są przez mocarne tranzystory pnp pracujące w układzie darlingtona główne to BD912 sterujące to BC557 włożyłem tranzystory mocy z bardzo dużym zapasem ponieważ różnica w cenie była nieznaczna. Klucze te są sterowane procesorem za pomocą demultipleksera 74HC154 co pozwala zaoszczędzić wyprowadzeń i uprościć sterowanie z poziomu programu. linie sterowane są przez 16szt ULN2803 i 16 zatrzasków 74HC574 jak widać magistrala danych w matrycy jest równoległa a nie szeregowa jak to się zwykle spotyka. Odpowiadające sobie wejścia danych zatrzasków zostały połączone równolegle przez całą matrycę biegnie więc 8 linii danych zajmujących cały port A procesora liniami tymi następuje wpis danych do poszczególnych zatrzasków. Przełączanie zatrzasków realizuje drugi demultiplekser 74HC154 podłączony do odrębnego portu niż ten od przełączania linii. Dlaczego ? Takie rozwiązanie z punktu widzenia programu jest najlepszym, ponieważ wystarczy tylko inkrementować zmienną i wystawiać ją na port, aby uzyskać przełączanie po kolei multipleksera gdyż oba dołączone są do czterech młodszych bitów nie narzekam na brak wyprowadzeń, więc mogłem sobie na taki manewr pozwolić. W sumie wystarczyło mi 16 linii procesora do wysterowania 1890LEDów. Gdybym zastosował rejestry przesuwne wyszłoby mniej i wydaje mi się, że to właśnie jest powód, dla którego większość tego typu urządzeń, jakie spotkałem pracuje z magistralą szeregową. Do wyjść drugiego demultipleksera dołączone są wejścia zegarowe zatrzasków. wejścia OE zatrzasków połączone są równolegle i także dołączone do procesora co pozwala na wygaszenie całej linii na czas transmisji. Wejścia te są na płytce podciągnięte rezystorem do Vcc tak samo potraktowałem jedno z wejść EN demultipleksera sterującego liniami. Jak wiadomo pinyAVRa w trakcie resetu czy programowania ustawiają się w stan wysokiej impedancji co powoduje zablokowanie wszystkich tranzystorów linii oraz wyjść kolumn dzięki czemu nie nastąpi uszkodzenie diod LED w skutek braku multipleksacji. Zasilanie stanowi kompletny zasilacz od komputera wykorzystałem tylko linie 5V oraz 3.3V 3.3 V jest przełączane programowo z 5V dla zasilania diod, co umożliwia przygaszenie matrycy. To tyle jeśli chodzi o sprzęt. Oprogramowanie procesora powstało w bascomie AVR jego rola na razie ogranicza się do odbierania danych z kompa i odświeżania ekranu w przyszłości ma on zawierać generator znaków. Cała zawartość ekranu mieści się w pamięci ram i tam jest zapisywana oraz stamtąd odczytywana podczas odświeżania ekranu w sumie program to dwie procedury przerwań jedna od uart-a ta zapisuje dane do ram druga to przerwanie od timera które odświeża ekran. Soft na PC powstał w Visual Basic-u i składa się z dwóch elementów jeden to konwerter do robienia plików zawierających gotowe animacje wraz z nagłówkiem zawierającym informacje o ilości bajtów w pliku z ciągu bitmap zawierających kolejne klatki, drugi to program wysyłający te pliki przez port szeregowy w tym miejscu należą się wielkie podziękowania dla kolegi o nicku SIVEX bez którego pomocy w dziedzinie Visual Basic-a programy na PC prawdopodobnie by nie powstały. Cały projekt kosztował mnię około 300zł. Dołączam fotki większość powstała w trakcie pracy :D
    Ten mały moduł który widać na kilku fotkach to "przelotka" z DIP24 na SMD nie dało się nigdzie dorwać 74HC154 w zwykłej obudowie :( drugi pochodzi z zapasów.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    KJ
    Level 31  
    Offline 
    Has specialization in: wysokie napięcia, mikrokontrolery, cewki tesli
    KJ wrote 2330 posts with rating 910, helped 68 times. Live in city Mikołów. Been with us since 2001 year.
  • Altium Designer Computer Controls
  • #2
    lechoo
    Level 39  
    Ogólnie cała konstrukcja mi się podoba, pozwolę sobie jednak na kilka uwag, mam też kilka pytań.

    Rejestry 74HC574 mogłeś połączyć kaskadowo, tworząc rejestr przesuwny szeregowo-równoległy, wtedy niepotrzebny byłby drugi demultiplekser 74HC154, wejścia zegarowe wszystkich rejestrów byłyby wtedy sterowane jednocześnie jednym sygnałem CLK. Nie musisz dodatkowo wygaszać wierszy na czas transmisji przy pomocy wejść OE rejestrów, gdyż to samo można uzyskać wyłączając napięcie zasilające anody. Natomiast zamiast tego kłopotliwego 74HC154 mogłeś użyć 2x 74HC138.

    Jakie masz wartości rezystorów ograniczających prąd diod LED w matrycach? Jaka jest częstotliwość multipleksowania w Twojej tablicy? Mierzyłeś pobór prądu z zasilacza przy zapalonych wszystkich diodach?
  • #3
    KJ
    Level 31  
    Nie chciałem robić kaskadowo gdyż takie połączenie jak jest jest wygodniejsze z w oprogramowaniu. Co do 74hc154 nie myślałem ze będą z nim jakiekolwiek problemy przelotka jest bo jak się okazało że dostanę tylko w SMD to miałem już wytrawioną i częściowo zmontowaną płytkę. Rezystory w kolumnach mają 100Ohm matryce są dość dobrej jakości więc świecą wystarczająco jasno. Odświeżanie trudno mi powiedzieć ile jest Hz bo program powstał w bascomie gdyby był ASM można by policzyć cykle maszynowe i wyznaczyć ale w bascomie nie bardzo. Odświeżanie jest jednak na tyle szybkie że nie widać żadnego migania jakie można zaobserwować czasem na tablicach w autobusach. Nie mierzyłem poboru prądu z zasilacza ale nie będzie on jakiś niesamowicie wielki ponieważ rezystory w kolumnach mają dość sporą wartość.
  • Altium Designer Computer Controls
  • #4
    lechoo
    Level 39  
    To nie zrobiłeś multipleksowania w przerwaniach?
    Ogólnie zasadą stosowania mikrokontrolerów jest przecież minimalizacja części sprzętowej i przerzucenie wszystkiego co się da na oprogramowanie. Ja nie widzę niczego skomplikowanego w sterowaniu taką kaskadą rejestrów, kiedyś robiłem coś podobnego - wystawiamy kolejne bajty na port, zaś zapisu każdego bajtu do rejestrów dokonujemy pojedyńczym impulsem na linii CLK wszystkich rejestrów.
  • #5
    KJ
    Level 31  
    Hmmm o tym faktycznie nie pomyślałem. Moja idea wpisywania danych była inna projekt jest w całości autorski i spełnia moje oczekiwania a przy takiej ilości elementów jeden scalak więcej czy mniej nie robi różnicy. Komplikuje się jedynie sposób połączenia clk do płytki z procesorem. Tak jak ty piszesz faktycznie też można było prosto zrealizować i oprogramować moja idea wydawała mi się lepsza więc zrobiłem po mojemu może następnym razem zrobię inaczej ;)
  • #6
    KJ
    Level 31  
    Dołączam krótki filmik, teraz dopiero można zobaczyć co tak naprawdę ta zabawka potrafi. Prezentacja dla matrycy została wykonana w programie Swish a potem przekonwertowana na animację dla matrycy. Trochę to waży ale niestety nie dało się bardziej skompresować :( (Filmik zakodowany DivX-em). Obecnie zakończyłem wstępne prace nad generatorem znaków. Następnym celem jest analizator widma :D


    http://www.games.bmj.pl/uza/uploadc2/matrycagraf.avi


    TEN LINK RÓWNIEŻ DO POPRAWKI >Kwaczor<
  • #7
    IronReiker
    Level 23  
    Takiego efektu sie nie spodzewałem!! naprawde bardzo płynna grafika!! gratluje. może kiedys w przyszłoścji cos takiego zaczne robić. teraz wiem do kogo sie zgłośić :P
    pozdro
  • #8
    tomaszo
    VIP Meritorious for electroda.pl
    Analizator widma - to jest prawdziwe zastosowanie dla tej matrycy! Mam nadzieje, ze przedstawisz wyniki :)
  • #9
    plik4
    Level 26  
    scagnolem sobie filmik i powiem bardzo efektownie to pracuje widziel juz takie matryce tylko ni ebylo to tak plynnie. Aha a mam tez pytanie jak mozna powiekszyc taka matryce ?? I zrobic kolorowa sa teraz diody RGB wiec i kolory by dalo uzyskac. Wyszedl by telebim.
  • #10
    KJ
    Level 31  
    Oczywiście że da się zrobić kolorową ale to już układ 3 razy bardziej złożony dla tego rozmiaru i 3 razy więcej danych do wysłania com raczej nie wchodzi w grę bo już tutaj pracuje na granicy wydajności. Powiększyć łatwo wystarczy dać więcej linii multiplexera i więcej zatrzasków. Nie widzę sensu budowania telebimu bo koszta będą ogromne i kto wie czy nie przewyższą kosztów kupna telebimu w formie gotowej :D a poza tym gdzie ja bym to zawiesił ;)
  • #11
    Marcin_126
    Level 16  
    Analizator widma na tym wyświetlaczu to by było coś, chociaż i tak z samych zdjęć już wygląda imponująco.
    Sam kiedyś zbudowałem "podobny" wyświetlacz (tzn. trzy matryce czyli 8 * 15 punktów i do tego tylko na kościach TTL + RAM 6116) ale niestety nie zadziałało :)
    Zastanawia mnie twój kwarc, pracowałem przy prędkości transmisji 115kbit/s z mniejszym kwarcem (był to ATMEGA 16) i nie było problemów.
  • #12
    plik4
    Level 26  
    a tak z ciekawosci ile kosztuje telebim diodowy i czy jest wytrzymaly ??
  • #13
    KJ
    Level 31  
    Telebim diodowy kosztuje baaardzo dużo taniej chyba wyjdzie zbudować projektor na bazie LCD z monitora :D Wytrzymały ? W jakim sensie ? Co do kwarcu to zmieniłem go na 14.7456MHz przy 22 procesor był nieco przetaktowany i zdarzały się dziwne zachowania :D Taki kwarc w zupełności wystarcza.
  • #14
    plik4
    Level 26  
    wytrzymaly tnz ze nei robia sie bad pixele Bo jednak taka dioda miga kilkadziesiat razy na sek.
  • #15
    KJ
    Level 31  
    Nie jestem pewien ale wydaje mi się że nie ma ekranu na którym na 100% nigdy nie pojawią się badpixele no może CRT ale jak wiadomo kineskop także się wypala. Wydaje mi się że w telebimie badpixel to kwestia wymiany diodki lub grupy diod nie wiem jaka dokładnie jest konstrukcja tego.
  • #16
    plik4
    Level 26  
    ja mam flatron 19 cali i nie ma bad-pixeli :P muszem sie cos dowiedziec aby zrobic takii telebim na poczatek maly ale pozniej z nich mozna zlozyc wiekszy.
  • #17
    KJ
    Level 31  
    Chcesz tym sterować z wyjścia karty graf. ? Możesz spróbować ;) ale od razu zaznaczam że to przedsięwzięcie na miarę zrobienia własnego monitora LCD ...
  • #18
    plik4
    Level 26  
    chce sprobowac ale zobaczymy czy znajde jakies schematy itp bo sam napewno nie zaprojektuje.
  • #19
    KJ
    Level 31  
    Tu są filmiki umieszczone na zewnętrznym serwerze a więc bez punktów :D Załapałem się dzięki koledze na odrobinę miejsca na porządnym serwerku :D Te linki muszą działać :D

    http://www.games.bmj.pl/uza/uploadc2/textmoded.avi - Tryb textowy

    LINK NIEAKTYWNY. PLIK NIE ISTNIEJE. PROSZĘ TO POPRAWIĆ >Kwaczor<
  • #21
    KJ
    Level 31  
    No i stało się ;) Analizator na matrycy został popełniony przy współpracy z kolegą :) Mam nadzieję że będzie chodził :D Nie jest zbyt idealny, ponieważ plugin którym czytamy dane z winampa podaje dane, które nie prezentują się zbyt ciekawie. Plugin to VbLink, może ktoś zna ciekawszy plugin tego typu ? Teraz pracujemy nad oscyloskopem :) Postanowiłem w niedalekiej przyszłości wyrzucić tu schematy i soft :) W niedalekiej przyszłości bo trzeba jeszcze co nieco w sofcie dopracować i zebrać wszystko do kupy.
  • #22
    Tomcio7
    Level 17  
    Nie moge sie doczekac kiedy wrzucisz tutaj te schematy. Ja planuje na poczatek zrobic tablice dwukolorowa 8x80, juz wiem jak to zrobic, ale chce zobaczyc czy mozna cos w lepszy sposob zrobic. czekam na schematy
  • #23
    plik4
    Level 26  
    tak piszesz dwu kolorowa a dodanie trzeciego koloru to taki problem ?? hehe a powiekszenie jak pisal KJ neijes t jakies tudne. Wiec jak ktos wpadnie na pomysl jak zrobic trzy kolory i mieszac je w 16,7 mln kolorów to powiekszenie nie bedzie jakies strasznie trudne.
  • #24
    Marcin_126
    Level 16  
    Po filmiku widać że tablica ma świetną reakcję.
    Ten plugin do winampa jest rzeczywiście jakiś lipny.
    Był tamat na forum gdzie wykorzystany został fajny plugin do sterowania kolorofonu nazywał się chyba DiscoLitez.
  • #25
    KJ
    Level 31  
    Discolitez odpada :/ To wysyła dane na LPT i służy do całkiem czego innego :D Swoją drogą bardzo dobra rzecz na imprezy :) Trzeba by rozgrzebać plugin który jest razem z discolitezemPRO bo on działa na podobnej zasadzie. Co do zrobienia 3 kolorów i mieszania ich w 16,7 mln to jest już zagadnienie bardzo ale to bardzo złożone tak mi się przynajmniej wydaje bo wymaga niezależnego sterowania jasnością każdej diody a nie tylko jej zapalania i gaszenia. Zapalając i gasząc poszczególne kolory RGB uzyskasz 16 kolorów co najwyżej. Teoretycznie moja matryca jest w stanie wyświetlić obraz w kilku może nawet kilkunastu odcieniach (regulacja jasności każdej diody metodą PWM) Możliwe ale bardzo trudne walczę z tym już bardzo długo i nie jestem w stanie napisać odpowiedniego softu na procek. Jeśli się uda to spadnie mi maksymalna ilość klatek na sekundę ale zamierzam to raczej wykorzystać do obrazów statycznych niż do animacji powód ?? Przy 4 poziomach jasności danych dla jednej klatki będzie 4 razy więcej a więc przy tej samej prędkości transmisji com-em wyśle 4 razy mniej klatek na sekundę :( Szybciej się nie da (przynajmniej po COM-ie) Może zaimplementuje w tym TCP/IP i wepnę do swith-a :D a dane będę wysyłał pod odpowiedni IP w sieci :D Trochę przesada ale za to można by tym sterować z dowolnego miejsca na świecie :D Schematy i płytki w protelu może jutro :D

    Wyrobiłem się jeszcze dziś :) Na razie tylko schematy i PCB soft ma jeszcze wady :( Jeśli komuś przeszkadza że w Protelu to chętnie nauczę się konwertować z niego na inny format zwłaszcza PCB tak aby miały właściwe wymiary po wydruku a nie jak po "drukowaniu" do PDF a były nieco mniejsze bo niestety nie potrafię tego zrobić :(
    Attachments:
  • #26
    androot
    VIP Meritorious for electroda.pl
    Przeczytalem z uwaga, bo sam zrobilem cos takiego na Prace Dyplomowa w technikum 3 lata temu ;) Moja matryca miala wysokosc 7 diod i szerokosc 18 matryc obok siebie. Mialem taka gotowa z demobilu, dorabialem tylko sterownik. Obslugiwane bylo poprzez 11 albo 12 lini i dosc dziwnie sie tym sterowalo... (musialem to "ugryzc" na podstawie recznie odrysowanego schematu z tej plyty). Matryce byly pogrupowane po 3, a wiec bylo 6 grup. W kazdym ulamku sekundy swiecila sie 1 z 15 kolumn. rezystory mialy wartosci 33om.
    Sterownik zrobilem na AT89C2051 kwarc 12MHz, jedyne czego brakowalo to pamieci RAM na bufor wyswietlacza... Program napisalem w ASM i wykorzystalem przerwanie od licznika. Odswierzanie bylo cos kolo 1kHz, bo taka byla czestotliwosc pisku calej matrycy ;) (nie wiem co piszczalo :P diody?, sciezki?). Oczywiscie zaglosowalem, bo projekt jest naprawde super!!
  • #27
    krzycho123
    Level 31  
    KJ napisz może ile Cię to wyniosło ? Bo jestem bardzo ciekawy. A i jeszcze w jakim języku oprogramowałeś ATmelka. Pozdro
  • #29
    mrq80
    Level 15  
    Do Autora projektu:
    Możesz dokładniej opisać sposób konwersji z programu Swish do formatu matrycy.
  • #30
    Marcin_126
    Level 16  
    A ja powiem że chciałem odtworzyć moją dawną konstrukcję (oczywiście w nowszej wersji czyli między innymi na procku).
    Idąc za radą kolegów chciałem zastosować rejestry szeregowe (coś jak w projekcie w EP) i okazuje się że 74164 nie można nigdzie dosać :(