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.
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.
@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)?
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.
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.
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.
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.
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.
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.
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.
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ą.
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 .
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?
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:
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Ω.
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ć.
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.
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.