matrice a led 10 x 60

Ciao a tutti ho realizzato pochi giorni fa la mia prima matrice di led 5 x 4 con incluso un algoritmo per lo slide di caratteri... sebbene la facilità del progetto per occhi esperti... per il mio piccolo e martoriato ego è stata una bellissima soddisfazione...

ora vorrei realizzare un pannello più grande... sono stato "sfidato" da qualcuno che non crede nelle mie capacità a creare una matrice di led 10 x 60...

arrivo al punto... mi rendo conto ke dovrò utilizzare gli shift register per ampliare le porte... volevo sapere a qualke altre difficoltà andrei incontro.... difficoltà che ignoro a causa della mia pochissima esperienza.. mi preoccupa la gestione della corrente ...

vi ringrazio fin d'ora per il vostro sempre prezioso aiuto..

Ciao a tutti DAXweb

Reply to
Contrario
Loading thread data ...

Contrario ha scritto:

Uhm dei shift register? Io userei dei normalissimi registri dove gli enable sono collegati in castaca con un encoder... I buffer cotengono

8bit... tu devi mappare 10x60 bit ovvero 600. Che fortunatamente è divisibile per otto ( 75 ) quindi teroricamente ti basterebbero 75 buffer indicizatti a 7bit ( 128 max ) tramite un encoder. Colleghi tutto insime e hai una mermoria che volendo potresti anche mapparla direttamente ( tipo una ram esterna )

Poi dipende se vuoi fare qualche effetto ( tipo lo scorrimento della scritta ecc ) allora devi complicare un po' le cose... e si li i shift magari ti aiutano, ma quanto detto sopra rimane valido

Questo è quello che fare io se dovessi fare una cosa del genere. PEro' visto che non l'ho mai fatto magari sbaglio su tutta la riga :D

--
Il Razziatore,
"Lo sviluppo di una nazione si misura anche dallo stato della sua rete 
ferroviaria". Camillo Benso Conte di Cavour
"Per tutto quanto non previsto nel presente regolamento il capostazione 
deve usare senno e ponderatezza." Regolamento d'esercizio FS
-----------------------------------------------
MSN   : IlRazziatore@netscape.net
ICQ   : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com
Reply to
Il Razziatore

Sulu! Fuoco coi phaser su Il Razziatore che ha violato la prima direttiva in data stellare dom 30 mar 2008 06:49:43a dicendo:

Io andrei di FPGA.

Ho fatto a mo' di "hello world" (era la mia prima volta con le fpga) un

16x32 implementando in una CycloneII di fascia bassa (EP2C5) tutto: logica di scansione, PWM hardware a 16 passi con linearizzazione, UART per ricevere lo stream video da seriale e dual port RAM per i dati. Praticamente gli unici componenti esterni (oltre a FPGA, boot prom e adattatore di livelli per la seriale) sono i transistor di riga e colonna.

PS: Avvertenze: Le FPGA danno assuefazione e crisi di astinenza e nuocciono gravemente alla salute (mentale) dell'utente soprattutto all'inizio ;-)

Reply to
Luca

Luca ha scritto:

Si FPGA fa sempre comodo :) l'importante e cosa mettere "dentro" FPGA ...

Io ho detto come lo farei io poi se invece di usare i componenti "singoli" te li realizzi tramite FPGA non ci vedo una grossa differenza.

Ehmmmm scusa non ho capito un H :D

--
Il Razziatore,
"Lo sviluppo di una nazione si misura anche dallo stato della sua rete 
ferroviaria". Camillo Benso Conte di Cavour
"Per tutto quanto non previsto nel presente regolamento il capostazione 
deve usare senno e ponderatezza." Regolamento d'esercizio FS
-----------------------------------------------
MSN   : IlRazziatore@netscape.net
ICQ   : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com
Reply to
Il Razziatore

Sulu! Fuoco coi phaser su Il Razziatore che ha violato la prima direttiva in data stellare dom 30 mar 2008 02:47:12p dicendo:

La differenza è che acquistare e cablare 75 buffer e relativa logica di selezione è un lavoraccio che non auguro a nessuno :-) (e lo dico con cognizione di causa, anni e anni fa per una demo avevo cablato una matrice di 16x16 e relativi 32 buffer, contatore e eprom da cui prendere le immagini... e mi è bastato ;-) )

[...]

Proviamo con un disegnino :-)

formatting link

Reply to
Luca

inanzitutto ti ringrazio per la risposta...

ho cercato un pò in rete le FPGA... non ne avevo mai sentito parlare... proprio per questo un pò mi spaventano... nel senso che a quanto ho capito dovrei ricominciare da 0 con un programmatore, un linguaggio... anke se il fine delle molte potre potrebbe essere più ke giustificato per lo sforzo...

in rete non ho trovato granchè... ho dedotto male io o sono una alternativa con molte porte logiche a Microchip o ATMEL?

Reply to
Contrario

Contrario ha scritto:

[ CUT ]

Un qualunque circuito digitale non è altro che un insieme di porte logiche. Anche i micro controllori ( tipo i PIC Mircochip e gli uC di ATMEL ) ma per esempio anche gli il Pentium 4 di Intel, ma anche ( semplificando ) la ram.

I FPGA è un chip con centinia ( anche se penso di più migliaia ) di porte loggiche virtualmente tutti collegati tra di loro, durante la programmazione non fai altro che bruciare i collegamenti che non servono. Ad essere onesto le porte logiche non è il matone base. Il mattone base è un blocchettino ce puo' fare tutto ( tutte le porte logiche e tutti i tipi di FF ).

Esistono due modi di programmare i FPGA o tramite un programma di altro livello scritto per esempio in VHDL (

formatting link
ci sono anche esempi ) poi sarà il "compilatore" a tradurre il programma a scegliere le inconessioni necessarie e quale "blocchetti" usare. L'altro modo è appunto quello di disegnare le inconnissioni con un CAD ma il VHDL è più semplice.

Sicuramente gli altri ti sanno dire di più.

Aspetto smentite a quello che ho detto :P

--
Il Razziatore,
"Lo sviluppo di una nazione si misura anche dallo stato della sua rete 
ferroviaria". Camillo Benso Conte di Cavour
"Per tutto quanto non previsto nel presente regolamento il capostazione 
deve usare senno e ponderatezza." Regolamento d'esercizio FS
-----------------------------------------------
MSN   : IlRazziatore@netscape.net
ICQ   : 67552596
Yhaoo : Razziatore82
-----------------------------------------------
Founder of MediaPlayer Project
http://mpp.iwebland.com
Reply to
Il Razziatore

=2E.. normale ... io ci ho messo tre anni a decidermi a metterci le mani sopra ;-)

No, il problema non =E8 che devi usare un altro "linguaggio" ... ma che devi usare un'altra "filosofia".

Non sono "un'alternativa". Le FPGA *non* sono microprocessori. Quello che tu fai quando programmi una FPGA =E8 l'equivalente "virtuale" del costruire un circuito a botte di porte logiche e relativi "macroblocchi" (contatori, mux, flipflop, registri, memorie, unit=E0 aritmetiche, e via dicendo). Per questo parlo di diversa filosofia. Tant'=E8 che i linguaggi che si usano finiscono tutti con "HDL" che significa "HARDWARE description language". Le FPGA in s=E8 non sono che un enorme numero di celle elementari (quando dico enorme intendo che dentro una FPGA puoi senza problemi "costruire" un microprocessore, vedi

formatting link
:-) ), un gran numero di bus e interconnessioni i cui incroci sono o meno collegati a seconda del "programma" caricato, una rete di connessioni specifiche per i clock (ne puoi avere a decine), un certo numero di banchi di RAM, e soprattutto tanti ma tanti MA TANTI pin di I/O (la ep2c5 ne ha una 90na ma ci sono chip che arrivano a 400-500 e credo anche oltre)

Per i compiti semplici (come la scansione di un array di led, appunto) puoi tranquillamente ignorare il VHDL o il Verilog HDL e usare direttamente l'editor schematico (il mio array infatti l'ho fatto in schematico, eccetto una piccola parte, vedi

formatting link
jpg) ma se poi vuoi farci cose serie, ti tocca imparare almeno uno dei due.

Per quanto riguarda la programmazione, i due principali produttori (altera e xilinx) forniscono versioni "limited" (ma che vanno benissimo per qualunque tipo di progetto amatoriale e semi-pro) del proprio ambiente di sviluppo. (altera fornisce Quartus che =E8 quello che uso io, e xilinx ha ISE, che non mi piace per niente). Puoi scaricarli entrambi dai relativi siti. Sono malloppi da un paio di giga l'uno.

