Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jak zrobić sterownik na 400 diodek LED

jaroo111 26 Jan 2008 12:55 3630 24
  • #1
    jaroo111
    Level 10  
    Chciałem zrobić urządzenie sterujące 400 diodami LED, ustawionymi w kształcie okręgu. Działanie tego urządzenia miałoby polegać na zapalaniu się 1 z 400 kolejnych diodek. Czyli 1 się pali 399 nie. Zapalona dioda powinna płynnie wędrować po okręgu. Dodatkowo powinna być możliwość zmiany kierunku oraz szybkości przemieszczania się diody po okręgu.
  • Helpful post
    #2
    fuutro
    Level 43  
    Można by to zrobić na połączonych kilku licznikach, posiadających możliwość zmiany kierunku zliczania.
  • Helpful post
    #3
    oj
    Level 42  
    jaroo111 wrote:
    ...powinna płynnie wędrować po okręgu.


    To znaczy, że ma się świecąca LED powoli wygaszać a następna powoli rozjaśniać?

    Jeżeli tak to, to nie będzie to takie proste w sensie zastosowanej elektroniki (jedna dioda jeden port mikrokontrolera), musi być wykorzystany PWM
  • #4
    jaroo111
    Level 10  
    Nie musi sie powoli wygaszać. Jedna gaśnie kolejna się zapala.
  • Helpful post
    #5
    danthe
    Level 30  
    Ja bym wykorzystał 4szt. ATMEGA 8 i diody ułożył w matrycę, powiedzmy 10x10 = 100 led. Korzyści - tylko 4 procki po 5pln/szt, i 40 rezystorów na diody. Jeśli kolega byłby tym zainteresowany to mogę pomóc przy oprogramowaniu.
  • #6
    kamil007
    Level 12  
    @oj
    Cześc ja bym był zainteresowany takim układem, no nie na 100diód,:) mi wystarczy 10-15.
    Możesz coś blizej opisac, jak to miało by wyglądac, i co to jest PWM(Pulse Width Modulation, to znalazłem w google)?
  • Helpful post
    #7
    cyberdar
    Level 31  
    Witam

    Ktoś tu chyba przesadził z tą ilością procesorów. To jest przecież banalnie prosta sprawa. Do 576 diod wystarczy 6 rejestrów przesuwnych. O 14 czy 15 wyjściach nie ma co gadać 2 układy tych rejestów załatwiają sprawę z nawiązką. Teraz w zależności obsłużą albo 16 diod albo 64 jeśli zrobi się to na zasadzie matrycy.

    --
    pozdrawiam
  • #8
    jaroo111
    Level 10  
    cyberdar wrote:
    Witam

    Ktoś tu chyba przesadził z tą ilością procesorów. To jest przecież banalnie prosta sprawa. Do 576 diod wystarczy 6 rejestrów przesuwnych. O 14 czy 15 wyjściach nie ma co gadać 2 układy tych rejestów załatwiają sprawę z nawiązką. Teraz w zależności obsłużą albo 16 diod albo 64 jeśli zrobi się to na zasadzie matrycy.

    --
    pozdrawiam


    Cyberdar czy możesz przedstawić jakiś przykładowy schemat, na jakich układach najlepiej to złożyć ? Czy można w tym rozwiązaniu sterować szybkością zapalania się kolejnej diody.
  • Helpful post
    #9
    Dar.El
    Level 40  
    Witam
    Narysowałem schemat jak to trzeba zrobić. Wystarczy 6 linii z uP i można rozszerzyć na 576 LED max. Kolejność zapalanej diody raczej nie zgadza się z numeracją na schemacie (numeracja wykonana automatycznie), pierwsza dioda to dolna z prawej strony a następna to w górę albo w prawo, zależnie od napisanego programu.
    --------------------
    Ups.. było parę błędów, ale już poprawiłem.
  • #10
    cyberdar
    Level 31  
    Witam

    :arrow: Dar.El nie jestem pewien czy układ z 74164 będzię działał poprawnie. Myślałem o 74595. Ładowanie danych w '164 może powodować, że będzie widziana duża poświata przy większym odświeżaniu. W przypadku '595 załadujesz dane i przepiszesz je na wyjścia. Kosztem skomplikownia programu możnaby sterowanie zrealizować na 3 pinach ('595). Ale to już inna historia.

    --
    pozdrawiam
  • #11
    jaroo111
    Level 10  
    Dzięki, bardzo za podpowiedź, możecie bliżej opisać zasadę podłączenia uP do tego układu i jak to wszystko ma działać.
  • Helpful post
    #12
    Dar.El
    Level 40  
    Witam
    Żadnej poświaty nie będzie, przecież ma świecić tylko 1 LED, układ nie jest przewidziany na zaświecenie większej ilości z powodu ograniczeń prądowych.
    Sposób sterowania:
    1- na początek automatyczne zerowanie rejestrów żeby nic nie świeciło za pomocą rezystora R21.
    2- po ustawieniu sygnału KAS na H układy są gotowe do działania.
    3- wpisujemy stan H do U3,U2,U1 za pomocą sekwencji impulsów na CLKW z ustawionym stanem H na DATW

    W tym momencie mamy gotowe rejestry do zaświecania kolejno jednej diody.

    4- wpisujemy L do U3 i już utrzymujemy H na DATW
    5- wpisujemy H do U4 i już od tego momentu utrzymujemy L na DATK

    Świeci się dioda D381

    6- impuls na CLKK przesuwa świecenie na D382

    Każdy następny impuls na CLKK przełącza świecenie na następną diodę w prawo.

    Gdy następny impuls zgasi diodę ostatnią z rzędu.

    7- dajemy impuls na CLKW i powtarzamy sekwencję od nr5

    Gdy zgaśnie dioda D20, powtarzamy sekwencję od nr4.

    I w ten sposób zrobiliśmy jeden obrót. W drugą stronę sprawa jest już dość skomplikowana i chyba jednak trzeba zastosować 74595, nie pomyślałem o odwrotnym kierunku.
    Jutro zmienię schemat.
  • #13
    danthe
    Level 30  
    Ech, po zastanowieniu to wydaje mi się że dwa razy atmega8 i po sprawie, i żadnego problemu ze skomplikowanym sterowaniem - 20 linii na kolumny w jednym scalaku, 20 na wiersze w drugim i jest 400 led. Zostaje po 3 linie w każdym, i można zrobić sterowanie albo na zasadzie - stan na jednym wejściu - kierunek, na drugim impuls przesunięcie diody w wybranym kierunku, albo impuls na jednym wejściu przesuwa w lewo, a na drugim w prawo.
  • #14
    cyberdar
    Level 31  
    Witam

    danthe sądzę, że rozwiązanie z dwoma uC będzie jednak bardziej kłopotliwe. Te uprocesory będą musiały być synchronizowane czyli jeden będzie masterem drugi slavem. Sądzę, że to będzie o wiele bardziej skomlikowane. Rozwiązanie, które zaproponował Dar.El jest jak najbardziej w porządku wszystko masz na jednym procesorze. Róznica w koncepcji polega na tym, że na '164 zrobiłbyś jedynie przesuwanie bitu w rejestrze tylko w przód natomiast na '595 możesz to to zrobić "w dowolnym" kierunku włącznie z zapalaniem dowolnej sekwencji. Programowo różnica polega na tym, że rejestry '595 ładujesz wszystkimi danymi i jednym zboczem sygnału przepisujesz na wyjście.

    --
    pozdrawiam
  • #15
    Dar.El
    Level 40  
    Witam
    Nie wolno wyprowadzać długich połączeń z uP, będzie bardzo wrażliwy na zakłócenia.
    Narysowałem drugi schemat na 74595, ale proponuję użyć 74AC595 ze względu na wydajność prądową wyjść tego scalaka. Schemat ma małą wadę, po włączeniu zasilania będą świecić przypadkowe diody i trzeba szybko je wygasić, zanim scalaki się nie przegrzeją.
  • Helpful post
    #16
    cyberdar
    Level 31  
    Witam

    Ostatnia (chyba) moja uwaga. Rezystorki ograniczające prąd diod dałbym nieco większe. TTLe to wytrzymają bo mają wydajność prądową ±35mA ale diody już niekoniecznie. Napięcie wyjściowe w stanie niskim to 0.1V maksymalnie, w stanie wysokim przy zasilaniu 5V będzie wynosić jakieś 4.9V. Policzmy:

    4.9V-0.1V=4.8V (różnica napięć między stanem wysokim a niskim)
    4.8V-1.7V=3.1V (tyle "zostanie" napięcia za czerwoną diodą świecącą)
    3.1V/100Ω=31mA!!! (prąd diody)

    W związku z powyższym proponowałbym zastosować rezystorki 220Ω. Prąd spadnie wtedy do wartości poniżej 15mA. Jeśli progi napięć się zmienią na naszą niekorzyść to prąd pewnie i tak będzie oscylował w granicach 9-10mA. A to już jest do zaakceptowania. Jasność będzie wystarczająca.

    --
    pozdrawiam

    PS
    Jeszcze coś. Wpis wierszy i kolumn może być na jednym sygnale. Wcale nie musi być rozdzielony. Przecież rejestry będą załadowane danymi i będzie można przepisać ich zawartość na wyjścia. Uczciwie trzeba przyznać, że pozostanie przy takim rozwiązaniu jest poprawna przy czym spięcie tych sygnałów oszczędza jeden port :)... i oszczędza jedną instrukcję wpisu :D.
  • #17
    Dar.El
    Level 40  
    Wszystko się zgadza, możliwości rozwiązań jest bardzo dużo, moje rozwiązanie trochę upraszcza program, ale jak ktoś chce to można na trzech liniach połączyć wszystkie scalaki. Jaką wartość powinny mieć rezystory dla LED zielonych?
  • Helpful post
    #18
    cyberdar
    Level 31  
    Witam

    Do obliczeń przyjąłem, że dioda czerwona ma spadek napięcia 1.7V, dla diody żółtej proponuję przyjąć 2.1V dla diody zielonej 2.4V. Więc dla diody żółtej rezystor dałbym 192Ω, dla zielonej 171Ω. Oczywiście są to obliczenia. W praktyce byłoby to odpowiednio 200Ω i 180Ω. Przy poprzednich założeniach prądy wyglądałyby następująco:

    - dioda czerwona 14.1mA
    - dioda żółta 13.5mA
    - dioda zielona 13.3mA

    --
    pozdrawiam
  • #19
    jaroo111
    Level 10  
    Serdecznie dziękuję za pomoc, możecie przedstawić schemat ideowy wraz z podłączeniem do procesora i jakiś układ zasilający, będę bardzo wdzięczny.
  • Helpful post
    #20
    cyberdar
    Level 31  
    Witam

    1. Co do schematu matrycy to już kolega Dar.El narysował Ci ją dokładnie. Jedyna sugerowana zmiana to wartości rezystorków, ale te też są zasugerowane w zależności od koloru świecenia.

    2. Teraz zasilacz. Uważam, że zasilacz zrealizowany na LM7805 w typowej aplikacji w zupełności wystarczy. Pobór prądu nie przekroczy 150mA więc jak sądzę nawet radiator będzie zbędny no chyba, że na wejście podasz +20V. Jeśli podasz powiedzmy 9V to moc będzie oscylować w granicach 0.6W. Czyli będzie ciepły ale nie powinno mu się nic stać nawet po długiej pracy. Od biedy kawałek blaszki.

    3. Podłączenie do procesora - sprawa trywialna. Podłączasz pod jakiekolwiek wolne piny procesora. Sugerowałbym podciągnięcie każdego pinu do plusa zasilania. Wartość rezystora podciągającego np. 4.7kΩ.

    --
    pozdrawiam
  • #21
    jaroo111
    Level 10  
    Możecie rozrysować mi podłączenie do jakiegoś przykładowego procesora, żebym nie odwalił numeru i nie zobaczył tylko jednego blasku :) zamiast 400.
  • #22
    Dar.El
    Level 40  
    Witam
    Podłączenie zależy od programisty i jego upodobań. Praktycznie to do wszystkich portów można podłączyć. Jeśli nie umiesz programować a znajdziesz kogoś kto zaprogramuje, to jego pytaj się gdzie chce podłączyć.
  • #23
    jaroo111
    Level 10  
    Mam problem z zakupem tego układu 74AC595. Możecie mi podpowiedzieć czy są jakieś zamienniki lub, gdzie go można dostać.
    Z góry dziękuję.
  • #24
    Dar.El
    Level 40  
    Witam
    Chyba jednak nie kupisz 74AC595, ale można dostać 74HC595, niestety mają małą wydajność prądową i trzeba do każdego wyjścia dorzucić po tranzystorze.
  • Helpful post
    #25
    danthe
    Level 30  
    Co do 74HC595 to prąd wyjściowy może wynosić 35 mA. Więc spokojnie wystarczy o ile będzie się świeciła tylko jedna dioda, suma prądów wyjściowych nie powinna przekroczyć 70mA.

    P.S. Niedawno kupowałem 30 szt. tego scalaka i nie było problemu - w firmie TME po coś 50 gr.