led cube e ULN2803,vari dubbi

ciao a tutti,

sono uno studente alla magistrale di ingegneria,purtroppo la mia ingegneria e' del ramo industriale quindi di elettronica ne so pochissimo,giustolle basi di elettrotecnica e fisica II.

In ogni caso,sto cercando di fare un led cube 6x6x6 con un arduino mega ma ho qualche perplessita.

Inizialmente ho preferito cominciare con un 4x4x4 cosi ha non complicarmi troppo la vita,perora ho realizzato una animazione con 3 led dove li facevo accendere alternativamente con un decremento del tempo di accensione e spegnimento di 50 ms.

Il cubo da me realizzato ha 16 positivi(uno per ogni colonna di 4 led) e 4 negativi che comandano i vari piani di accensione. Essendo tutto in parallelo,per alimentare ho bisogno di una tensione di ca 3 volt e un amperaggio di ca 80ma per ogni colonna,decisamente troppo per i pin di arduino.

Bene,ho visto che per i negativi,cioe per i piani potrei usare un ULN2803 senza neanche usare dei rele e volendo potrei usare due uln2803 con 16 rele per i positivi,ma ovviamente il costo sale un po.

Esiste qualcosa di simile ma che chiuda i positivi?cosi da poterlo usare per i pin delle colonne?

Ogni singolo pin del uln2803 quanto assorbe?non il pin che va collegato ai led,quello che va collegato al pin di arduino,vorrei capire se e' possibile accendere tutti i led o se sforo i 200ma(so che ptrei dare dei tempi di on off molto bassi e simulare una accensione simultanea ma cosi il listato di programmazione si allunga a dismisura.

grazie in anticipo e non preoccupatevi,ho tempo ca fino a marzo 2015,quindi non ho l'acqua alla gola.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

con positivo intendi anodo dei led ? comunque basta vedere i datasheet dei componenti, googlizza "datasheet + NomeDelComponente". I led inoltre non gli accendi tutti insieme molto probabilmente li multiplexy (vedi esempi https://www.google.it/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=multiplexed+seven+segment&spell=1[/url). Magari ci metti di più ma sicuramente credo sia migliore poi la gestione se lo multiplexy rispetto a tenerlo acceso.

xyzthjk: Ogni singolo pin del uln2803 quanto assorbe?non il pin che va collegato ai led,quello che va collegato al pin di arduino,

1.4mA quindi non problem per la scheda arduino

hai provato con i BCS547?

Credo che stia cercando qualcosa tipo l'UDN2981 o simile ...

http://pdf.datasheetcatalog.com/datasheet/allegromicrosystems/2981.pdf

Etemenanki: Credo che stia cercando qualcosa tipo l'UDN2981 o simile ...

http://pdf.datasheetcatalog.com/datasheet/allegromicrosystems/2981.pdf

nid69ita: Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Il regolamento lo avevo già letto ma mi era sfuggito che mi dovevo presentare :D

Riguardo le varie guide ho dato una lettura e proprio in una di queste ho letto che si poteva usare il 2803 per pilotare i negativi.

Etemenanki: Credo che stia cercando qualcosa tipo l'UDN2981 o simile ...

http://pdf.datasheetcatalog.com/datasheet/allegromicrosystems/2981.pdf

eh,purtroppo i datasheet non è che li capisca tantissimo,giusto la parte termica :D ho pensato di cercare direttamente nel forum.

In pratica il 2981 fa quello che fa il 2803 ma per gli anodi,giusto?Sembrerebbe proprio quello che sto cercando.

In pratica si, il 2803 chiude verso massa quando piloti gli ingressi, mentre il 2981 chiude verso il positivo ... se non usi carichi induttivi (come nel tuo caso), ne il comune dei diodi del 2803, ne quello del 2981, vanno collegati a nulla ...

Comunque, una precisazione, riguardo a quello che hai scritto nel tuo primo post a proposito dei 3V di alimentazione ... mi fa pensare che tu non abbia messo le resistenze sui led ... per precauzione e regola comune, andrebbero sempre usate (il led funziona in corrente, usarlo senza una resistenza di limitazione, vuol dire andare a cercarsi quasi sempre dei problemi ;))

Ti ringrazio per la conferma.

Riguardo le resistenze,si,sarebbe meglio usare per esempio i 5 volt direttamente,così con un solo alimentatore stabilizzato potrei alimentare led e scheda arduino.

Solo che,come faccio a dimensionare correttamente le resistenze?Devo usare la legge di ohm ok,ma come?

Ipotizzando alimentazione a 5 volt,led da 3 volt e 0,020 azzarderei 100 ohm di resistenza,solo che poi quando accendo 2 piani insieme,essendo in parallelo diventano 0,04A.

Mentre scrivevo credo di aver indovinato la soluzione...accendo un piano alla volta,se voglio creare l'illusione che sia tutto acceso,basta farli accendere con tempi di accensione sotto i 40ms?

Etemenanki: In pratica si, il 2803 chiude verso massa quando piloti gli ingressi, mentre il 2981 chiude verso il positivo ... se non usi carichi induttivi (come nel tuo caso), ne il comune dei diodi del 2803, ne quello del 2981, vanno collegati a nulla ...

