cubo led 4x4x4 m - electroyou.it · realizzazione del cubo per realizzare il cubo di led, mi sono...
TRANSCRIPT
Davide Oldani (Galaxi93)
CUBO LED 4X4X4 MULTICOLOR
1 July 2010
Introduzione
Se ti piacciono da morire i led, quelle lucine vivaci e colorate che esplodono in tanti colori
armoniosi, questo è il progetto che fa per te! Sono 64 led (4x4x4) di 4 colori diversi, collegati
in multiplexing e comandati dal pic 16f876. Penso che sia uno dei pochi (se non l’unico, dato
che non ho trovato nulla) cubi a led 4x4x4 controllato da un pic e programmato intermante in C
con mikroC. Infatti si trovano molti progetti di cubi 3x3x3 o comunque controllati da altri tipi di
microcontrollore (principalmente Atmel).
Realizzazione del cubo
Per realizzare il cubo di led, mi sono costruito una basetta di legno spessa almeno 2 cm, e forata con
punta del 5,5 (il foro l’ho fatto leggermente più largo per agevolare l’uscita dei led a lavoro finito)
in punti equidistanti e paralleli tra di loro.
ELECTROYOU.IT
CUBO LED 4X4X4 MULTICOLOR 1
La distanza tra i vari led è di 3 cm su ogni lato. Basta quindi prepararsi una semplice griglia a 9
quadrati di lato 3 cm e praticare i 16 fori necessari su ogni vertice. Fate attenzione ad bloccare bene
il foglio sul pezzo di legno. Il risultato finale della basetta forata dovrebbe essere questo:
Base di costruzione
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 2
Ora non vi resta che mettere un led per ogni foro, in modo intelligente però. Infatti ogni catodo di
tutti i led dello stesso piano devono essere collegati tra di loro. Mentre i anodi di tutti i led devono
collegarsi con gli anodi dei led nella stessa posizione ma su piani diversi. Anche i colori dei led sono
stati disposti con criterio: ho fatto in modo che non ci sia mai sulla stessa fila (sui assi x, y e z) due
led dello stesso colore. Ecco lo schema dei colori e catodi:
Base di costruzione 2.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 3
Ogni piano poi va ruotato di 90 gradi (il senso di rotazione non è rilevante, basta mantenerlo per
ogni piano) rispetto a quello sottostante. Ecco alcune immagini:
Schema colori.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 4
Tre piani.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 5
Dato che i miei led avevano i reofori troppo corti, ho dovuto aggiungere dei fili di ferro (diametro
1mm) per dare più robustezza al cubo. Nella prima immagine si vedono i tre piani completi: quelli
sono i primi tre piani. L’ultimo piano è quello che vedete nella seconda foto: dovere saldare agli
anodi dei led, dei fili di ferro sufficientemente lunghi (almeno 5 volte la distanza tra un led e l’altro,
quindi nel mio caso 3*5=15cm). Adesso viene la parte più difficile ovvero quella di inserire e saldare
tutti gli altri 3 piani insieme e a distanza stabilita. Su questa fase non c’è molto da dire… è solo un
gran sbattimento allineare il tutto e saldare ogni pezzo. Ricordatevi, se fate come me, di ruotare
ogni volta il piano led, rispetto a quello sottostante.
Ed ecco il cubo finito (nell’immagine è collegato a dei connettori per una fase di prova generale):
Ultimo piano.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 6
Lo schema e il circuito stampato
Lo schema è molto semplice. Le porte B e C del pic sono state collegate ai 16 anodi del cubo
tramite la solita resistenza di limitazione della corrente (calcolata su un singolo led, dato che il
programma permette di accendere solo un piano alla volta) mentre le prime 4 porte A del pic sono
state collegate alle basi di altrettanti transistor che controllano i vari piani del cubo. E’ presente il
connettore ICSP per la programmazione on-board e il pulsante di reset.
Cubo prova.JPG
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 7
Cubo_led_schema
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 8
Lista Componenti
•
•
•
•
•
•
•
•
•
•
•
•
•
Attenzione!! La scheda necessita di un’alimentazione regolata di 5volt. Serve un regolatore esterno
di cui in seguito trovate lo schema:
Lista Componenti:
• SL1=Ingresso tensione alternata min. 6 V ac max 14 V ac
• B1=Ponte diodi (IN4001)
• SL2=Uscita 5 volt stabilizzati
Alimentazione
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 9
Lo schema è il classico circuito di regolazione della corrente, quindi non c’è niente d’aggiungere.
Ecco l’alimentatore:
Questo è invece il master del circuito stampato:
Alimentatore
pcb
pcb
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 10
L’unico errore in questo stampato è stato quello del connettore di alimentazione, di cui ho sbagliato
le dimensioni. Per questo lascio allegato sia il file pdf del master e sia il file sorgente per eagle, in
maniera da poter lasciare a voi la modifica del componente.
Ecco le varie
fasi per la preparazione
della basetta finale e la saldatura dei componenti:
Scheda dopo essere stata esposta alla luce ed essere trattata con lo sviluppo del positivo. E’ stata
impressa con una luce alogena da 300 W a 15 cm di distanza per 2 minuti e 30 secondi.
pcb_color1jpg.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 11
Basetta appena immersa nel cloruro ferrico: la basetta galleggia e in questo modo si può verificare
lo stato dell’incisione senza toccare nulla. Il cloruro è stato preriscaldato a 40°C.
Prima Incisione.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 12
Basetta dopo 10 minuti a mollo nel cloruro: già si intravedono le piste, ma l’incisione non è ancora
completa.
Incisione1.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 13
Basetta dopo 15 minuti: sembra pronta, ma con un’accurata osservazione si notano ancora delle
parti non completamente corrose (dove c’è il connettore ad esempio)
Incisione2.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 14
Scheda lavata e passata con solvente alla nitro per rimuovere il fotoresist sulle piste che su queste
basette è molto spesso e non permette la saldatura. La scheda è stata infine forata.
Incisione3.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 15
Ecco completata (o quasi, manca il connettore perché non lo avevo ancora preso).
Scheda.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 16
Lato saldature.
Lato componenti.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 17
Per essere il mio primo circuito stampato della mia vita, non è uscito per niente male, vero? Mentre
lo facevo già mi preparavo psicologicamente ad un insuccesso e invece va che lavoro!
Il programma
E ora arriva la parte veramente tosta. Il programma, per me che mi posso considerare un
programmatore principiante, è davvero complesso e articolato. Ringrazio subito gli utenti del
forum Electroportal.net che mi hanno aiutato nel stendere il codice nelle sue parti più cruciali. In
particolare ringrazio posta10100 e c1b8 che mi hanno aiutato molto. Esso è stato scritto in C con
MikroC PRO.
Per l'accensione dei led, il programma si affida principalmente su tre funzioni con compiti
differenti:
acc_led;acc_leds;check_led;
Le prime due funzioni agiscono direttamente sulle porte del pic accendendo in multiplexing i led.
Lato saldature.jpg
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 18
void acc_led(char x, char y, char z);
accende un singolo led alla volta, fornendo le coordinate del led d'accendere in numeri che vanno
da 0 a 3.
void acc_leds(int xy, char z);
Accende invece un piano alla volta fornendo un numero a 16 bit (un bit per ogni led) e un numero
da 0 a 3 del piano corrispondente. Questa funzione viene usata dalla funzione check_led.
void check_led (int tempo_effetto);
Questa funzione accende in multiplexing il cubo per un determinato tempo dato dalla variabile
tempo_effetto. La funzione va a leggere l'array a 16bit "map[4]" che contiene lo stato di ogni
singolo led di ogni piano. Attenzione, per questioni pratiche, il valore minimo del tempo è di 20ms.
Poi ci sono una serie di funzioni che hanno il compito di manipolare lo stato dei led, agendo
direttamente sull'array "map". Sono le funzioni:
cambiaStato,cambiaStati,getStato,reset,cambia_if.
La loro funzione è descritta nel programma.
Esistono poi due funzioni che hanno il compito di generare un numero pseudo-random necessario
ad alcuni giochi di luce (pioggia e tempesta). Il programma affida la generazione del numero
casuale al ritorno di un valore non specificato, che proprio per questo motivo, diviene casuale.
Il resto del programma serve come supporto ad alcuni effetti di luce e anche a queste funzioni.
Ad ogni modo guardate il codice sorgente che è commentato. In caso di dubbi potete sempre
chiedermi spiegazioni a riguardo. Purtroppo non sono riuscito a rientrane nel limite della versione
demo di MikroC PRO di 2k di codice. Quindi se volete modificare il codice e cambiare, per esempio,
l'ordine e il tempo degli effetti, dovete avere la versione completa del programma. Dato che non
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 19
tutti lo hanno, vi posso aiutare io. Basta che mi inviate il sorgente modificato e ve lo compilo io per
voi. Tanto è un operazione molto veloce per me.
Il Video
Ecco il video del cubo in funzione. Sotto ogni gioco di luce trovate il suo nome corrispondente nel
codice in modo da rendervi conto di che giochi di luce si tratta.
Flash
Tutti i files
Qui potete trovare tutti i vari file che possono servire.
E qui è presente il file hex dello stesso codice ma per il PIC16F876A.
Ovviamente sono ben accetti critiche, consigli e domande sul cubo.
Il progetto completo è anche visitabile sul mio sito: Galaxi93.Altervista.org
Estratto da "http://www.electroyou.it/mediawiki/
index.php?title=UsersPages:Galaxi93:cubo_led_4x4x4"
ELECTROYOU.IT DAVIDE OLDANI (GALAXI93)
CUBO LED 4X4X4 MULTICOLOR 20