Sfortunatamente, le FPGA hanno due "problemi": 1) sono quasi tutte ram- based, quindi il "programma" viene perso quando togli la tensione e 2) sono in formato difficilmente maneggiabile da un hobbista (vedi package SMD, BGA, eccetera)

Personalmente mi sono dotato di qualche schedino Pluto

formatting link
che mi risolve entrambi i problemi, perch=E8 1) ha a bordo una "boot prom" (non farti ingannare, si chiama storicamente prom ma =E8 una eeprom ;-) ) per cui una volta programmata la FPGA all'accensione si autoconfigura, e 2) ha i pin di IO riportati su una serie di header con passo standard... e ha anche uno stadio di alimentazione e un convertitore di livello per la RS232.

Reply to
Luca

Ok... ringrazio entrambi per le risposte.. mi avete aiutato molto...

la conclusione è ke non riuscirei ad utilizzare FPGA ora come ora.. ho toccato il mio primo saldatore da appena 2 mesi e proprio mentalmente non riuscirei

la soluzione che ho utilizzato con il mio mini display scroller è una metodologia multiplexing con N righe ed M colonne... attraverso N pin deciso quale led della colonna accendere.. gli M pin invece sono connessi a basi di 4 transitor adibiti al controllo della corrente nella relativa colonna...

ora mi chiedo... non potrei espandere questo meccanismo per una 10 x 60?! cioè...con 10 pin piloto le righe... e attraverso 60 transistor NPN tipo 2904 piloto le colonne... potrei arrivare a 60 pin utilizzando un 16F877 e svariati decoder che mi amplierebbero il numero di pin...

sono un pazzo?!

Reply to
Contrario

Il giorno Sun, 30 Mar 2008 04:34:34 +0200, "Contrario" ha scritto:

Non è molto diverso da quello che hai già fatto.

Come shift registers puoi utilizzare dei 74HC595, hanno corrente sufficiente perchè hanno le uscite bufferate, poi dipende anche dalla luminosità che vuoi ottenere. Se fai una matrice da 10 * 60 vuol dire che potresti avere 20mA/10 =2mA di corrente media per ogni led. Questo può al limite bastare, ma solo con led ad alta efficienza e comunque non faranno molta luce. Se vuoi risparmiare anche la resistenza in serie all'uscita del 595 ti basta mettere un darlington come quello dentro ad un driver tipo ULN2003. In questo modo la caduta di tensione sul mos del 595 è abbastanza bassa per consentire alla sua resistenza interna di limitare la corrente.

Se invece la luminosità non ti basta devi aggiungere componenti. Un'alternativa è mettere dopo il 595 un buffer tipo questo:

formatting link

ma dovrai alimentarlo ad una tensione più alta (almeno 7-8V) e mettere le resistenze di limitazione, sono driver da 500 mA.

Presumo che tu non abbia problemi a pilotare una SPI e a gestire i segnali di sincronismo del 595, se no chiedi pure.

-- ciao Stefano

Reply to
SB

Il giorno Mon, 31 Mar 2008 14:22:08 +0200, SB ha scritto:

Mi sono ricordato che avevo visto qualcosa di fatto, qui:

formatting link

-- ciao Stefano

Reply to
SB

No. Usa quattro decoder 74154, o sette contatori 4017 (non mi ricordo il corrispettivo TTL) per generare il segnale di selezione colonna. Estremizzando, ti basta un segnale di clock e uno di reset in uscita dal PIC, il resto lo puoi ottenere con logica esterna.

Reply to
Luca

Dimenticavo: occhio alla corrente massima in uscita dal PIC. Probabilmente dovrai mettere dei buffer anche sulle uscite di riga...

Reply to
Luca

grazie ancora... credo utilizzerò proprio questo metodo... utilizzando decoder o al limite shift register per pilotare le 60 colonne e relativi transistor..

ho visto sul datasheet ke il 2N3904 ha un voltaggio di uscita sui pin di

25mA... 25 / 10 avrei 2,5mA per led...sarà sufficiente per una discreta luminosità?! utilizzerei led da 5mm verdi classici

un altro mio problema è il valtaggio i led si pilotano a corrente...ok quindi, dai miei ragionamenti, vorrebbe dire che potrebbe andare bene applicare una corrente di 5 volt sull'emettitore del transistor e avere sempre 5 volt in uscita per pilotare 10 led in parallelo... oppure no?! oppure devo fornire una corrente necessaria ad alimentarne 10 x 1.6 = 16 V ?!