Il ULN2803 non deve essere collegato a +5V; basta la massa. Il pin com deve eessere collegato a +5V solo se si pilota dei carichi resistivi e percui si usa il diodo di protezione interno. Il A2981 deve essere collegato sia a massa che a +5V visto che deve portare l' uscita a +5V.

Ipotizzando alimentazione a 5 volt,led da 3 volt e 0,020 azzarderei 100 ohm di resistenza,solo che poi quando accendo 2 piani insieme,essendo in parallelo diventano 0,04A.

Non devi mai accendere due piani in contemporanea ma sempre solo uno.

Ciao Uwe

Metti le resistenze sulle colonne ... siccome sono accese in multiplex, solo un diodo per ogni colonna sara' acceso di volta in volta, quindi la corrente la calcoli come se fosse un solo diodo ;)

Etemenanki:
Metti le resistenze sulle colonne … siccome sono accese in multiplex, solo un diodo per ogni colonna sara’ acceso di volta in volta, quindi la corrente la calcoli come se fosse un solo diodo :wink:

Non proprio, in un cubo 6x6x6 hai 6 righe, 6 colonne e 6 layer , vengono accesi 6 led alla volta (le 6 righe) per 6 colonne e 6 layer , in totale ogni led viene acceso per 1/36 del tempo totale (6 colonne per 6 layer) quindi la corrente dovrebbe essere circa 36 volte la corrente nominale(in teoria), ora per i cubi non si usa mai led normali ma tutti ad alta luminosità che già si accendono bene a 1 o 2mA quindi dando circa una corrente da 40mA a 80mA per ogni riga ci siamo. L’alimentatore deve alimentare un massimo di 6 righe alla volta quindi con 40mA deve fornire 240mA max. Quindi anche con la sola usb sarebbe sufficiente per alimentare un cubo 6x6x6 , la resistenza di riga (led rosso) è circa 5-0.8-0.8-1.6 / 0.040 = 45 ohm mettila da 47ohm.

Se si usassero led normali da 10mA, la corrente di riga sarebbe di 360mA rischiando di rompere qualche diodo a lungo andare se di bloccasse il processore o durante il debug del programma, per questo non si usano led normali, oltre al fatto che l’alimentatore dovrebbe fornire 360x6=2.2A, una coorente quasi 10 volte superiore.

grazie a tutti per le dritte,gentilissimi,vi tengo informati sugli sviluppi che seguiranno a breve :D

eccomi...a distanza di meno di un mese ho realizzato il mio primo led cube :D

4*4*4 led bianchi da 5mm,sfrutto tutti i 20 pin del mio arduino.

Come suggerito ho usato 2 2981 per i positivi,un 2803 per i negativi,16 resistenza da 100 ohm(ho l'alimentazione a 5 volt) e qualche saldatura,ho già ordinato l'arduino mega per fare il 6*6*6(si,potrei usare lo shift register ma al momento non ho le risorse mentali).

Ho capito che posso accendere solo un led per colonna,altrimenti le resistenze sono sottodimensionate ma volendo dare l'impressione che i led siano tutti accesi ho un problema.

Accendo tutti i led di un piano e accendo prima il primo spegnendo 2 3 e 4,poi il secondo spegnendo 1 3 e 4 e via dicendo impostando un tempo di 1 ms.

Good,solo che per 4ms devo scrivere (da 16 a 19 sono i pin dei piani)

digitalWrite(16, LOW); digitalWrite(17, LOW); digitalWrite(18, LOW); digitalWrite(19, HIGH); delay(1);

digitalWrite(16, LOW); digitalWrite(17, LOW); digitalWrite(18, HIGH); digitalWrite(19, LOW); delay(1);

digitalWrite(16, LOW); digitalWrite(17, HIGH); digitalWrite(18, LOW); digitalWrite(19, LOW); delay(1);

digitalWrite(16, HIGH); digitalWrite(17, LOW); digitalWrite(18, LOW); digitalWrite(19, LOW); delay(1);

per fare 0,4 s devo scrivere questo ciclo 100 volte,per 4s 1000 volte.

Non c'è un comando per dire tipo...fai questa istruzione 10000 volte,poi passa a fare quest'altro loop?

Si, c'e', si chiama ciclo for ;)

Metti il tuo blocco di istruzioni all'interno di un ciclo for che conta da 1 a 1000, e te le esegue 1000 volte ;)

ok,dopo aver scoperto i segreti del for ho esaurito la memoria,sono venute delle animazioni molto carine,stasera se trovo 2 min posto un video

Se voi sappiate,è possibile sfruttare i pin analogici del mega come digitali in uscita?

vorrei fare un cubo 7*7*7,ma ho bisogno di 56 uscite a 5 volt,ma l'arduino mega ne ha 54,mentre se riuscissi a sfruttare anche gli analogici sarebbero 54+16=70...

e mannaggia,per soli 2 pin non riesco a fare il led cube 8*8

Certo che puoi usare come digitali, il loro numero dovrebbe essere per logica dal 54 al 69 Il MC avrebbe altri 16 pin disponibili per un totale di 86 I/O ma per la solita strana logica del progettista non li ha portati fuori su un connettore