Vaša IP adresa: 18.119.143.4
Počet návštev: 30488

LED kocka ovládaná cez USB

V tomto článku je opísaný postup zhotovenia kocky s LED diódami, ktorá je výborným vizuálnym doplnkom hlavne za zníženého osvetlenia. Každá hrana kocky obsahuje 5 LED diód a celá kocka pozostáva zo 125 LED diód (Obr. 1). Kocka môže byť pripojená k USB portu PC pomocou ktorého môžu byť konfigurované jednotlivé svetelné sekvencie. Pripojením k PC môže kocka reagovať na rôzne podnety, napr. môže svietiť a blikať podľa aktuálne prehrávanej hudby.

Obr. 1: LED kocka s USB rozhraním. Obr. 1: LED kocka s USB rozhraním.

Na internete je mnoho odkazov na zhotovenie LED kocky rôznych rozmerov. Väčšina návodov a schém má spoločný princíp ovládania kocky. Líšia sa len použitými integrovanými obvodmi a mikrokontrolérom, ktorý kocku ovláda. Ja som na ovládanie kocky použil mikrokontrolér ATmega88A od spoločnosti Atmel a navyše som kocku obohatil o ovládanie cez USB port PC. Samotné LED diódy nie sú pripojené priamo k výstupom mikrokontroléra, pretože na jednej strane nemá toľko vývodov a na strane druhej by nezvládol takú prúdovú záťaž. Ovládať 125 LED diód samostatne by bolo veľmi nepraktické z hľadiska prúdového odberu a privedenia 125 káblikov k jednotlivým diódam. Pri ovládaní kocky sa využíva zotrvačná vlastnosť ľudského oka – obraz zostáva ešte určitý čas na sietnici oka a preto je možné blikanie previesť na súvislý obraz. Kocka je preto ovládaná po jednotlivých vrstvách, to znamená, že v jednom čase je aktívna vždy iba jedna vrstva, ktorá obsahuje 25 LED diód. Ak chceme napríklad rozsvietiť celú kocku, musíme rozsvietiť LED diódy celej vrstvy a rýchlo prepínať medzi jednotlivými vrstvami. Ľudské oko nepostrehne striedanie vrstiev a preto máme dojem, že svieti celá kocka. LED diódy v každej vrstve sú zapínané a vypínané pomocou dvoch LED driverov TLC5922 od firmy Texas Instruments. Každý IO TLC5922 obsahuje 16 výstupov pre LED, obvody je možne reťaziť a zmnožovať tak počet výstupov. Na ovládanie 25 LED diód sú potrebné dva obvody, pričom 7 výstupov jedného z obvodov zostáva nezapojených. Výhodou LED driverov je možnosť nastavenia konštantného prúdu pre každý výstup. Obvod TLC5922 môže navyše ovládať prúd každého výstupu samostatne, táto vlastnosť pre ovládanie kocky nie je zatiaľ využitá.

Popis zapojenia

