logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Tablica diodowa 126x15 sterowana z PC

KJ 09 Cze 2005 00:20 59641 87
  • 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.
    Załączniki:
    • Tablica diodowa 126x15 sterowana z PC pcb.JPG (177.47 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC DSCN0009.JPG (70.83 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC dog.JPG (64.16 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC elektroda.JPG (59.26 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC graf.JPG (110.91 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC 1.JPG (184.25 KB) Musisz być zalogowany, aby pobrać ten załącznik.
    • Tablica diodowa 126x15 sterowana z PC tyl.JPG (183.39 KB) Musisz być zalogowany, aby pobrać ten załącznik.

    Fajne? Ranking DIY
    O autorze
    KJ
    Poziom 31  
    Offline 
    Specjalizuje się w: mikrokontrolery, cewki tesli
    KJ napisał 2370 postów o ocenie 945, pomógł 68 razy. Mieszka w mieście Mikołów. Jest z nami od 2001 roku.
  • #2 1562709
    lechoo
    Poziom 39  
    Posty: 5161
    Pomógł: 377
    Ocena: 546
    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 1563038
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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ść.
  • #4 1565789
    lechoo
    Poziom 39  
    Posty: 5161
    Pomógł: 377
    Ocena: 546
    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 1566140
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1635248
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1635622
    IronReiker
    Poziom 23  
    Posty: 843
    Pomógł: 9
    Ocena: 22
    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 1635804
    tomaszo
    VIP Zasłużony dla elektroda
    Posty: 4358
    Pomógł: 139
    Ocena: 100
    Analizator widma - to jest prawdziwe zastosowanie dla tej matrycy! Mam nadzieje, ze przedstawisz wyniki :)
  • #9 1635901
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    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 1636211
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1636623
    Marcin_126
    Poziom 16  
    Posty: 266
    Ocena: 6
    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 1636798
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    a tak z ciekawosci ile kosztuje telebim diodowy i czy jest wytrzymaly ??
  • #13 1636942
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1636951
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    wytrzymaly tnz ze nei robia sie bad pixele Bo jednak taka dioda miga kilkadziesiat razy na sek.
  • #15 1637029
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1637054
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    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 1637070
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1637074
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    chce sprobowac ale zobaczymy czy znajde jakies schematy itp bo sam napewno nie zaprojektuje.
  • #19 1637454
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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<
  • #20 1637765
    dafit906
    Poziom 27  
    Posty: 1101
    Pomógł: 91
    Ocena: 515
    masz może schemat tego?
  • #21 1644173
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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 1656678
    Tomcio7
    Poziom 17  
    Posty: 297
    Pomógł: 8
    Ocena: 19
    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 1656718
    plik4
    Poziom 26  
    Posty: 1021
    Pomógł: 61
    Ocena: 12
    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 1656879
    Marcin_126
    Poziom 16  
    Posty: 266
    Ocena: 6
    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 1657375
    KJ
    Poziom 31  
    Posty: 2370
    Pomógł: 68
    Ocena: 945
    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ć :(
    Załączniki:
    • Tablica LED.zip (391.31 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #26 1670360
    androot
    VIP Zasłużony dla elektroda
    Posty: 1801
    Pomógł: 54
    Ocena: 635
    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 1671102
    krzycho123
    Poziom 31  
    Posty: 1867
    Pomógł: 135
    Ocena: 106
    KJ napisz może ile Cię to wyniosło ? Bo jestem bardzo ciekawy. A i jeszcze w jakim języku oprogramowałeś ATmelka. Pozdro
  • #28 1671143
    androot
    VIP Zasłużony dla elektroda
    Posty: 1801
    Pomógł: 54
    Ocena: 635
    W przedszkolu nauczylem sie takiej przydatnej rzeczy jak czytanie ze zrozumieniem i Tobie "krzycho123" tez proponuje sie nauczyc ;-) Autor wyraznie napisal, ze ok. 300zl i programuje w Bascomie na AVR!!
  • #29 1683172
    mrq80
    Poziom 15  
    Posty: 57
    Pomógł: 15
    Do Autora projektu:
    Możesz dokładniej opisać sposób konwersji z programu Swish do formatu matrycy.
  • #30 1685402
    Marcin_126
    Poziom 16  
    Posty: 266
    Ocena: 6
    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ć :(

Podsumowanie tematu

✨ Projekt tablicy diodowej o wymiarach 126x15 oparty jest na mikrokontrolerze AVR Atmega32 taktowanym kwarcem 22,1184 MHz, co umożliwia bezbłędną komunikację UART z komputerem przez port COM z prędkością 115200 bps. Sterowanie matrycą realizowane jest za pomocą rejestrów zatrzaskowych 74HC574 połączonych równolegle i demultipleksera 74HC154, który wybiera linie wierszy. Zastosowano tranzystory PNP BD912 i BC557 w układzie Darlingtona do sterowania liniami, a rezystory ograniczające prąd diod mają wartość 100 Ω. Multipleksowanie odbywa się po liniach (wierszach) z wypełnieniem 1/16, co pozwala na uzyskanie odpowiedniej jasności świecenia. Oprogramowanie napisane jest w Bascom AVR, a animacje i obrazy statyczne tworzone są poprzez konwersję z programów takich jak Swish do formatu bitmap matrycy. Projekt umożliwia wyświetlanie dynamicznej, płynnej grafiki oraz realizację funkcji takich jak analizator widma i oscyloskop. Wersja z komunikacją USB wykorzystuje układ FT232. Dyskusja poruszała także kwestie rozszerzenia matrycy, sterowania kolorami RGB (wymagające znacznie większej złożoności i przepustowości danych), oraz porównania kosztów i trwałości gotowych telebimów diodowych. Autor udostępnił schematy i filmy prezentujące działanie matrycy, jednak oprogramowanie pozostaje własnością pracy inżynierskiej i nie jest publicznie dostępne. Wymieniono także alternatywne układy i metody sterowania, takie jak rejestry szeregowe 74HC595, multipleksowanie w przerwaniach oraz różne metody regulacji jasności diod (PWM, źródła prądowe). Dyskusja zawierała również informacje o dostępności matryc LED na rynku, ich cenach oraz ograniczeniach widoczności w pełnym słońcu.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA