Oldal: 1 / 1

LED Kocka 3x3x3

HozzászólásElküldve: 2012.11.28. 02:05
Szerző: MDani
Sziasztok!

A múlt héten hobbiból építettem egy 3x3x3-as azaz 27 ledből álló LED kockát.
Elég kicsi, de ez amolyan "EXPERIMENTAL" verzió, csak az ízéért...
(Próbanyák, sok átkötés minden ami ezzel jár...)
Ennek alapján már tervben van egy 5x5x5-ös kocka ami már jóval szebb.

Szóóóóval, ezt a topicot azért nyitottam, hogy bemutassam nektek az elvet, illetve a kész művemet.

Elöljáróban annyit, hogy mind a kapcsolás, mind pedig a számítógépes vezérlő, illetve animáció készítő program
illetve a számítógép és a vezérlő közötti soros kapcsolat adatfolyama is saját tervezés.
(Ha valahol máshol ezek a módszerek fellelhetők csupán a véletlen műve.)


Kezdjük is az elején:

LED kocka "anatómia":
Aki ismeri a LED kocka működési elvét az ugorhat a következő részhez.
A LED kocka vezérlésekor egyszerre mindig csak 1 LED világít a kockában, egy komplett kép/animáció kirajzolásában olyan gyorsan váltakoznak a LED-ek, hogy a szemünk becsap minket és mindegyik LED-et világítani látjuk. Felépítésében annyi a lényeges, hogy ennél a kockánál 3 szint van kialakítva, mindegyik szinten 9 LED. Vagyis a teljes kockát felbonthatjuk 3 szintre és 9 oszlopra, vagyis 1 oszlopban 3 LED található. Ezeket a szinteket és oszlopokat fogjuk veszettül gyorsan kapcsolgatni.
És most folytassuk is tovább a lényegesekkel.

Vezérlő:
(Bocs a rossz minőségért... :cry: )
Kép
Mint már az előbb említettem próbanyákra épült a vezérlő.
Ami megtalálható rajta:
  • 3db BC182 - a szinteket kapcsolni
  • 9db BC556 - a 9 oszlop kapcsolására
  • 74LS154 - 4-ből 16 dekóder. (4 bites bináris bemenetet dekódol decimálisra.) Ez kapcsolja a az oszlop tranzisztorokat
  • ATmega8 - ez a lelke az egésznek, megvalósítja az adatkommunikációt a géppel, és vezérli a ledeket
  • és egy marék ellenállás

Működése:
Az ATmega8 soros kommunikációval kapcsolódik a számítógépre. A kommunikáció során teljes bájtokat küld a számítógép a vezérlőnek,
vagyis egy "ütemben" 8 bitet. Egy led világítását 1 bájt tárolja, vagy a pozícióját tárolja ha jobban tetszik. Tehát a teljes kocka vezérléséhez összesen 27 bájt kell. Ezzel a 27 bájtnyi adatt kitudunk rajzoltatni egy állóképet. Egy animációhoz összesen (képkocka*27) bájt szükséges.
A jó bájt-kihasználás végett a 8 bit szét lett "vágva" alsó és felső 4 bitre. A felső 4 bit tárolja a LED szintjét (1-2-3), az alsó pedig,
hogy hanyadik oszlopban van a LED (1-9). A kapott bájtot az ATmega8 szétcincálja és kiszedi magának a fontos adatokat.
Kép
A vezérlő úgy lett tervezve, hogy erősen függ a számítógépes kapcsolattól, vagyis számítógép és a saját vezérlőprogramja nélkül képtelen
működni. Összesen csak 27 bájtot tárol az általam írt ATmega8 firmware, vagyis csak egy állóképet. A számítógép ezeket az állóképeket löki
a vezérlőnek egymás után. Azért döntöttem így mert egyszerűbb volt így megírni a vezérlést.

A szinteket kapcsoló tranzisztorokat közvetlen vezérlem a ATmega8 lábairól, az oszlopokat viszont már a 4-16os dekóderrel vezérlem, mivel
a dekóder nélkül 9 lábat kellene használni az ATmegáról, így a dekóderrel viszont elég csak 4 láb, és még így is vannak kihasználatlan lában a dekóderen. 12 láb helyett így elég csak 7. Ez igen nagy kincs egy mikroprocesszornál. (a dekóder 4 bites bemeneti bináris számból dekódol egy decimálisat, vagyis a decimális számhoz tartozó lábat kapcsolja be mindig, azaz mindig csak 1 láb aktív.) A dekóder kimenetei kapcsolják az oszlopok tranzisztorait. A vezérlő közepén található egy gomb, ez az ATmega8 reset gombja ha netalán néha becsokizik a rendszer, mellette balra pedig az ATmega8 programozó csatlakozója. Alul pedig a zöld-piros led kombó a soros-USB átalakító, mivel laptopon nincs soros port.
Nagyjából ennyit a vezérlőről.