Schéma zapojenia je uvedená na Obr. 2. Zariadenie je napájané z 12V adaptéra, ktorý sa pripája kolíkovým konektorom do zásuvky DCJ0202. Pre napájanie je možné použiť adaptér s iným napätím v závislosti od použitého stabilizátora IC5 (pre 78S05 je to 7-25V). Dióda D1 chráni pred zmenou polarity napájacieho zdroja. Pomocou stabilizátora 7805 (IC5) je vstupné napätie stabilizované na 5V. Ja som použil stabilizátor 78S05 pre prúdový odber až 2A. LED dióda D3 signalizuje prítomnosť napätia 5V. Stabilizovaný zdroj 5V z výstupu IC5 je použitý pre napájanie mikrokontroléra (IC3) a LED driverov (IC1, IC2). Z USB portu je napájaný prevodník USB<->UART FT232RL. PC sa k zariadeniu pripája cez USB B konektor (X1). Pre lepšie odrušenie napájania cez USB je použité feritové jadierko. Odchádzajúcu a prichádzajúcu komunikáciu cez USB signalizujú diódy LED1 (žltá) a LED2 (červená). Okrem dátových liniek TD a RD sú vyvedené aj pomocné linky RTS a DSR. Jadrom celého zariadenia je 8-bitový AVR mikrokontrolér ATmega88A (IC3). Na doske sú vyvedené piny JP31 pre programovanie mikrokontroléra cez ISP rozhranie (MISO, MOSI, SCK, RESET) bez nutnosti vyberania MCU. MCU je taktovaný vnútorným kryštálom 8 MHz. V schéme a v návrhu DPS je zaradený externý kryštál Q1, ktorý slúži len pre prípad experimentovania s inou taktovacou frekvenciou. Kryštál Q1 a kondenzátory C10 a C11 preto nie sú nutné. Reset MCU je vyvolaný krátkym stlačením tlačidla S1. Výstupy PD3 až PD7 sú pripojené k bázam NPN tranzistorov Q1 až Q5, ktoré aktivujú jednotlivé vrstvy kocky. Emitory tranzistorov Q1 až Q5 sú pripojené k anódam LED diód danej vrstvy. Výstupy MCU PC0 až PC4 slúžia na ovládanie LED driverov (IC1 a IC2). Výstup označený ako SIN obsahuje dáta, podľa ktorých sa rozsvecujú jednotlivé LED diódy pripojené do dierok OUT0 až OUT24. K OUT0 až OUT24 sa pripájajú katódy LED diód. Po SIN sa vysiela 32 bitový kód. Najvyšších 7 bitov sa nepoužíva, zvyšných 25 bitov ovláda 25 LED v každej vrstve. Ak má bit v SIN hodnotu 1, LED svieti, v opačnom prípade nesvieti. Výstup SCLK predstavuje hodinový impulz pre IC1 a IC2. S každou nábežnou hranou SCLK sa zapíše bit zo SIN do posuvného registra IC1 a IC2. Po privedení logickej jednotky na XLAT sa hodnoty z posuvného registra objavia na výstupoch IC1 a IC2. Výstup BLANK slúži pre prípad núteného zhasnutia všetkých výstupov. Výstup MODE slúži na výber režimu LED drivera. Pomocou rezistorov R3 a R4 pripojených k IC1 a IC2 sa nastavuje prúd výstupov. Hodnotu prúdu treba nastaviť podľa použitých LED diód. Ja som použil zelené LED diódy s typickým prúdom 25 mA a maximálnym špičkovým prúdom 140 mA. Hodnotu prúdu som nastavil na hodnotu 31 mA, pretože navrhnutý program mikrokontroléra LED diódami bliká, nikdy súvisle nesvietia a tak nehrozí poškodenie LED diód. Je vhodné nastaviť hodnotu prúdu nad typickú hodnotu, pretože pri blikaní jas diódy klesá a nastavením vyššej hodnoty zaistíme optimálny jas. Prúd sa nastavuje pomocou rezistorov R3 a R4 podľa nasledovného vzťahu:

vzorec

kde VIREF je typicky 1.24 V. Pre prúd 31 mA majú R3 a R4 hodnotu 1,6 kΩ.

Obr. 2: Schéma zapojenia. Obr. 2: Schéma zapojenia.

Ak si chcete napísať vlastný program pre mikrokontrolér, odporúčam dočasne zvýšiť hodnotu rezistorov R3 a R4 tak, aby prúd LED diódou nepresahoval typickú hodnotu. Vyhnete sa tak poškodeniu LED diódy v prípade súvislého svietenia po dlhšiu dobu.

Doska plošných spojov je zobrazená na Obr. 3. Jedná sa o jednostrannú DPS. Na Obr. 4 a na Obr. 5 je uvedené osadenie súčiastok. Použitiu SMD súčiastok sa nedalo vyhnúť, pretože prevodník FT232RL a integrované obvody TLC5922 sa vyrábajú iba v SMD prevedení. Zo strany spojov som kvôli zjednodušeniu návrhu a ušetreniu miesta na doske pridal pár SMD kondenzátorov a rezistorov. Sieť LED diód v tvare kocky sa zasúva do predpripravených dierok JP1-JP25. Anódy diód v každej vrstve sú navzájom prepojené a pripájajú sa vodičom k dierkam JP26-JP30.

Obr. 3: Doska plošného spoja (strana spojov). Rozmer 14,8 x 10,7 cm. Obr. 3: Doska plošného spoja (strana spojov). Rozmer 14,8 x 10,7 cm. Obr. 4: Osadenie súčiastok. Strana súčiastok. Obr. 4: Osadenie súčiastok. Strana súčiastok. Obr. 5: Osadenie súčiastok. Strana spojov. Obr. 5: Osadenie súčiastok. Strana spojov.

Konštrukcia kocky

Na konštrukciu kocky som použil číre zelené LED diódy s priemerom 5mm. LED diódy vo vrstvách sú od seba vzdialené 2 cm. Aby boli tieto vzdialenosti dodržané, tak som si do drevenej dosky predvŕtal diery s priemerom 5 mm. Diery sú rozmiestnené v štvorcovej sieti 5x5 s hustotou siete 2 cm (Obr. 6).

