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

led'owa matrycka

MarcinPopiel 18 Lut 2009 12:51 4352 28
  • #1 6167636
    MarcinPopiel
    Poziom 10  
    Temat jak rzeka , a i powtórzył się niezliczoną ilość razy , ale nigdzie nie znalazłem takiego "czystego" obrazu sytuacji . Zawsze były jakieś pytania . Może ktoś w stanie mi pomóc ?

    Otóż zaczynam kolejny projekt , którym ma być w/w i tak około 8 na 32 diód ( szefostwo może domagać się większej ilości , ale z zamierzenia chce zrobić w miarę uniwersalny sterownik zarówno na PC jak i uC ). Diody maja byc R-G więc bedzie dwa razy wiecej katod.Otóż naczytałem się trochę , trochę potestowałem a teraz czas na rozsądne zakupy i kolejne pytania :

    Do tego momentu sterowanie jedną 8 na 8 jednokolorowa robiłem w sposób następujący : Anody miałem zwarte bezpośrednio do nóżek ATmega16 , natomiast katody do układu ULN2803A sterowanego rejestrem przesuwnym 595.

    Teraz jak wykonać to bardziej profesjonalnie ? Myślałem , żeby wyjściami uC sterować tranzystorami p-mos które zwierałyby anody z VCC natomiast ,żeby katodami zajoł się jakiś driver . "16-kanałowy LED driver, 5-90mA/5V, P-DIP24-300-2.54, RoHS" -MBI5026GN : układ ze strony maritex wydaje się np całkiem obiecujący . Czy katody diód w takim przypadku miałbym zewrzeć bezpośrednio do wyprowadzeń takiego układu ? I jak w takim przypadku dobrać rezystor ustalający prąd ? ( z tego co się doczytałem , to w tego typu driverach właśnie jeden rezystor załatwia sprawę prądu na wszystkich wyprowadzeniach ) . A sam układ działa jak shift-register więc połączyłbym takich 4 ( 16 wyprowadzeń przypadnie na jedna 8na8 dwukolorowa ).

    Co do samej matrycy to myslę o tych większych wersjach . Na tej samej stronie jest
    http://www.maritex.com.pl...ucts/ggid/11494 : LTM2388RGS-AMGW : "Matryca LED, 2-kolorowa, czerwona/zielona, superjasna, 2.3" (60.2x60.2mm), 8x8, szare tło, dyfuzyjna, wspólna anoda, RoHS" .

    Sterowanie pewnie ATmega16/32/8 ( zobaczę co dostane :) ) , i będę wdzięczny za wszelaką dyskusje +/- takiego rozwiązania ( o ile jest możliwe ) . Pomóżcie , proszę rozwiać wątpliwości z pradem w przypadku z takim driverem , a może zastosować inny driver ? A może wogóle takie rozwiązanie jest niegodne ? Czy w przypadku diod R-G będę musiał multipleksować kolumny ? Bo w końcu kolor pomarańczowy zwiera dwie katody ...

    Dzięki , i pozdrawiam !
  • #2 6168710
    Kuniarz
    Moderator Projektowanie
    Ech, faktycznie temat rzeka, wałkuję coś takiego aktualnie... Na chwilę obecną mam 8x40 jednokolorowych LEDów, sterowanie multiplekserowe, kolumny sterowane 74164, wiersze z Atmegi, tranzystory tu i tam. Działa w końcu, ale nie ma pełnej jasności i jakośtak mruga trochę...
    Na chwilę obecną skłaniam się ku MBI5026, ale, chyba inaczej niż logika nakazuje, bo mam w planie użycia 20 sztuk ( w końcu nie są BARDZO drogie) i sterować statycznie każdą diodką.

    To tak w temacie luźnych sugestii ;-)
    Pomogłem? Kup mi kawę.
  • #3 6169930
    MarcinPopiel
    Poziom 10  
    Więc w zadzie różnić się będziemy ilością diód . Do tego układu obrazu zwierać katody ? :) Logika jest zanegowana więc w rejestr będziemy wrzucać '1' . I zasadnicze pytanie , to jak dobierałeś wartość prądu ? Wkońcu raz świecić się może jedna , a raz wszystkie diody ....

    A czy jest ktoś w stanie napisać czy idea opisana przeze mnie ma prawo bytu ? I szczerze prosiłbym odpowiedzi na pytanie które mnie strasznie dręczą , i pewnie dręczyć będa do momentu aż ktoś się zlituje :)
  • #4 6170514
    marenc
    Poziom 24  
    Link

    Długo nie szukałem... Kompletny schemat. Co najmniej sama macierz LED'ów powinna się przydać. Jeżeli robisz wyświetlacz 32 kolumny i 8 wierszy, to dobrze by było wyświetlać multipleksowo jednocześnie w kilku miejscach.

    //Dodam, że wyświetlenie całości powinno odbywać się co najmniej 50 razy w ciągu sekundy, więc 50Hz. Zmiana kolumny po czasie 625us dla jednej kolumny wyświetlającej. Aby nie stracić na jasności możesz tak sterować wspólną elektrodą, aby dawała prąd impulsowo duży(czytaj dokumentacje dla dokładnych danych).
  • #5 6170989
    MarcinPopiel
    Poziom 10  
    Dzięki za link ! Z tego co widzę , to gość nie używa jednak diod , zielonych mam racje ?

    Samą zasadę multipleksowania rozumiem , tylko borykam się z tym faktem , że nie tylko trzeba bedzię multipleksować kolumny ( dwojako przez drivery wpychając w nie odpowiedni rozkład bitów ) ale tez i wiersze ( bo skoro chce móc świecić kolorem zarówno czerwonym , zielonym jak i dwoma naraz to muszę na jedno przejscie " w lewo" na kolumnach , zapalać pojedynczo anodę i dostosowywać do tego rozkład bitów w shift_register , przykładem :

    kolumna :
    1 - czerwony
    1 - zielony
    1 - pomarańczowy
    .
    .
    .

    to na początku zwieram masę do jednej katody , później do drugiej , następnie do obydwu i tak sprawdzając dla pozostałych pinów i dopiero przejęcie do nastepnej kolumny. Dobrze myślę ? Gorzej , bo prąd to poważnie nie wiem jak ustalić dla takich f .

    Czyli teoretyczna prędkość pracy timera to 50 * 32 * 8 [Hz] ?
  • #6 6171132
    marenc
    Poziom 24  
    W jego przypadku tak to wygląda ... przeróbka - dodanie 2 rejestrów i dodatkowa linia danych dla zielonych LED'ów.

    "Prędkość" timera tak dobierz, aby przerwanie następowało po określonym czasie przejścia do następnej kolumny.

    Ja jestem przeciwnikiem rejestrów(koszty, obsługa)... Linie wierszy podłącz bezpośrednio do mikrokontrolera. Obsługa przerwania miała by polegać na wyłączeniu wspólnej elektrody, przygotowaniu nowych danych, "aktywację" kolejnej wspólnej elektrody dla kolejnej kolumny. Prościej się nie da.

    W praktyce się obsługuje 2 lub więcej kolumn jednocześnie, ale tym się nie przejmuj z początku.

    Potrzebujesz 16 linii I/O dla 8 wierszy, ponieważ masz 8 czerwonych i 8 zielonych. Jeżeli chcesz pomarańcz, to zapalasz i czerwoną i zieloną w tym samym czasie, a oko zrobi resztę ;)
  • #7 6171223
    MarcinPopiel
    Poziom 10  
    W sumie też racja !

    Ja myślałem o matrycy z wersje ze wspólną anodą( wtedy sterowanie byłoby ośmioma liniami I/O za to 16 katodami "przejęty" byłby driver :) .

    Kiedyś już bawiłem się jednokolorową 8x8 , więc wiem o co chodzi . Ale tamta była zrobiona właśnie tylko na 595 , i wyjściach z mikroprocesora.
  • #8 6171280
    marenc
    Poziom 24  
    Jak będzie Ci brakowało I/O, to łatwiej niż rejestr przesuwny jest zastosować zatrzask. 8 Linii zatrzaskujesz jedną, po zatrzaśnięciu te same 8 linii steruje innymi LED'ami. Masz dzięki temu 9 linii na obsługę wierszy, za przystępną cenę ;) Trzeba kombinować :D Możesz zastosować demultiplekser do sterowania kolumnami. Na jego wejście dajesz sygnał sterujący, a za pomocą mikrokontrolera podajesz tylko adres binarny kolumny + konieczne wyłączanie świecenia przy zmianie kolumny, żeby nie robić efektu "widma"(poświata z innych kolumn).
  • #9 6171978
    MarcinPopiel
    Poziom 10  
    Dzięki za zaangażowanie !

    O I/O się nie martwię bo na pewno wystarczy :) . Ale z tego co widzę , to na stronie MARITEX to matryc w wymiarach przynajmniej 48 x 48mm
    są tylko właśnie ze wspólną anodą .... a mimo wszystko sterowanie wspólną katodą byłoby łatwiejsze :)

    Widzę , że Pan się konkretnie zna . To może pomógłby Pan rozjaśnić tą sprawę z prądem , bo to mnie chyba dręczy najbardziej ... W tych driverach można ustalać pobór prądu w zakresie 5~90 mA bodajże . I jak mam teraz go ustalić , kiedy w jednym przypadku będzie zapalona jedna dioda , a w innym wszystkie ? A może wyjścia z uC nie zwierać bezpośrednio z anodami diód ale z bramkami p-mos'ow ?
  • #10 6173257
    marenc
    Poziom 24  
    Sterujesz prądem dla każdego wiersza(zawsze świeci się tylko(w Twoim przypadku) jedna dioda LED dla danego wiersza). Pomiędzy I/O musisz wsadzić tranzystory bipolarne i tak wysterować ich bazę(dać taki rezystor), żeby prąd nie przekroczył wartości Ipeak z dokumentacji diody LED. Dioda w świeceniu impulsowym może świecić jaśniej, a przy multipleksowaniu wyświetlacza świecą one krótko, więc im jaśniej tym lepiej.

    Jeżeli mam być szczery, to nigdy nie sterowałem takimi matrycami, a informacje są pewne i oparte na doświadczeniu zawodowym ;)
  • #11 6173323
    MarcinPopiel
    Poziom 10  
    Tak , tak jak wszystko rozumiem :)

    Może zapytam inaczej : Czy mimo tego ,że np. wszystko diody zostaną włączone w wierszu naraz to nie przeszkadza temu ,żeby wszystkie 8 katod byłby zwarte do jednej nóżki sterownika ?

    http://download.maritex.com.pl/pdfs/sc/MBI5026.pdf

    Tutaj jest datasheet tego sterownika :) .
  • #12 6173358
    marenc
    Poziom 24  
    Domyślam się, że wspólna jest katoda(bo już się zgubiłem w ideologii). Jeżeli chodzi o moją metodę, to tranzystory na kolumnach pracują jako odłączniki napięcia. Diody na wspólnych liniach wierszy powinny być wyposażone w rezystory ograniczające prąd. Powyżej pisałem o tranzystorach, ale nie ma sensu ich używać(przepraszam za zmyłkę). Wystarczy, że pomiędzy I/O mikrokontrolera, a anodę(elektrodę sterującą - nie wspólną) włączysz rezystor odpowiednio dobrany. Mówiąc o dokumentacji miałem na myśli dokumentację diody LED.

    Jeżeli chodzi o specjalistyczny sterownik LED, to pozostawiam pole wypowiedzi innym użytkownikom.
  • #13 6173809
    MarcinPopiel
    Poziom 10  
    Hehe jak widać jest nas dwóch , kolega z początku może imprezuje :)

    Tak , racze pozostanę przy wspólnej katodzie. Łączenie kolumn przez tranzystor do masy jest bardzo fajnym pomysłem i taki kiedyś stosowałem przy 10 7-segmentowych wyświetlaczach . Ale właśnie te drivery mnie intrygują bo dzięki nim nie trzeba rezystorów ograniczających prąd diody ( regulacja prądu jest właśnie na poziomie drivera - bynajmniej z tego co z datasheetu sie doczytałem chociaż moj angielski za specjalny nie jest ) .

    Poważnie nikt nie robił na tego typu driverach ?
  • #14 6173875
    marenc
    Poziom 24  
    Driver posiada sterowane źródło prądowe. Wszystkie diody są sterowane tym samym prądem... nie rozumiem w czym problem jeżeli chodzi o obliczenie tych rezystorów. Wprowadzanie danych do driver'a trwa długo i jest kłopotliwe, ale widzę, że ważniejsze jest zmiejszenie liczby elementów na PCB(choć nie koniecznie taki efekt będzie uzyskany).
  • #15 6173962
    Kuniarz
    Moderator Projektowanie
    MarcinPopiel napisał:
    Hehe jak widać jest nas dwóch , kolega z początku może imprezuje :)


    jeśli o mnie mowa :) to pilnie obserwuję, przy okazji projektując czcionkę do mojej tablicy. Jestem na etapie takim, że leci mi w kółko zawartość tablicy, muszę program rozbudować o wyświetlanie konkretnego tekstu.

    Drajwery chyba zamówię na próbę, ale tak jak pisałem wcześniej, chcę poprostu sterować statycznie diodami, przez odpowiednio dużą liczbę driverów.
    Pomogłem? Kup mi kawę.
  • #16 6174059
    marenc
    Poziom 24  
    Statycznie = nie ekonomicznie.

    W dzisiejszych czasach założenia energetyki dotyczące oszczędzania energii obowiązują w każdym projekcie.

    16 LED'ów statycznie zaświeconych, to 0,48A
    32 LED'ów statycznie zaświeconych, to 0,96A
    ...
    160 LED'ów statycznie zaświeconych, to 4,8A

    A 160 LED'ów to tylko 20 kolumn po 8 wierszy, czyli około 2,5 znaku ... powodzenia z takim podejściem.
  • #17 6174211
    Kuniarz
    Moderator Projektowanie
    hmmmm... no może coś w tym jest, ale... nigdy nie świecą się wszystkie diody jednocześnie, można przyjąć, że w typowej tablicy z lecącym napisem świeci 50%. Co nie zmienia faktu, że przy 320 diodach, przy 50% to i tak będzie z 5A. Fakt, o tym nie pomyślałem ;/ Ale z drugiej strony, multiplekserowanie poprostu widać, widać jak miga, diodki świecą słabiej, ogólnie obserwowałem wiele "fabrycznych" tablic i nie sądzę, żeby tam było multipleksowanie.
    Pomogłem? Kup mi kawę.
  • #18 6174419
    MarcinPopiel
    Poziom 10  
    Ale kto tu mówi ,żeby nie multipleksowac ?

    Te drivery to nic innego jak rejestry przesuwne , i co określony okres czasu będzie wpychana jedynka na pozycje taka jaką przyjmuje aktualna kolumna . A ,że ponoć są one dostosowane tak aby nie trzeba było używać dodatkowych rezystorów bo same ustalają prąd , + maja jedno dodatkowe wyjście po którym automatycznie wypuszczane są szeregowe dane ( do następnego rejestru , wiec nie tracimy ostatniego 16 wyprowadzenia na to ) .


    Jeśli statycznie w sensie , bez multipleksacji to oczywiście nie !
  • #19 6176121
    marenc
    Poziom 24  
    Uwierz na słowo - tam jest multipleksowanie ;) Odbywa się ono z taką prędkością i tyle więcej niż jedna kolumna jest jednocześnie "odświeżana", że nie jesteś stanie zauważyć różnicy ;) LED'y pracujące na prądach impulsowych potrafią świecić z 5x większą światłością, więc nie widzisz, aby słabiej świeciła.

    Chciałbym porównać cenę 16 rezystorów + 16 tranzystorów małej mocy, w stosunku do tego sterownika... niestety nie mogę go w żadnym sklepie znaleźć - nie wspominając już o wymogu "specjalnego" sterowania tym driver'em.

    //PS.(Kuniarz) Utwórz matrycę 32x32 i zastrzeż sobie, że maksymalnie 50% diod LED może się świecić :P Konsumenci by Cię wyśmiali :P
  • #20 6176228
    MarcinPopiel
    Poziom 10  
    http://www.maritex.com.pl/pl/shop/products/ggid/11244 :)

    Cena jednego 16-bitowego to 2.85zł więc nie jest drogo . Tylko ,ze cholera nigdzie nie mogę znaleźć matryc r-g wielkości ok. 60x60mm
    ze wspólną katodą ... Ewentualnie można iść w drugą strunę i zamiast portami I/0 sterować anodami to sterować tranzystorami zwierającymi katody do masy , np za pomocą rejestrów przesuwnych. ( przypadek dla wspólnej anody ) , a wspólna anodę sterować np. z rejestru przesuwnego. Też by się zdało prawda ?
  • #21 6176765
    Kuniarz
    Moderator Projektowanie
    Kolego Marenc, te 50% jednocześnie zapalonych wynikało z obserwacji ;-), konsument oczywiście musi być zapewniony, że matryca będzie świeciła przez 123 lata pełnym światłem i się nawet nie spoci ;-)

    No dobra, statyczne odpada, przekonaliście mnie. Kombinuję dalej.
    Pomogłem? Kup mi kawę.
  • #22 6177126
    MarcinPopiel
    Poziom 10  
    fragmenty software już mam , więc należy coś kupić wreszcie .

    W ramach ostatnich pytań : Skoro nie będzie mi dane dostać matryc ze wspólna katodą to wezmę wersje ze w.anodą . Teraz sterowanie : 32 kolumny więc 50 Hz * 32 , jako częstotliwość przerwań timera multipleksującego kolumny . Pomysł jest taki ,że użycie 4 driverów tak ,ze dwa z nich tworzą 32 bity dla katod diod czerwonych i 32 dla katod diod zielonych . Jeśli przyjąć , że anody są stale podłączone do zasilania to w obsłudze przerwania dla timera manipulowałbym tylko bitami w driverach zwierając odpowiednie diody do masy aktualnej kolumny ( multipleksacja ) . Jak teraz zrobić z anodami ? Czy zewrzeć je do portu mikrokontrolera i po prostu ustawić stan wysoki na całym ? A może port mikrokontrolera zewrzeć z bazami tranzystorów które będą zwierać anody do zasilania ? Tylko wraca pytanie z prądem . Skoro 1/32 muxowanie to nie wiem czy wartość prądu z nóżek mikroprocesora będzie wystarczająca . W tym driverze jest opcja regulowania wartości prądu . Która będzie płynąć przez kolumnę . 50 mA będzie dla takiej częstotliwości multipleksowania ?
  • #23 6177628
    marenc
    Poziom 24  
    Co do czasów ... weź pod uwagę, że pomiędzy przerwaniami musisz mieć czas na: wyłączenie kolumny, przesłanie danych do driverów, zapalenie kolejnej kolumny.

    Anody nie są na stałe podłączone do zasilania, tylko trzeba je multipleksować! Anody mają być sterowane przez mikrokontroler za pośrednictwem tranzystorów. Dwentualnie demultiplekser(pisałem o tym wcześniej).

    Kolego chyba mylisz pojęcia pry multipleksowaniu. Więc jeszcze raz: wspólną masz anodę, więc dla każdej kolumny masz jedną wspólną anodę. Musisz ją włączać za pomocą tranzystora do napięcia zasilania. Za pomocą sterownika podajesz napięcia(masy w tym przypadku) na określony wiersz(palić się będzie tylko dioda przy włączonej kolumnie). Posiada on wbudowane źródła prądu, więc nie musisz się martwić o to jaką tam dać wartość(oczywiście w uproszczeniu i założeniu, że multipleksacja będzie ciągła - zawieszenie programu przy większym prądzie diody niż ~30mA skutkuje jej uszkodzeniem).

    //Jeżeli chcesz dokładnie określić prąd, to musisz znaleźć dokumentację diody LED i sprawdzić jaki prąd impulsowy może przyjąć i jaki długi impuls może przyjąć bez uszkodzenia.
  • #24 6178477
    MarcinPopiel
    Poziom 10  
    Fakt ... jak widać sam gubię się w tym co chce zrobić ...przepraszam najmocniej.

    Teraz totalny mnie mętlik bierze niestety . Czyli w czasie kiedy mam aktualnie zasilany jeden wiersz ( trzymajmy się może tego , że anod jest mniej to będą to wiersz , ok ? ) , to w tym czasie muszę przejechać dodatkowo po szerokości matrycy tak ? W sensie , manipulować tak rejestrem przesuwnym , żeby w jednym czasie świeciła się tylko jedna dioda i tak aż do końca matrycy , zmienić wiersz i od nowa ? Czy może wystarczy dla aktualnie zasilonego wiersza ustawić bity w rejestrze przesuwnym tak ,żeby masy były na swoich miejscach i świecić całym wierszem naraz .

    Jeszcze sorry , za mój niedołęg umysłowy ....
  • #25 6178504
    marenc
    Poziom 24  
    Jeżeli aktywujesz jeden wiersz, to na kolumny(wszystkie jednocześnie lub za pomocą sterownika) podajesz czy ma się świecić czy nie. Cały wiersz jednocześnie jest sterowany.

    Zazwyczaj przyjmuje się, że kolumn jest więcej, więc jak coś to mnie poprawiaj.

    Maksymalny prąd pobierany przez układ to ilość kolumn x2, bo masz dwa kolory i x0,03 dla standardowego prądu diody 30mA(do testów trzymaj się tej wartości, żeby nie uszkodzić matrycy).
  • #26 8674456
    Woockashek
    Poziom 10  
    Przepraszam, za odgrzebywanie tematu, ale pewna kwestia spędza mi sen z powiek. Co oznacza wspólna katoda/anoda dla matryc?
    Dla mnie anoda jest np. wspólna w rzędach, a katoda w kolumnach, ale ktoś tutaj pisał, że matrycą ze wspólną katodą steruje się łatwiej, jaka jest więc różnica?

    Żeby było jasne pytam o matrycę jednokolorową
  • #27 8674630
    marenc
    Poziom 24  
    Wspólna ANODA/KATODA oznacza, że diody LED podłączone są jedną elektrodą(wszystkie) i jest ona wyprowadzona jako jedna dla wszystkich diod. Doboru należy dokonać dla sposobu sterowania jaki się obierze. Jedni załączają cyfrę podając masę na wspólną katodę(tranzystor NPN + napięcie dodatnie na wyprowadzeniu segmentu), a inni wspólną anodę(tranzystor PNP + napięcie niższe od zasilania na wyprowadzenie segmentu). Z przyczyn ekonomicznych i technologicznych redukuje się liczbę tranzystorów PNP w projektach. Generalnie dobiera się wyświetlacz do sposobu sterowania cyframi - nie ma jednego zdania na ten temat.
  • #28 8674697
    Woockashek
    Poziom 10  
    Wobec tego dlaczego wszystkie anody i katody są tutaj wyprowadzone? Ja tu nie widzę połączenia anod ani katod, a mimo wszystko jest napisane wspólna anoda.
  • #29 8674925
    szelus
    Poziom 34  
    Bo jeszcze zależy, czy wolisz wyświetlać wierszami, czy kolumnami.
    Trochę faktycznie to (jak dla mnie) przerost formy nad treścią, zwłaszcza biorąc od uwagę, że matryca jest kwadratowa i spokojnie można ją obrócić o 90 stopni. Ale dwie wersje i wszystkie możliwe kombinacje obsłużone. "Nać klijent, nać pannn" :wink:
REKLAMA