Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 wrz 2024, o 18:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
 Tytuł: Led Cube 5x5x5
PostNapisane: 9 gru 2013, o 15:51 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

Witajcie,

Jestem nowym użytkownikiem tego forum i postanowiłem się zarejestrować, gdyż od pewnego czasu myślę nad stworzeniem Led Cuba 5x5x5. Oglądając poradniki Pana Mirka, czytając artykuły powoli wkraczam w świat mikrokontrolerów :) Przeglądając internet zdobyłem już jakąś podstawową wiedzę w tym kierunku, ale nadal trapi mnie kilka kwestii, a nie chciałbym tworzyć tego projektu zupełnie po swojemu. Całkiem możliwe że nie ustrzegłbym się jakiś poważnych błędów, a bardziej doświadczeni koledzy tudzież koleżanki ode mnie, mam nadzieję dadzą mi cenne rady oraz wskazówki.

Może na początku zamieszczę schemat, który udało mi się stworzyć na podstawie informacji i innych schematów znalezionych w internecie:

Obrazek

Mam nadzieję, że nie jest laurkowaty i jest dość czytelny by się w tym wszystkim połapać. Wszelkie uwagi mile widzane, gdyż jest to mój pierwszy schemat i dopiero się uczę. (Zamiast etykiet zastosowałem takie chorągiewki z biblioteki Supply1/2, gdyż płytki PCB i tak nie robię (będzie to zlutowane na płytce uniwersalnej) a w takiej postaci jest to dla mnie czytelniejsze)

komentarz do schematu:

Procesor ATmega16A-PU - DIP
Przełącznik S1 w lini MOSI załączany jest na złączę KANDA na czas programowania, by sygnał szedł bezpośrednio do nóżki procesora i nie wchodził w interakcję z diodą przy oporniku R30.
Zworka JP1 - alternatywne źródło zasilania. Załączane tylko i wyłącznie wtedy, gdy nie jest włączone główne źródło zasilania ze stabilizatora 7805.
Masy programatora oraz mikrokontrolera, stabilizatora itd. są oczywiście ze sobą połączone.
Zewnętrzny rezonator jest jako alternatywa, bo na początku głównie procesor będzie taktowany wewnętrznym rezonatorem 8Mhz. (W późniejszym etapie możliwe, że dodam zewnętrzny)
Nie wykluczam rówież wykorzystanie linii SISO, SCK jeszcze w jakiś inny sposób, ale wtedy zastosuję również przełączniki S2, S3 (tak samo działające jak S1).
Myślałem również nad zastosowaniem rejestru przesuwnego do sterowania diodami, by te linie jednak służyły tylko i wyłącznie do programowania, ale myślę, że taki przełącznik nie zaszkodzi a tylko ułatwi układ oraz programowanie.
25 anod jako połączenia w pionie (łączone kolumny anodami), 5 katod jako połączenia w poziomie (łączone wiersze katodami)

Cechy diod LED:
czerwona dioda: dyfuzyjna, 5mm, 20mA, 2.0 - 2.3V
oporniki R = 220ohm czyli zgodnie z prawem Ohma to daje na diodę około 9-10mA. (Nie wykluczam że finalnie zastosuję może jakieś mniejsze rzędu 100-150ohm aby ten prąd był jednak ciut większy)

wg noty:
27.1 Absolute Maximum Ratings*
na jednym pinie max - 40mA.
Atmega może dać max - 200mA.

W związku z tym nie mogę zaświecić np.jednocześnie wszystkich 125 diod, bo by procesor nie wyrobił.

Zatem wyczytałem w internecie o tym, by jednocześnie zaświecać np po jednej, paru diodach i za pomocą szybkiego odświeżania, łączania i wyłączania odpowiednich diod uzyskalibyśmy zamierzony efekt a ponadto będziemy mogli stworzyć bardziej skomplikowane kształty.

(np wyświetlenie litery U:
jedna ze ścianek:
XOOOX
XOOOX
XOOOX
XOOOX
XXXXX
x - włączona, O - wyłączona. Bo jak wiadomo sposób w jakim jest ta kostka stworzona nie pozwoli zapalając jednocześnie odpowiednie diody uzyskać takiego efektu gdyż również by nam się zapaliły wszystkie diody oznaczone jako O)

W związku z tym postanowiłem, że będę zaświecać maksymalnie jedną diodę (może 5) w danym przedziale czasowym.

Przybliżony algorytm, by uzyskać efekt świecenia wszystkich diod wyglądałby tak:
125 diod łącznie - jedna dioda 50Hz odświeżania, 10-20mA pobór prądu.

