Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

16
voti

Cubo LED 4x4x4 Multicolor

Indice

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.


Base di costruzione

Base di costruzione


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 2.jpg

Base di costruzione 2.jpg


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:


Schema colori.jpg

Schema colori.jpg


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:


Tre piani.jpg

Tre piani.jpg

Ultimo piano.jpg

Ultimo piano.jpg


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):


Cubo prova.JPG

Cubo prova.JPG

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_led_schema

Cubo_led_schema





Lista Componenti

  • R_1=10 \, \rm{k} \Omega
  • R_2=1\, \rm{k} \Omega
  • R_3-R_6=4,7 \rm{k} \, \Omega
  • R_7-R_{22}=150 \, \Omega
  • C_1-C_2=22 \, \rm{pF}
  • C_3=1 \, \rm{nF}
  • C_4=47 \, \mu \rm{F}
  • D_1=1N4148 \,
  • X_1=Connettore\ Alimentazione \,
  • SV_1=Connettore\ 6\ poli\ ICSP \,
  • Q_1=16Mhz \,
  • T_1-T_4=Transistor\ PNP\ che\ supportino\ almeno\ 200mA \,
  • IC_1=PIC16F876 \,


Attenzione!! La scheda necessita di un’alimentazione regolata di 5volt. Serve un regolatore esterno di cui in seguito trovate lo schema:


Alimentazione

Alimentazione


Lista Componenti:


  • SL1=Ingresso tensione alternata min. 6 V ac max 14 V ac
  • B1=Ponte diodi (IN4001)
  • SL2=Uscita 5 volt stabilizzati


Lo schema è il classico circuito di regolazione della corrente, quindi non c’è niente d’aggiungere.

Ecco l’alimentatore:


Alimentatore

Alimentatore


Questo è invece il master del circuito stampato:


pcb

pcb

pcb_color1jpg.jpg

pcb_color1jpg.jpg


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.


Prima Incisione.jpg

Prima Incisione.jpg


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.


Incisione1.jpg

Incisione1.jpg


Basetta dopo 10 minuti a mollo nel cloruro: già si intravedono le piste, ma l’incisione non è ancora completa.


Incisione2.jpg

Incisione2.jpg


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)


Incisione3.jpg

Incisione3.jpg


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.


Scheda.jpg

Scheda.jpg


Ecco completata (o quasi, manca il connettore perché non lo avevo ancora preso).


Lato componenti.jpg

Lato componenti.jpg


Lato saldature.


Lato saldature.jpg

Lato saldature.jpg


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.


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 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.


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

36

Commenti e note

Inserisci un commento

di ,

Ciao caro amico .. Gli dico che tutto stava andando molto bene .. fino a quando vi dico che nel mio paese (BOLIVIA) CRYSTAL 16MHZ non riesce .. Si prega sarebbe molto difficile per me di cambiare cube_led vostro programma in linguaggio C per il 876 da un cristallo di 12MHz, 20MHz, 10MHz o 4MHz Puoi scegliere quelli sono gli unici che mi vengono in paese per favore .. Armata solo io ho tutto il necessario quindi per favore per favore per favore Aspetto una tua risposta al più presto Grax possibile! e un dubbio: transistor PNP sono? ho preso si potrebbe indicare che sto facendo con un 2N2222 NPN è la variazione più ..?

Rispondi

di ,

vi ringrazio molto .. Spero che tutto va bene .. in 2 giorni vi ringrazio molto darvi i risultati. Ho trovato ha il Cubo_led_v01 nome. una domanda di più .. è la possibilità di aggiungere testi? per esempio: "UNIVALLE" che è il nome della mia università. Ho un file con i codici di lettere, ma credo che q è per la 877 spero che la vostra risposta vi ringrazio molto.

Rispondi

di ,

Ciao bydiego, anche io ho utilizzato un PIC16F876 per il progetto. Nella sezione "Tutti i files" trovi sia il file hex per il PIC16F876 (primo link) e sia per il file PIC16F876A (secondo link).

Rispondi

di ,

hola. Io sono di primo studio di ingegneria elettronica Bolivia presentato e mi è piaciuto di questo progetto, dato che molti progetti atmel microcontrollori trovato ATtiny e altri. ma nessuno a un PIC. sembra incredibile per me l'intero progetto, l'unico problema è che ho un PIC16F876 e il vostro codigo.hex è per un PIC16F876A. poi il grande favore che chiedo è che mi ha in codice per un PIC16F876 si prega di inviare al mio indirizzo email: di_sc@hotmail.es

Rispondi

di ,

Si, se fai così il connettore non serve. Sul PIC devi mettere il file con estensione ".hex" . Quello che ti ho passato via MP.

Rispondi

di ,

ma quindi se io uso 1 programmatore per pic..cè prendo il mio pic e lo metto su 1 programmatore e poi lo rimonto non mi serve??cmq il programma lo posso mettere sul pic scritto in esadecimale??grazie=)

Rispondi

di ,

Il programmatore. Il connettore ha questa piedinatura: pin 1: GND pin 2: PGC pin 3: PGD pin 4: VCC pin 5: MCRL

Rispondi

di ,

al connettore 6 poli che cosa dovrei attaccare??grazie=)