Obr. 6: Ukladanie diód do predvŕtaných dier pre vzájomné spájkovanie. Obr. 6: Ukladanie diód do predvŕtaných dier pre vzájomné spájkovanie.

Pred spájkovaním som poohýbal vývody každej LED diódy tak, ako vidíte na Obr. 7.

Obr. 7: LED dióda s poohýbanými vývodmi. Obr. 7: LED dióda s poohýbanými vývodmi.

Upravené LED diódy som umiestnil do navŕtaných dier a ich anódy som navzájom pospájkoval (Obr. 8).

Obr. 8: Detail uloženia diód do predvŕtaných dier. Obr. 8: Detail uloženia diód do predvŕtaných dier.

Pridal som dve drôtové prepojenia, aby vrstva držala svoj tvar a nedeformovala sa. Týmto spôsobom som vytvoril päť samostatných vrstiev. Vrstvy sú potom prepojené pospájkovaním všetkých katód LED diód, ktoré sa nachádzajú nad sebou. Detail vzájomného prepojenia LED diód je uvedený na Obr. 9.

Obr. 9: Detail pospájania LED diód. Obr. 9: Detail pospájania LED diód.

Celá kocka je potom zasunutá do dierok JP1 až JP25. Dierky boli vytvorené z dierovej lišty odlomením. Ku každej vrstve je potom prispájkovaný drôtik a jeho koniec je postupne zasunutý do JP26 pre najvrchnejšiu vrstvu až JP30 pre najspodnejšiu vrstvu. Vytvorenie LED kocky zaberie dosť času, ale treba si dať záležať pri ohýbaní každého vývodu a následne pri spájkovaní, aby výsledná kocka nebola deformovaná.

Oživenie kocky

Ako prvé je potrebné do mikrokontroléra nahrať program, ktorý rozsvecuje jednotlivé LED. Okrem nahratia programu je nutné mať správne nastavené poistky (fuses). Nastavenie poistiek MCU je uvedené na Obr. 10.

Obr. 10: Nastavenie poistiek v prostredí Atmel Studio. Obr. 10: Nastavenie poistiek v prostredí Atmel Studio.

Kocka by mala fungovať hneď po pripojení externého zdroja. Pripojené napájacie napätie je indikované LED3. Mikrokontrolér má v sebe nahratý kód, ktorý obsahuje rôzne svetelné sekvencie, ktoré sa prehrávajú v slučke. Pomocou svetelných sekvencií si overíte, či boli všetky LED diódy pospájkované správne. Ak kocka nefunguje na prvý pokus, skontrolujte spoje, či nedošlo k prerušeniu alebo premosteniu plošného spoja, prípadne či ste nezabudli vložiť niektorú drôtovú prepojku. Napäťový stabilizátor sa zahrieva, pretože ním prechádza pomerne veľký prúd (25 LED x 31 mA = 775 mA). Stabilizátora sa preto nedotýkajte, aby nedošlo k popáleniu. Odporúčam k stabilizátoru pridať chladič kvôli lepšiemu odvádzaniu tepla. Kocku je možné ovládať pomocou USB portu počítača. K tomuto účelu bol v programovacom jazyku C# vytvorený softvér, ktorý kocku ovláda.

Ovládanie LED kocky cez USB port

Pri prvom pripojení kocky k počítaču sa nainštaluje virtuálny sériový port. Ak sa ovládač nenainštaluje automaticky, stiahnite si ho zo stránky www.ftdichip.com. Sériová linka je nastavená na rýchlosť 38 400 Baud a dáta sú posielané ako osembitové s jedným stop bitom. Pre prípad, že si chcete vytvoriť vlastný ovládací softvér uvádzam, že na rozsvietenie kocky sa posiela vždy 32 bitov (4x8 bit). Spodných 25 bitov určuje, ktorá LED dióda vo vrstve sa má rozsvietiť a najvyššie tri bity kódujú, ktorá vrstva sa má aktivovať. Pre aktivovanie prvej (najvyššej vrstvy) majú najvyššie bity hodnotu 001b, pre druhú vrstvu 010b, pre tretiu 011b, pre štvrtú 100b a pre najspodnejšiu vrstvu 101b.

Ako už bolo spomenuté, po pripojení napájania kocka svieti podľa programu, ktorý je nahratý v mikrokontroléri. Po každom dobehnutí programu sa overuje stav linky RTS. Ak v PC nastavíme RTS na jednotku, program z mikrokontroléra sa prestane vykonávať a kocka bude svietiť podľa údajov poslaných cez virtuálny sériový port. Aby sme nemuseli čakať až dobehne celý program z MCU stlačíme na doske tlačidlo pre RESET mikrokontroléra.