nel mio mini scroller 5 x 4 ho notato ke la prima colonna è luminosa... procedendo mano mano verso l'interno la luminosità diventa più bassa... immagino sia un problema derivato dal multiplexing e dal fatto che ciclando velocemente le colonne si forma una sorta di pwm naturale.... è giusto come ragionamento o sono completamente fuori?!

come dico sempre.. "quant'è brutto essere ignoranti"

grazie ancora

Reply to
Contrario

sulla prima parte ci sono perfettamente... dai diver ULN in poi...ho iniziato a vacillare.. in ogni caso kredo che per la matrice 10 x 60 credo di avere più o meno le idee chiare..

unico neo è il problema dell'alimentazione che ho postato poco sopra...

grazie mille

DAXweb

Reply to
Contrario

e

Un contatore "costa" meno di un registro, dato che comunque devi avere solo una uscita attiva alla volta.

Se =E8 un "voltaggio" non possono essere mA... un ripassino sulle differenze tra tensione e corrente sarebbe opportuno ;-)

t=E0?!

Mettici un array di darlington tipo l'ULN2003A che fai molto ma molto prima. Ricordati che se multiplexi 60 colonne, sul led di ciascuna colonna arrivi un sessantesimo della corrente vera. Sui led ad alta luminosit=E0, multiplexando 60 colonne, io calcolerei le uscite per erogare un ampere, anche qualcosetta di pi=F9. Sulla mia "hello world" alimento i led (normali, non ad alta efficienza) direttamente coi

5volt di uscita dai buffer, senza nessuna limitazione di corrente se non la corrente massima erogabile dai buffer stessi.
.
o

E' giusto, ma la luminosit=E0 delle colonne non deve variare... se varia, =E8 perch=E8 il ciclo del PWM non ha la stessa durata per tutte le colonne...

Reply to
Luca

Il giorno Mon, 31 Mar 2008 15:44:55 +0200, "Contrario" ha scritto:

Intendo questi:

formatting link

si usano al posto dei transistors per ragioni di spazio e numero componenti.

due credo in lingue diverse, lol :-)

Non credo solo quello, devi predisporre un tempo di rinfresco abbastanza veloce per evitare flickers, quindi da 500Hz a 1 kHz, e fare in modo che sia costante.

-- ciao Stefano

Reply to
SB

Ciao di nuovo.. ho finito di montare i led...ora sto realizzando la parte per il pilotaggio di n righe ed m colonne.. ho davanti un 595...non ho la più pallida idea di come debba essere usato... ho scaricato il datasheet ma non riesco a capireil funzionamento...

potresti aiutarmi?

ti ringrazio in ogni caso

DAX

Reply to
Contrario

Il giorno Thu, 10 Apr 2008 15:48:11 +0200, "Contrario" ha scritto:

proviamo. Innanzitutto usiamo questo datasheet così almeno parliamo della stessa cosa.

formatting link

74HC595 e' uno shift register a 8 stadi con un latch in uscita, quindi il byte andrà caricato in modo sequenziale poi trasferito in una sola volta alle uscite.

Se vai a pag. 2 c'è la TRUTH TABLE, da cui si può capire che:

1) G\ abilita le uscite le LATCH quando è basso

2) RCK trasferisce il contenuto dei registri al LATCH quando si alza da L a H

3) SCLR azzera il contenuto dei registri se ' L

4) SCK trasferisce al primo stadio dello shift register il contenuto di SI quando si alza da L a H

Da questo possiamo dedurre che nel funzionamento normale G deve essere L e SCLR deve essere H.

Per scrivere gli 8 bits sulle uscitre bisogna fornire 8 impulsi da L ad H sul pin SCK mettendo contemporaneamente il dato su SI, dopo la trasmissione dell'ultimo bit bisogna portare RCK ad H e poi di nuovo ad L.

Esiste anche un altra uscita, il pin p QH' che serve per usare più di un 595 in cascata, collegando semplicemente il pin QH' del primo stadio al pin SI del secondo, tutti gli altri pin sono da collegare in parallelo.

Sperandoo di essere stato chiaro,

-- ciao Stefano

Reply to
SB

ci sono...credo di aver capito... ho preso il tuo post come riferimento ed ho incluso parallelamente questo utilissimo link ke ho trovato in rete...

formatting link

passo alla pratica...

ti ringrazio davvero per l' aiuto!

DAX

Reply to
Contrario

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.