Kod:
{
wyłącz 125
włącz 1
czekaj 0.16ms

wyłącz 1
włącz 2
czekaj 0.16ms

wyłącz 2
włącz 3
czekaj 0.16ms

...

wyłącz 124
włącz 125
czekaj 0.16ms
}

(oczywiście wszystko w odpowiedniej pętli by ręcznie nie musieć tego ustawiać (kod tylko jako poglądowy przykład))
0.16ms * 125 diod * 50Hz odświeżanie = 1000ms = 1s.
Każda dioda powinna migać 50 razy na sekundę dając efekt ciągłego świecenia)
Ale czy diody w tym przypadku nie będą świecić bardzo słabym światłem? Czy procesor wyrobi?

Może lepiej by było np zaświecać w jednym czasie 5 diod (pobór 100mA)? Albo nawet 25 (ale wtedy mniej prądu na diode), całą warstwę poziomą tak, aby jeden rezystor przypadał tylko na jedną diodę (by nie było tak, że świecą się dwie szeregowo przez jeden rezystor).

Czekam na propozycję :) Najbardziej bym się skusił na 1 max 5 diod, bo wtedy można je karmić przyzwoitym prądem.

Co do oprogramowania tego, myślę, że nie miałbym większych problemów, gdyż programowanie ogarniam i nie jest to dla mnie nowością. Jednakże rad byłbym za jakieś wskazówki lub uwagi, które mogą się przydać.

Na chwilę obecną planuję stworzyć prostą tablicę w której przechowywałbym stan odpowiedniej diody (0 albo 1) i odpowiednią funkcję, która by za pomocą pętli kolokwialnie mówiąc leciała przez tą tablicę i odpowiednio "migała" odpowiednimi diodami które są jako 1 w odpowiednim czasie tak, by uzyskać efekt świecenia większej ilości diod (w tym przypadku wszystkich oznaczonych jako 1).
Dodatkowo odpowiednie funkcje ustawiające wartości w tablicy na zamierzone efekty.

Mam jeszcze pytanie do tych tranzystorów bipolarnych NPN BC337. Analizując różne schematy dostępne w internecie zauważyłem, że posłużyły one jako klucz. Sterowane są stanem wysokim z pinów procesora i załączają odpowiednie katody do masy. Czy nie byłoby można odrazu połączyć katod z pinami procesora i sterować nimi stanem niskim? Czy po prostu zastosowaliśmy te tranzystory aby wszystkimi pinami dla ułatwienia sterować stanem wysokim? Nie przełączamy nimi żadnych wysokich prądów, gdyż de facto jednocześnie w krótkim czasie świecić będzie tylko jedna - góra 5 diod, czyli chyba są one zbędne? (Pytanie bardziej teoretyczne, bo i tak w projekcie je zostawię, bym dla ułatwienia mógł również sterować katodą za pomocą stanu wysokiego, ale chciałbym wszystko wiedzieć)

Mam nadzieję, że niczego nie pominąłem i zadałem większość pytań jaka mnie trapiła.

Z góry bardzo dziękuję za wszystkie rady, odpowiedzi, krytykę oraz wyprowadzenie z błędu, jeżeli taki się pojawił.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 16:22 
Offline
Użytkownik

Dołączył(a): 05 lis 2013
Posty: 353
Lokalizacja: Kraków
Pomógł: 6

Witaj.
Też nie jestem "uczonym" w tej sprawie, ale pomyśl czy warto się bawić w taką kombinację. Czy nie lepiej jeden mocny tranzystor i nie będziesz musiał multipleksować całości.
Ale co do jasności to dobrze myślisz, że jeśli diodę zaświecisz często (50Hz) ale krótko (jakiś wycinek czasu z tego 50Hz) to spadnie jej "wydajność świetlna", ale nie będziesz widział migotania - ale czy o to Ci chodzi.
Druga sprawa - przyjmij, że wyjścia procesora nie nadają się do zasilania czegokolwiek w prąd. To są nóżki do sterowania czymkolwiek, ale nie do zasilania więc do nóżki tranzystor i potem sterujesz diodami. Jedna dioda to jeszcze nie problem, ale zasilać kilka diod z jednej nóżki nie polecałbym.