Pre pohodlné vytváranie svetelných sekvencií podľa želania bol vytvorený softvér s interaktívnym a intuitívnym užívateľským rozhraním v programovacom jazyku C#. Ak program po spustení nefunguje, tak pravdepodobne nemáte v počítači nainštalovaný .NET Framework 4.0. Uvedený framework si môžete stiahnuť priamo zo stránok spoločnosti Microsoft. Grafické užívateľské rozhranie je zobrazené na Obr. 11. Aplikácia je kvôli širšiemu použitiu v anglickom jazyku.

Obr. 11: Grafické užívateľské rozhranie pre ovládanie LED kocky. Obr. 11: Grafické užívateľské rozhranie pre ovládanie LED kocky.

LED kocku pripojte k napájaniu a USB portu počítača a až potom spustite uvedený softvér. Pri spustení si softvér sám zistí ku ktorému portu je kocka pripojená a nastaví linku RTS na logickú jednotku. O úspešnom pripojení informuje stavový riadok. Po stlačení tlačidla RESET na DPS sa rozsvieti jedna diagonála kocky. Po kliknutí na požadovanú LED sa zmení jej farba a zmena je hneď viditeľná aj na LED kocke. Softvér umožňuje rozsvietiť resp. zhasnúť celé riadky alebo stĺpce po kliknutí na prázdne tlačidlo na začiatku príslušných riadkov alebo stĺpcov. Keď sme dosiahli požadovaný efekt, zaradíme ho do sekvencie po kliknutí na tlačidlo Add to list. Za každú scénu v sekvencii je potrebné zaradiť pauzu. Pauza sa uvádza v milisekundách a pridáva sa do sekvencie kliknutím na tlačidlo Add pause. Scény a pauzy v sekvencii je možné upravovať a vymazávať kliknutím pravého tlačidla myši na príslušnú položku. Na prehratie sekvencie slúži tlačidlo Run. Pre zacyklenie sekvencie je potrebné zaškrtnúť políčko Loop. Na zastavenie zacyklenej sekvencie slúži tlačidlo Stop. Naprogramované sekvencie si môžete uložiť do súboru s príponou *.cub a neskôr tieto sekvencie opäť načítať. Aplikácia obsahuje zaškrtávacie políčko Sound Equalizer. Ak je toto políčko zaškrtnuté, tak kocka bliká podľa úrovne hlasitosti práve prehrávanej hudby. Pri zaškrtnutí políčka Demo sa pustí program z MCU. Po odškrtnutí tohto políčka je vhodné stlačiť tlačidlo RESET na DPS, aby sa demo sekvencia vypla okamžite. Šikovný programátor si môže vytvoriť vlastný program, ktorý by ho upozorňoval rozblikaním kocky na rôzne udalosti, napr. na nový email a pod.

Záver

Zostrojená LED kocka je výborným svetelným doplnkom miestnosti v tme a za zníženého osvetlenia. Kocka má predprogramovanú sekvenciu svetelných efektov, ktoré sa prehrávajú hneď po pripojení napájania. Po pripojení kocky k PC pomocou USB kábla a pomocou vytvoreného softvéru je možné vytvárať svetelné efekty podľa želania. Celková cena LED kocky sa odvíja hlavne od použitých LED diód. Je možné použiť číre aj matné LED diódy rôznych farieb a veľkostí. V závere by som chcel poďakovať Barbore Martikáňovej za nafotenie kvalitných fotografií LED kocky, ktoré boli použité pre tento článok.

Zoznam použitých súčiastok

C11 µF
C210 µF
C3 – C9100 nF (SMD1206)
C10, C1122 pF
C12470 µF
D11N4004
FERITFeritová perlička/jadierko
IC1, IC2TLC5922DAP
IC3ATmega88A
IC4FT232RL
IC57805
J1DCJ0202 (DC konektor)
LED1 - LED3LED3MM
Q1 - Q5BC639
Q6HC49/S (kryštál)
R1, R2330 Ω (SMD1206)
R3, R41k6 Ω
R5330 Ω (SMD1206)
S1tlačidlo
X1USB-B konektor
LED (125x)LED na kocku

Na stiahnutie

EAGLE - Elektrická schéma zapojenia
EAGLE - Návrh dosky plošných spojov
Program pre miktrokontrolér ATmega88A
Zdrojový kód v jazyku C
Programovanie sekvencií - Aplikácia pre OS Window