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

ATMEGA 8, BASCOM, TABLICA LED - temat bumerang...

Kuniarz 12 Lut 2009 07:36 7359 12
REKLAMA
  • #1 6137953
    Kuniarz
    Moderator Projektowanie
    Witajcie !

    Wiem, że temat był wałkowany na Elektrodzie wielokrotnie, czytałem chyba wszystkie, nie znalazłem jednak rozwiązania mojego problemu.

    Może na początek schemat :
    (tablica ma faktycznie 5 rejestrów i 40 kolumn, nie chciało mi sie jednak całości rysować.)

    ATMEGA 8, BASCOM, TABLICA LED - temat bumerang...

    teraz banalny kod :



    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Pind.0 = Output
    Config Pind.1 = Output
    Config Pind.2 = Output
    Config Pind.3 = Output
    Config Pind.4 = Output
    Config Pind.5 = Output
    Config Pind.6 = Output
    Config Pind.7 = Output
    Config Pinc.4 = Output
    Config Pinc.5 = Output
    
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pinb.2 = Output
    Config Pinb.3 = Output
    Config Pinb.4 = Output
    Config Pinb.5 = Output
    Config Pinb.6 = Output
    Config Pinb.7 = Output
    Config Timer0 = Timer , Prescale = 94
    On Timer0 Mult_wysw_matr
    
    Dim W1(8) As Byte
    Dim W2(8) As Byte
    Dim W3(8) As Byte
    Dim W4(8) As Byte
    Dim W5(8) As Byte
    Dim K As Byte
    
    W1(1) = 15
    W2(1) = 0
    W3(1) = 0
    W4(1) = 1
    W5(1) = 0
    
    W1(2) = 8
    W2(2) = 128
    W3(2) = 0
    W4(2) = 1
    W5(2) = 0
    
    W1(3) = 72
    W2(3) = 156
    W3(3) = 119
    W4(3) = 153
    W5(3) = 34
    
    W1(4) = 175
    W2(4) = 36
    W3(4) = 128
    W4(4) = 165
    W5(4) = 69
    
    W1(5) = 72
    W2(5) = 36
    W3(5) = 131
    W4(5) = 57
    W5(5) = 194
    
    W1(6) = 8
    W2(6) = 36
    W3(6) = 132
    W4(6) = 33
    W5(6) = 32
    
    W1(7) = 8
    W2(7) = 28
    W3(7) = 119
    W4(7) = 153
    W5(7) = 32
    
    W1(8) = 0
    W2(8) = 2
    W3(8) = 0
    W4(8) = 0
    W5(8) = 0
    
    
    Dim X As Byte
    X = 1
    K = 1
    Enable Interrupts
    Enable Timer0
    Load Timer0 , 255
    
    'poczatek
    
    Do
    Loop
    
    End
    
    Mult_wysw_matr:
    
       Load Timer0 , 255
    
       Portb = 0                                                'zgaszenie kolumn
       Shiftout Portd.0 , Portd.1 , W5(k) , 0                   'wyslanie wierszy
       Shiftout Portd.2 , Portd.3 , W4(k) , 0
       Shiftout Portd.4 , Portd.5 , W3(k) , 0
       Shiftout Portd.6 , Portd.7 , W2(k) , 0
       Shiftout Portc.4 , Portc.5 , W1(k) , 0
       Portb = X                                                'zapalenie kolumn
    
       X = X * 2
    
       Incr K
       If K = 9 Then
          K = 1
          X = 1
       End If
    
    Return


    Acha, może ktoś wytknąć, że sterowanie rejestrami jest z oddzielnych portów, ale wymyśliłem sobie, że szybciej będzie obsłużyć 5 rejestrów, niż szeregowo wysyłać przez jedno wyjście - może się myle.

    Problem w tym, że diodki świecą za ciemno.

    Sądzę, że jest za to odpowiedzialny ten kawałek kodu :

       Portb = 0                                                'zgaszenie kolumn
       Shiftout Portd.0 , Portd.1 , W5(k) , 0                   'wyslanie wierszy
       Shiftout Portd.2 , Portd.3 , W4(k) , 0
       Shiftout Portd.4 , Portd.5 , W3(k) , 0
       Shiftout Portd.6 , Portd.7 , W2(k) , 0
       Shiftout Portc.4 , Portc.5 , W1(k) , 0
       Portb = X                                                'zapalenie kolumn
    

    poprostu czas wpisywania do rejestrów jest za długi wiec wiecej są zgaszone niż zapalone...

    Proszę o jakieś sugestie, ktoś pisał, że można rejestrami sterować niejako sprzętowo przez SPI - ale jak konkretnie ?

    Pozdrawiam !
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #2 6138259
    mirekk36
    Poziom 42  
    Kuniarz napisał:
    Acha, może ktoś wytknąć, że sterowanie rejestrami jest z oddzielnych portów, ale wymyśliłem sobie, że szybciej będzie obsłużyć 5 rejestrów, niż szeregowo wysyłać przez jedno wyjście - może się myle.


    moim zdaniem mylisz się - wg mnie o wiele wiele szybciej byłoby się połączenie kaskadowe tych rejestrów i z jednego portu wsunięcie do nich odpowiedniej wartości - bo w taki sposób tracisz ogromne ilości czasu. Poza tym może też lepiej byłoby użyć rejestrów typu 74595 z zatrzaskami. Dzięki czemu podczas wsuwania do nich danych nie będziesz miał migotania - a tylko w odpowiednim momencie po wsunięciu danych - odblokowujesz zatrzaski na moment aby wyświetlić nowe wartości itd
  • REKLAMA
  • #3 6138290
    Kuniarz
    Moderator Projektowanie
    No właśnie, apropo 74595 to juz nawet miałem zmontowany układ na tym, ale nie bardzo obczajam te zatrzaski. Tak w ogóle to miałbym kilka konkretnych pytań :
    - jeśli połączyć kaskadowo, np. 74595, to on ma takie zdublowane wyjście z ostatniej końcówki, rozumiem że podłączam to pod wejście następnego
    - clk do wszystkich na raz ?
    - 74595 ma oddzielne clk ma serial i parallel - steruje tym z dwóch oddzielnych portów ?
    - jak "wsunąć" pięć bajtów w taki kaskadowy rejestr ?

    przepraszam za lamerskie pytania, ale tablica jest mi potrzebna, namęczyłem się z polutowaniem tego w całość a utknęłem na jakby się zdawało banale...
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #4 6139389
    zumek
    Poziom 39  
    A nikt nie zauważył, że kol. Kuniarz chce "przepuścić" prąd z 40-tu LED-ek, przez 1 pin uC :?: Poza tym, diody na schemacie, są niewłaściwie "skierowane" ;)
    Propozycję mam taką:
    1)Rezystory ograniczające prąd LED-ek , umieścić w kolumnach
    2)Na wiersze dać jakieś drivery, co potrafią "uciągnąć" z kilka A

    To tyle :-P
  • #5 6139476
    Kuniarz
    Moderator Projektowanie
    Faktycznie diodki narysowałem odwrotnie... niedopatrzenie, dzięki !
    Co ciekawe układ działa z powodzeniem, tylko że w świetle dziennym LEDów prawie nie widać, ale ok, jestem otwarty na propozycje, zatem:
    - klucze tranzystorowe dać po stronie wierszy (czyli osiem), albo zastosować jakiś scalony driver (jeśli tak to jaki)
    - w każdej kolumnie tylko rezystor np 100 ohm i do masy tak ?

    ... a co z rejestrami będącymi kluczowym problemem ?

    W podobnym temacie ktoś zaproponował użycie gotowego 16to wyjściowego drivera LED - rozumiem, że sterować z tego kolumny, wpis bajtów jest też szeregowy - np. MBI 5026.
    Pomogłem? Kup mi kawę.
  • #6 6139697
    zumek
    Poziom 39  
    Kuniarz napisał:
    ...Co ciekawe układ działa z powodzeniem, tylko że w świetle dziennym LEDów prawie nie widać, ale ok, jestem otwarty na propozycje, zatem: ...

    Zostawić wszystko tak jak jest +:
    1)W obwód każdego kolektora BC546(kolumna), dać rezystor np. 0k1(100 ohm)
    2)Na wiersze dać drivery, np. tranzystory PNP , które "wytrzymają" prąd rzędu =>2A
    Ponieważ nie wiem jaki maksymalny prąd impulsowy są w stanie znieść Twoje diody, to podają w miarę bezpieczne wartości rezystorów, czyli tylko 50mA na 1 LED. Taki prąd, przy sterowaniu sekwencyjnym 8 wierszy, to nie jest jeszcze szczyt możliwości dla niektórych LED-ek.
    W twoim układzie , maksymalny teoretyczny prąd wiersza, to tylko 50mA(5V/100), co przy "zapaleniu" wszystkich 40-tu LED w wierszu , daje 1.25 mA na diodę, a to stanowczo za mało, nawet przy sterowaniu statycznym. Ponad to, maksymalny prąd portu ATMegi , to tylko 20mA , więc prąd diody spada drastycznie i dlatego Twoje diody świecą tak nędznie.
    Co do rejestrów 164, to czas "załadowania" do nich danych, stanowi w Twoim przypadku, 1/20(5%) czasu "świecenia" 1-go wiersza, a więc nie jest źle ;)
  • #7 6140110
    Kuniarz
    Moderator Projektowanie
    Ok, dziękuję za porady, rozumiem że :
    - dokladam do kolumn rezystory 100ohm, tranzystory pozostawiając bez zmian.
    - na linie wierszy dokladam drajwery na PNP, dwu amperowe to np. BD 234, zasilać je z 5 V czy może z 9 V ?

    Rzuć proszę okiem na schemat, na czerwono zaznaczone zmiany, jeśli pasuje to chwytam lutownicę ;-)

    ATMEGA 8, BASCOM, TABLICA LED - temat bumerang...
    Pomogłem? Kup mi kawę.
  • #8 6140382
    zumek
    Poziom 39  
    Kuniarz napisał:
    ...Rzuć proszę okiem na schemat, na czerwono zaznaczone zmiany, jeśli pasuje to chwytam lutownicę ;-)

    Z tą lutownicą, to ja bym się tak nie spieszył :|
    Przyjrzałeś się parametrom BD234 - np. hFE :?:
  • #9 6140573
    Kuniarz
    Moderator Projektowanie
    No tak, współczynnik wzmocnienia mały, to może na próbę wlutuję coś słabszego, ale z serii BC ?
    Ewentualnie, jakby kolega Zumek miał chwile, to proszę o zaproponowanie odpowiedniego tranzystora, a może coś scalonego ?
    Pomogłem? Kup mi kawę.
  • REKLAMA
  • #10 6141314
    zumek
    Poziom 39  
    Kuniarz napisał:
    ...Ewentualnie, jakby kolega Zumek miał chwile, to proszę o zaproponowanie odpowiedniego tranzystora ...

    Jest całe mnóstwo 'darlingtonów' np. TIP125
  • #11 6141660
    Kuniarz
    Moderator Projektowanie
    "aż taki potwór" ? 5 A, 60 V !! Przeca to nie spawarka ;-)
    Przy okazji spytam, Darlingtron czy zwykły bipolarny ?
    Pomogłem? Kup mi kawę.
  • #12 6142832
    zumek
    Poziom 39  
    Kuniarz napisał:
    "aż taki potwór" ? 5 A, 60 V !! Przeca to nie spawarka ;-)

    A jak Cię najdzie ochota rozbudować(wydłużyć) tablicę :?: ;)
    Jeśli masz zamiar produkować takie tablice przemysłowo, to każdy grosz się liczy , ale nie podejrzewam Cię o to ;)
    Kuniarz napisał:

    Przy okazji spytam, Darlingtron czy zwykły bipolarny ?

    Dawaj co chcesz , byle proc potrafił go wysterować, a on wytrzymał prąd LED-ek.
  • #13 6143030
    Kuniarz
    Moderator Projektowanie
    Z produkcją przemysłową to przesada, ale póki co łażą za mną sępy i pytają czy im takie coś zrobię, więc będę musiał zbudować ich kilka, jeśli zadziała...

    ... bo właśnie działa tak średnio.

    Przebudowałem układ zgodnie z sugestią kolegi Zumka, na kolumny dałem 100ohm, na wiersze dałem na próbę zwykłe BC557 (bodajże, no, zwykłe PNP) i...
    problemy są dwa, albo i trzy.
    1. świeci niewiele jaśniej
    2. lekko świecą się też diody które powinny nie świecić, tak jakby te tranzystory w wierszach otwierały się częściowo.
    Wiem, wiem, będzie post "poczytaj o tranzystorach głąbie, przecież to podstawy" - tak też zrobię zaraz :P
    3. BC557 nawet nie są letnie, co drogą dedukcji dr. Wattsonie oznacza, że nie płyną przez nie duże prądy ;-)
    Pomogłem? Kup mi kawę.
REKLAMA