Co do tranzystorów to bramki łączysz z wyjściami AVR.
Możesz zastosować NPN i wtedy jak na bramce pojawi się wysoki stan to tranzystor się otworzy i będzie przewodził do masy (czyli uzyskasz zasilanie na katodzie diody) oraz PNP w którym jak podasz niski stan na wyjście AVR to uzyskasz otwarcie tranzystora (C do +5V a E do anody LED). Tylko z PNP nie jest taka prosta sprawa jak z NPN. Mianowicie o ile dla tych drugich nie ma znaczenia jakie jest napięcie na procesorze i napięcie do LED to przy PNP już to ma znaczenie. Jeśli np zasilanie procesora to 3,3V a na diody chcesz zasilac z 12V to ten układ już nie przejdzie. Ale jak dasz zasilanie procka 5V i napięcie do diod 5V to jak najbardziej będzie działać.
Oczywiście nie zapomnij o opornikach ograniczających prąd i opornikach do tranzystorów żeby się zamknęły przy stanie nieustalonym na AVR

Nie możesz łączyć tranzystorów w ten sposób co opisałeś i wybij sobie z głowy takie próby (nie sprawdzałem co prawda tego, ale zapewne mam rację) - a dlaczego? Nie wiem - może choćby dlatego, że jeśli przez bramkę popłynie prąd 10mA to pomiędzy C a E będzie płynął prąd 100x większy (500x większy itp) - a czy AVR tyle wytrzyma?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 16:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

tu masz mój malutki 3x3x3
topic101.html

a tu masz 4x4x4

topic4031.html?hilit=LED%20CUBE


popatrz

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 18:01 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

SunRiver czytałem te tematy już jakiś czas temu.

Co do wypowiedzi użytkownika iwi czyli ten schemat który stworzyłem jest w takim razie błędny? (Nie jestem pewien czy go przeanalizowałeś)

Wzorowałem się na poniższych schematach:

Obrazek

oraz odrobinę na

Obrazek

co prawda dotyczą one kostki 4x4x4, ale chyba z 5x5x5 nie powinno być większych zmian.

Dodam jeszcze, że samą kostkę LED mam już zbudowaną - anody kolumny, katody wiersze, więc nie chciałbym tego jakoś przebudowywać. Pozostało mi jeszcze zaprogramowanie tego wraz z odpowiednim połączeniem do mikrokontrolera. Mam nadzieję, że się nie pospieszyłem.

Czyli lepiej byłoby sterować za pomocą tranzystorów każdym wejściem do kostki? Bo zdaję sobie sprawę z tego, że nóżki procesora nie bardzo mogą służyć jako zasilanie, więc lepiej byłoby to wysterować prądem płynącym bezpośrednio z zasilania. (Tak jak robię to w tym przypadku z masą) Co do multipleksacji to chodzi o sposób łączenia diod LED w kostkę, czy właśnie to miganie z odpowiednią częstotliwością?

Pozdrawiam i dziękuję za odpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 18:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Zasadniczo to dojdzie ci 1 tranzystor i 5 pinów do ledów dodatkowo
GND Podasz przez tranzystory , a VCC możesz podać przez np ULN2803 i masz z głowy

natomiast multiplex polega na szybkim przełączaniu pięter (tranzystorów)

widzisz po podaniu GND na Piętro masz 5x5 LED które możesz zapalić dowolnie w tym obszarze i jak chcesz zapalić

1 diodę na 1 pietrze i 1 na drugim ... oraz 1 na trzecim itd ... to musisz właczyć odpowiednie tranzystory
to proste , ale gdy chcesz juz zapalić 1a , 2b , 3c, 4d , 5e to 1,2,3,4,5 numer diody , a a,b,c,d,e numer piętra
to już musisz odpowiednio szybko przełaczać tranzystory by było widać ruch diody po skosie w przestrzeni
co da efekt jak widzisz na tym filmiku z mojego małego 3x3x3 (brakło pinów w medze i nie chciało się tyle lutować)



sterowanie w zasadzie Cubem nie różni się od sterowania wyświetlaczem 7seg np 4 cyfry
bo każde piętro cuba to tak jak jedna cyfra w 7seg różna jest tylko liczba segmentów
a działanie takie samo :)

atmega powinna to znieśc spokojnie ... zakładając że nie bedziesz na raz za czesto zapalał wszystkich ledów

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 19:43 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

Obrazek

a filtracja czy stabilizacja jest ok? :P i ten manewr z dwoma źródłami zasilania przełączanymi (od programatora i od stabilizatora)

Co do kostki to będę jeszcze myślał nad rozwiązaniami.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 19:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

filtrowanie jest ok... ale nie rozumiem dlaczego uparcie wszyscy coś chcecie zasilać z programatora ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2013, o 20:01 
Offline
Użytkownik

Dołączył(a): 09 gru 2013
Posty: 103
Pomógł: 3

Może, racja. Trochę niepotrzebnie. Bo to zasilanie z programatora podczas pracy kostki może nieźle szarpać, albo po prostu być niewydolne :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO