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

multipleksowanie diod, 1/10 duty cycle, 0.1ms pulse width

danonkiii 20 Wrz 2009 02:24 2222 4
  • #1 20 Wrz 2009 02:24
    danonkiii
    Poziom 2  

    Witam. Zabieram się za mały projekcik i jako początkujący po raz kolejny napotykam problem. Jak widzę już trochę tematów na temat matryc LED było, ale nigdzie nie potrafię znaleźć satysfakcjonującej odpowiedzi.
    Mam 27 diod RGB. Jakby każdy kolor traktować osobno, to mogę powiedzieć, że matryca będzie miała wymiary 9x9. Załóżmy, że diody są dobrze podpięte pod ATmegę16 (kolega elektronik sprawdzał, diody podpięte przez tranzystory do pinów uC). Założeniem projektu jest, że każda z diod będzie świeciła tylko 1 z 3 kolorów.

    Teraz mam problem jak multipleksować taki wyświetlacz. Samą ideę multipleksowania znam. Chodzi mi konkretnie o zdanie "szerokość impulsu 0.1 ms, wypełnienie 0.1 okresu". Nie wiem jak poprawnie to zinterpretować. Podobny problem poruszany (tylko, że z wyświetlaczami) był tu: Link.
    Rozumiem, co oni tam piszą, ale starałem się to zrozumieć na chłopski rozum, z tym, że mam parę zastrzeżeń co do swojego rozumowania.

    Zdanie z datasheetu głosi: "Pulse Forward Current: 0.1 duty cycle, 0.1 ms pulse width - 150mA (R), 150mA(G), 100mA(B)".

    Rozumiem to tak, że podając np na czerwoną diodę prąd 150 mA, w impulsie 0.1 ms, dioda powinna świecić max 0.01 ms. Nie jest tak, że jeśli przez dłuższy czas tą diodę będziemy trzymać zapaloną (chociażby o 0.3ms dłużej, to się przepali? (Możliwe, że piszę głupoty, ale wolę spytać, niż przepalać sobie po kolei diody, z których każda kosztuje prawie 3 zł :P)

    I teraz moje pytanie: powinienem te diody multipleksować z częstotliwością 1kHz?? (1kHz => 1ms, 9 rzędów multipleksowanych => 1ms/9=0,(1)ms ; oczywiście przyjmuję skrajny prąd, ale w rzeczywistości na pewno będę mniejszy dawał). Z drugiej znowu strony 1kHz to strasznie dużo, a podobno dla ludzkiego oka wystarczy już 20Hz, żeby prawie nie było widać, że diody migają.

    0 4
  • #2 20 Wrz 2009 03:02
    Paweł Es.
    Pomocny dla użytkowników

    Ten zapis oznacza, że taki impuls prądowy 150 mA o szerokości 0.1 ms nie powinien być powtarzany częściej niż co 1ms by nie przegrzać złącza diody. To są prawdopodobnie parametry graniczne jakie ta dioda wytrzymuje.
    Wrzuć link do tej karty katalogowej.

    Duty cycle oznacza wypełnienie przebiegu czyli stosunek trwania np. stanu wysokiego do całego okresu.

    Co do częstości odświeżania to jest tak, że by nie widzieć migotania wyświetlacza, pełna jego sekwencja wyświetlania musi być powtarzana minimum 20 razy na sekundę.

    Nie napisałeś jak te diody są podłączone do m-psora, jaka jest struktura matrycy (sposób adresowania poszczególnych diod).

    0
  • #3 20 Wrz 2009 12:04
    danonkiii
    Poziom 2  

    hmmm, a nie wiem czy mam rację, ale czy Twoje pierwsze zdanie nie powinno brzmieć:
    "Ten zapis oznacza, że taki impuls prądowy 150 mA o szerokości 0.01 ms nie powinien być powtarzany częściej niż co 0.1ms by nie przegrzać złącza diody."
    Ja się nie znam, ale próbując hiperbolizować zdanie o stosunku trwania stanu wysokiego do całego okresu, można by popatrzeć na to w ten sposób: impuls 150mA, o szerokości 1s, nie powinien się powtarzać częściej niż co 10s. Dioda wtedy na pewno się przegrzała.
    Dlatego rozumiem to w ten sposób, że impuls 150mA trwający 0.01ms nie powinien być powtarzany częściej niż 0.1ms, wtedy maksymalna częstotliwość odświeżania wynosiła by 1000Hz.
    Natomiast gdyby na to patrzeć, że może trwać 0.1ms to nie jest to 10x za szeroki impuls?

    Jeśli chodzi o sam program to sobie poradzę ;) Chodzi mi tylko o szerokość tych impulsów, które wg mnie powinny mieć szerokość 0.01 ms :P
    Datasheet diody: Link
    Podłączenie do uC wygląda w ten sposób, że mam 9 kolumn (3 kolory z 3 diod RGB) i 9 rzędów (9 wspólnych anod). Anody podłączone do uC poprzez tranzystory PNP (BC327), a katody przez 9 tranzystorów NPN (BC337).

    0
  • Pomocny post
    #4 20 Wrz 2009 14:55
    Paweł Es.
    Pomocny dla użytkowników

    [quote="danonkiii"]hmmm, a nie wiem czy mam rację, ale czy Twoje pierwsze zdanie nie powinno brzmieć:
    "Ten zapis oznacza, że taki impuls prądowy 150 mA o szerokości 0.01 ms nie powinien być powtarzany częściej niż co 0.1ms by nie przegrzać złącza diody."


    Pulse Forward Current: 0.1 duty cycle, 0.1 ms pulse width - 150mA (R), 150mA(G), 100mA(B)".

    0.1ms pulse width - to jest szerokość impulsu =0.1ms a nie 0.01 ms

    0.1 duty cycle - wypełnienie 1 do 10 czyli 1 część aktywna (0.1ms) na 9 nieaktywnych (0.9ms) czyli w sumie 10 części czyli 1ms.

    Cytat:
    Ja się nie znam, ale próbując hiperbolizować zdanie o stosunku trwania stanu wysokiego do całego okresu, można by popatrzeć na to w ten sposób: impuls 150mA, o szerokości 1s, nie powinien się powtarzać częściej niż co 10s. Dioda wtedy na pewno się przegrzała.


    Nie wchodźmy w hiperboliczne dywagacje humanistyczne:

    Ilość ciepła (załóżmy napięcie na diodzie=3V)

    Q1=P*t1=Id*Ud*t=0.15A*3V*0.0001 s=0,000045 J

    Q2=P*t2=Id*Ud*t2=0.15A*3V*1s=0.45 J

    Czyli w drugim przypadku wydzieli się w strukturze diody 10000 razy więcej ciepła a to oznacza, że złącze nagrzeje się do dużo większej temperatury (najprawdopodobniej niszczącej je)

    Cytat:
    Jeśli chodzi o sam program to sobie poradzę ;) Chodzi mi tylko o szerokość tych impulsów, które wg mnie powinny mieć szerokość 0.01 ms :P


    Taka (maksymalna 0.1ms) szerokość impulsów jest wymagana jeżeli chcesz katować diody prądem impulsowym 150 mA a po impulsie musi być 0.9ms na odprowadzenie wydzielonego w strukturze ciepła

    Cytat:
    Podłączenie do uC wygląda w ten sposób, że mam 9 kolumn (3 kolory z 3 diod RGB) i 9 rzędów (9 wspólnych anod). Anody podłączone do uC poprzez tranzystory PNP (BC327), a katody przez 9 tranzystorów NPN (BC337).


    W twoim przypadku częstotliwość odświeżania musi wynosić co najmniej 20*9 = 180 Hz (pełny cykl wyświetlenia 9 rzędów).

    Prąd w impulsie musi być 9 razy większy niż przyjęty prąd średni (bo jeden rząd świeci tylko przez 1/9 cyklu) ale nie większy niż 150 mA lub 100 mA dla diody niebieskiej. Lepiej jest nie pracować na wartościach granicznych, więc wybierzmy np. prąd średni np. 8mA czyli prąd w impulsie wyniesie 72 mA. Tu impulsy mogą mieć 0.2ms czas trwania.

    Dla tej wartości trzeba policzyć rezystory ograniczające prąd w obwodzie diod:

    $$Rogr=\frac{Ucc-Uce_{sat}1-Uce_{sat}2}{0.072A}$$

    Ucc - napięcie zasilania
    Ucesat1/2 - napięcia nasycenia tranzystorów włączających daną diodę

    Mimo wszystko jednak widać, że sterowanie multipleksowe w takim układzie jest niewygodne, bo trzeba lawirować pomiędzy wartością maksymalną dla danej diody a wartością średnią, która odpowiada za średnią jasność świecenia diody.

    Poza tym jeszcze istnieje ryzyko, że jak procesor się zawiesi i stanie przemiatanie, to wypali się cały rząd diod (czyli wypada jeszcze dać układ zabezpieczający wyświetlacz przed zatrzymaniem się przemiatania - poza procesorem)

    Lepiej jest takie sterowania robić na układach specjalizowanych, np A6276 firmy Allegro, gdzie masz sterowanie 16 diod z rejestru szeregowego a do tego każde wyjście jest sterowane tym samym prądem ustalanym jednym rezystorem

    Stosując 3 takie układy (wpis danych jest szeregowy)

    http://www.datasheetcatalog.com/datasheets_pdf/A/6/2/7/A6276.shtml

    możesz zmniejszyć wymagany prąd maksymalny przy przemiataniu do 2 krotnego (1 rząd 13 diod -> 39 wyjść, drugi rząd 14 diod, 42 wyjścia a 3 układy dają 48 wyjść) , lub stosując większą ilość układów, zrezygnować w ogóle z przemiatania i móc wykorzystać pełną jasność diod ustawiając prąd np. na 20mA.

    0
  • #5 20 Wrz 2009 17:01
    danonkiii
    Poziom 2  

    Nie mam żadnych pytań po tej odpowiedzi :) Co do tych "sterowników" do matryc, to dowiedziałem się o nich dopiero po zlutowaniu układu, więc pozostaje mi zabawa programowa w multipleksowanie i ryzyko przegrzania diod ;].

    Wielkie dzięki za poświęcony czas. Pozdrawiam :)

    0