Rispondi

di ,

Nono. Non succede niente. Prima di collegare il PIC controlla che le tensioni siano tutte ok.

Rispondi

di ,

se attivo il cubo prima di aver inserito il pic posso creare danni o che succede=)?perchè ho appena finito e devo ancora programmare il pic

Rispondi

di ,

Ciao, con i led rossi il codice non cambia, semmai si può togliere il gioco di luci che fa accendere tutti i led di un colore per volta, che sul tuo cubo non avrebbe senso. Per il cambio di pic, non c'è problema. Visto che sei il secondo che mi chiede questa cosa, posto direttamente il codice per il 16F876A.

Rispondi

di ,

ciao io sto provando a creare 1 cubo simile al tuo=)ho però tutti i led rossi mi potresti dire che devo cambiare nel codice del pic?(come avrei capito sono alle prime armi ma molto interessato a queste cose)e inoltre è uguale se monto il pic 16f876a?grazie in anticipo per le risposte=)

Rispondi

di ,

Si, sono praticamente uguali. L'unica cosa è che devo compilare il firmware per il tuo pic, dato che il file hex del 16F876 penso che sia leggermente diverso dal 16F876A. Contattami via MP se ti servono altre informazioni a riguardo.

Rispondi

di ,

Salve sono molto impreparato sulla programmazione e anche sui PIc ho appena cotruito il cubo led con tutti i componenti e i led.. ma mi chiedevo se utilizzassi un PIC16f786A al posto del PIC16f876! funzionerebbe lo stesso o no?

Rispondi

di ,

veramente bravo !!!! è spettacolare

Rispondi

di ,

Per me è un ottimo elemento di desing funzionale. Mi rilassa.

Rispondi

di ,

Complimenti vivissimi per aver realizzato un progetto così ricco di effetti luce.Complimenti anche per l'articolo esaustivo e per il video finale che rende perfettamente la compiutezza del tuo lavoro.Complimenti!!!!!!!

Rispondi

di ,

PRFKT!

Rispondi

di ,

ok grazie 1000.. io avevo messo quel comunissimo diodo data la funzione nel circuito.. però volevo coferma da te.. bel lavoro! :D

Rispondi

di ,

Hai ragione! Mi sono dimenticato di inserirlo! E' un 1N4148.

Rispondi

di ,

ciao scusa volevo domandarti una cosa Davide.. qual'è il diodo D1 nel circuito.!? hai dimenticato di metterlo nella lista dei componenti.! (P.S. Sto ricreando il tuo circuito per la mia stanza..)

Rispondi

di ,

Bravissimo! Bellissimi effetti di luce e ottima presentazione.

Rispondi

di ,

Bhe innanzitutto complimentoni sono rimasto senza parole, volevo chiederti l'acquisto dei componenti l'hai effettuato tramite siti online o negozi al dettaglio?

Rispondi

di ,

Complimenti Ottimo Lavoro, Bravo Galaxi83.

Rispondi

di ,

Dannazione è spettacolare! :D

Rispondi

di ,

Veramente BRAVO! Hanno ragione RenzoDF e admin: un lavoro spettacolare, tanto nella realizzazione quanto negli effetti di presentazione. Continua così!

Rispondi

di ,

Bravo.

Rispondi

di ,

COMPLIMENTONI! 10 e lode! Un lavoro molto ben fatto!

Rispondi

di ,

very very good davide :)

Rispondi

di ,

Grazie mille per i complimenti! Detto da voi è molto per me! Sono molto felice di avervi emozionato e stupito con questo progetto, e sinceramente non me lo sarei aspettato. Devo ringraziare c1b8 e posta10100 che senza il loro aiuto, non so se sarei riuscito nell'impresa. Grazie! Sicuramente non sarà il mio ultimo articolo, ma solo uno dei tanti che spero di riuscire a realizzare e a pubblicare (un altro è in arrivo!).

Rispondi

di ,

COMPLIMENTI! Gran bel lavoro, non è il tuo primo lavoro così ben riuscito, ma con il filmato questo lavoro è spettacolare. Bravissimo!

Rispondi

di ,

I bravi ragazzi ci sono Renzo!

Quando ho visto l'articolo, completato dal video finale, mi sono perfino emozionato. Sarà l'età, saranno gli interventi stupidi e sciocchi di chi ha perso l'allegria del sapere, e lo vede come un'acida competizione che gli corrode l'esistenza, ma quando arrivano lavori come questi, freschi, spontanei, pieni di gioia e di desiderio di condividerla, beh, dimentico tutto e mi sembra di tornare ragazzino e di riscoprire quanto ci può essere di gradevole nel nostro mondo.

BRAVISSIMO Galaxi93 (alias Davide Oldani) e GRAZIE!!!

Rispondi

di ,

UN CAPOLAVORO !!! ... mi hai davvero stupito Davide ... e NON è facile te lo assicuro! Complimenti per l'idea, l'articolo e per il VIDEO, semplicemente IN-CRE-DI-BBILE ! Un azzeccatissimo abbinamento fra Musica and Luci !!!

Rispondi

Inserisci un commento

Per inserire commenti è necessario iscriversi ad ElectroYou. Se sei già iscritto, effettua il login.