A számítógépes vezérlő/tervező:
Kép
A vezérlőprogram 4 napi masszív szoftverfejlesztés eredménye.
Bal oldalon lehet elkészíteni a képkockát, a fenti választógombokkal lehet kiválasztani, hogy melyik rétegen szeretnénk
dolgozni. Miután kiválasztottuk a 9 kör szimbolizálja a 9 LED-et a szinten, amire kattintva a LED világítását idézhetjük elő.
Amint mind a 3 szinten kész vagyunk a bejelölgetéssel a SAVE FRAME gombbal elmenthetjük a képkockát. Amit a listában láthatunk, megjelenik
a 2 oszlop, a LAYERID a szint szám, és a LEDID a LED száma. Az elmentett képkockák után a jobb oldali csúszkával beállíthatjuk, hogy
mennyi idő teljen el a 2 képkocka között, ezzel szabályozva az animáció sebességét, ezek utána SEND TO CUBE gombbal küldhetjük is az animációt a kockára. A bal oldalon a képkocka tervezőnél található egy REAL TIME kiválasztható box, ami ha be van kapcsolva, akkor tervezés közben már rögtön a kockán láthatjuk az eredményt, így könnyebb a tervezés.
Jobb fent a kommunikációs port és a port sebesség állítható és itt lehet kapcsolódni a vezérlőhöz.
Alatta a SAVE FRAME és LOAD FRAME gombokkal lehet menteni és betölteni az animációkat így ha készítettünk egy jó animációt, elmenthetjük egy fájlba így nem veszik el.
Ennyit a vezérlő szoftverről nagyvonalakban.

A LED kocka:
Ehhez különösebben nem fűznék kommentárt, az interneten sok leírást lehet találni, hogy hogyan kell összeállítani.
9 lyukat kell fúrni egy sablonra és abban összeforrasztani a szinteket. A szintek negatív feszültséget kapnak, az oszlopok pozitívat.
A vezérlő és a kocka között számítógépes szalagkábellel van megoldva a kapcsolat.

És a legizgalmasabb, működés közben.
Videó:
Szintén rossz minőségű, sajnos nincs megfelelő célszerszámom.
LED kocka 3x3x3

Köszi a figyelmet! :D

Re: LED Kocka 3x3x3

HozzászólásElküldve: 2012.11.28. 19:37
Szerző: ipacsb
Tök jó lett ! :D

Re: LED Kocka 3x3x3

HozzászólásElküldve: 2012.11.28. 21:48
Szerző: Kos
Szia Dani,

Megnéztem a videót a Youtube-on, nagyon meggyőző!
Gratulálok a kitartásodhoz!
A PC-s program milyen nyelven íródott?
A vezérlőé C-ben?
Üdv: Ákos

Re: LED Kocka 3x3x3

HozzászólásElküldve: 2012.11.29. 10:21
Szerző: MDani
Hali!
Köszönöm az elismerést!

Az PC-s programot C# nyelven írtam ( ezt a nyelvet nyomatják belénk a suliba orrvérzésig legalább most hasznát vettem :D ),
a vezérlő pedig természetesen C-ben (GCC) van.

Az AVR programozáshoz Eclipse fejlesztőkörnyezetet használok, WinAVR beépülő modulokkal.
( Az AVR Studio 4 már nem elég "izgalmas", a programozóm meg nem megy a 4-esnél újabb verziókkal... )
A PC-s progit meg Visual Studio 2010-ben csináltam, amit hál' istennek főiskolásoknak ingyen ad a Microsoft.

Amint sikerül szereznem egy jobb kamerát csinálok jobb felbontású videót is, illetve jobb képet a vezérlőről!

Re: LED Kocka 3x3x3

HozzászólásElküldve: 2012.11.29. 10:46
Szerző: MDani
Közben sikerült telefonnal csinálni egy szebb képet a vezérlőről.
Kép

A következő verzió már UV lámpával és fotonyákkal lesz csinálva -> közel gyári minőségű nyákot tudok így csinálni. 8-)