Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

[PROGETTO] Controllo per matrice RGB 8x8

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

0
voti

[1] [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utentemattyyy » 3 ago 2011, 18:18

Ciao a tutti!
Verso settembre-ottobre dello scorso anno ho iniziato a lavorare ad un progettino riguardante un sistema di controllo per una matrice RGB 8x8 (cioè 8 righe e 24 colonne). A causa degli studi, purtroppo, ho dovuto abbandonare il progetto quasi sul nascere ma ora l'ho ripreso. Avrei bisogno del vostro aiuto per capire se, la soluzione finora ideata, potrebbe funzionare oppure è meglio adottarne un'altra (che tipo / perché?).

Vi allego uno schema a blocchi (**in fondo)

SPIEGAZIONE: il microcontrollore permette di selezionare la riga da abilitare mediante il decoder righe (3 to 8) e la colonna mediante il decoder colonne (5 to 32 ==> dato che di colonne ce ne sono solamente 24 alcune combinazioni non saranno disponibili).
(Vi allego un'immagine della matrice così da rendervi le idee più chiare sulla mia decisione).

A questo punto mi chiedevo: "ma sarebbe più appropiato l'uso di qualche shift-register per comandare le righe e le colonne?"
Questo dilemma mi è sorto perché probabilmente se abbiamo intenzione di accendere una grande quantità di LEDs contemporaneamente, il sistema "a decoder" potrebbe influenzare la luminosità di questi ultimi. Si immagini di voler accendere il LED ROSSO della colonna[0]-fila[0] e il LED ROSSO della colonna[0]-fila[1]. Dato che in un decoder c'è la possibilità di attivare un unica uscita alla volta, sarà necessario attivare il pin (1) della matrice (lo attiviamo con un segnale HIGH) e altarnare l'attivazione dei pin (25) e (26) (mandandoli allo stato LOW) ad alta velocità in maniera da generare un effetto ottico che renda omogeneo il controllo. Questo significa che se alterniamo i pin(25) e pin(26) dallo stato HIGH allo stato LOW per 1ms ognuno otterremo l'accensione dei due LEDs con un dutycycle del 50%.

Ipotizziamo ora di voler accendere i LEDs ROSSI della prima colonna e delle file[0], [1] e [2] (pin corrispondenti ==> pin(26), (25) e (24)).
Come prima portiamo a livello HIGH il pin(1) della matrice e alterniamo lo stato LOW tra i pin(26,25,24) per 1ms ognuno. Il dutycycle scende ancora, al 33%. Ed è proprio questo quello che vorrei evitare, cioè che l'accensione di molti LEDs "contemporaneamente" (in realtà stiamo facendo un lavoro di accensione e spegnimento molto rapido in maniera che l'occhio non sia in grado di distinguerlo) diminuisca l'intensità luminosa.

Usando un sistema differente da quello della decodifica (come ho detto prima, ad es con l'uso di vari shift registers) posso ovviare a questo problema?
Grazie delle risposte

PS: una domanda su fidocadj - come mai provando ad immettere il codice tra la "funzione" ... non accade nulla? Questo è il risultato che ottengo


Ho sbagliato qualcosa?
Allegati
RGB Matrix.gif
RGB Matrix.gif (55.25 KiB) Osservato 7068 volte
Schema a blocchi decodifica.PNG
Schema a blocchi decodifica.PNG (9.85 KiB) Osservato 7066 volte
Avatar utente
Foto Utentemattyyy
10 1 6
New entry
New entry
 
Messaggi: 74
Iscritto il: 27 apr 2009, 18:09

0
voti

[2] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utenteg.schgor » 3 ago 2011, 19:18

mattyyy ha scritto:Ho sbagliato qualcosa?

Credo tu abbia sbagliato la "scala" del disegno
Eccolo con scala dimezzata


In sostanza vuoi realizzare un'accensione in
"multiplexing"? Se la frequenza di scansione
è abbastanza elevata possono essere maggiorate
le correnti nei singoli LED in modo da compensare
il duty-cycle. Bisogna però consultare il datasheet
dei LED per vedere di quanto tali valori possono
essere maggiorati, in funzione appunto del duty-cycle
previsto.
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[3] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utentecrestus » 3 ago 2011, 19:27

perché non processa il "null"

l'ultima riga da così:
Codice: Seleziona tutto
RV 110 75 140 85 9
null[/fcd]

deve diventare così:
Codice: Seleziona tutto
RV 110 75 140 85 9
[/fcd]


Di solito usano degli shift register! guarda questo.
in particolare allo schema: Link

è solo a 2 colori... ma il concetto è lo stesso...:)
...:::Pivello allo sbaraglio:::...

MY WEBSITE! come and see... ;) <-- Di nuovo online... spiacente per i problemi tecnici!
Avatar utente
Foto Utentecrestus
1.295 2 7 13
Expert EY
Expert EY
 
Messaggi: 478
Iscritto il: 3 ott 2008, 10:28
Località: studente al politecnico di torino

0
voti

[4] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utentemattyyy » 3 ago 2011, 21:10

g.schgor ha scritto:Se la frequenza di scansione
è abbastanza elevata possono essere maggiorate
le correnti nei singoli LED in modo da compensare
il duty-cycle.

Questa potrebbe essere un'idea, però avrei intenzione di implementare una "funzione" che permette di cambiare l'intensità luminosa via software e farlo variando la corrente sarebbe una difficoltà - preferirei farlo utilizzando un modulo PWM e credo che con gli shift register sia più facile.

Leggo i documenti che mi ha consigliato crestus e proporrò uno schema a blocchi + schema circuitale con la nuova soluzione.

Grazie ad entrambi!
Avatar utente
Foto Utentemattyyy
10 1 6
New entry
New entry
 
Messaggi: 74
Iscritto il: 27 apr 2009, 18:09

0
voti

[5] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utenteg.schgor » 3 ago 2011, 22:28

Non vedo come il PWM sia compatibile con gli shift-register.
Se pur non facile, il comando diretto di ciascuna riga e colonna
dovrebbe permettere anche una modulazione del duty-cycle
di ciascun LED (ammesso che la frequenza di controllo sia
sufficiente)
Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[6] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto UtenteIsidoroKZ » 4 ago 2011, 2:00

Avevi sbagliato a non abilitare i BBCode, cosa che puoi fare cliccando l'apposita voce sotto la finestra dove scrivi il messaggio. Ora te l'ho messo a posto.

Vuoi controllare la luminosita` di tutto il display in blocco oppure quella di ogni singolo led? Nel primo caso si puo` fare il multiplexing anche con uno shift register, nel secondo caso invece no.
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[7] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto UtenteTardoFreak » 4 ago 2011, 2:15

Alura,
Non puoi pensare di usare un decoder per le righe ed uno per le colonne. Il valore di multiplexing accettabile è, al massimo, di 1:8 e siamo già "tirati".
Quindi se hai una matrice RGB 8x8 devi considerare 8 colonne per 24 righe. Su ogni riga, con opportuni artifizi, parzializzi il tempo di accensione per ottenere le diverse intensità.
Usare uno shift register non è una buona idea perché il caricamento dello stesso necessita di tempo, quindi di velocità elevata che vuol dire micro velocissimo. A questo punto è meglio usare 24 uscite dirette dal micro che deve comunque essere veloce se vuoi avere un certo range di variazione della luminosità.
A Time Square (NY) ci sono pareti intere fatte con matrici di LED RGB che si comportano come megaschermi galattici. Io le ho osservate bene. Non usano multiplexing ma pilotaggio diretto o comunque pilotaggio PWM separato per ogni LED a frequenza altissima. :shock: :shock: :shock:
Se vuoi ottenere buoni risultati non devi andare al risparmio. -:-
Un vestito di alta moda non può costare 2€. ;-)
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[8] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto UtenteIsidoroKZ » 4 ago 2011, 8:19

TardoFreak ha scritto:Usare uno shift register non è una buona idea perché il caricamento dello stesso necessita di tempo, quindi di velocità elevata che vuol dire micro velocissimo.


Usare una porta SPI? Mi pare che si possa collegare direttamente uno shift register, bastano poche decine di kilobit al secondo di transfer rate, mi pare si fattibile. O no? :-)
Per usare proficuamente un simulatore, bisogna sapere molta più elettronica di lui
Plug it in - it works better!
Il 555 sta all'elettronica come Arduino all'informatica! (entrambi loro malgrado)
Se volete risposte rispondete a tutte le mie domande
Avatar utente
Foto UtenteIsidoroKZ
121,2k 1 3 8
G.Master EY
G.Master EY
 
Messaggi: 21059
Iscritto il: 17 ott 2009, 0:00

0
voti

[9] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto Utenteposta10100 » 4 ago 2011, 8:29

Potresti utilizzare una soluzione tipo questa, ma anche in questo caso il micro deve viaggiare veloce altrimenti la luminosita` e` troppo bassa.
Oltretutto non e` facilissimo da gestire via sw, ma se vuoi ne discutiamo.

O_/
http://millefori.altervista.org
Tool gratuito per chi sviluppa su millefori.

Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (A. Einstein)
Se non c'e` un 555 non e` un buon progetto (IsidoroKZ)

Strumento per formule
Avatar utente
Foto Utenteposta10100
5.550 4 10 13
Master EY
Master EY
 
Messaggi: 4832
Iscritto il: 5 nov 2006, 0:09

0
voti

[10] Re: [PROGETTO] Controllo per matrice RGB 8x8

Messaggioda Foto UtenteTardoFreak » 4 ago 2011, 9:46

IsidoroKZ ha scritto:...Usare una porta SPI? Mi pare che si possa collegare direttamente uno shift register, bastano poche decine di kilobit al secondo di transfer rate, mi pare si fattibile. O no? :-)

In teoria si, ma ragioniamoci sopra un attimo.
Supponiamo di utilizzare una frequenza di scansione di 100Hz se vogliamo fare un qualcosa che non ti sfarfalli davanti agli occhi ogni volta che giri la testa vuol dure caricare lo S-R- 800 volte al secondo.
L' accensione deve essere però parzializzata per implementare i livelli di luminostà. Supponiamo di fare una cosa da barboni e prevedere 16 livelli per ogni LED vuol dire caricare lo S-R 12800 volte al secondo. Se utilizziamo registri con buffer il clock dovrà funzionare a 307,2 kHz ma se non sono bufferizzati deve funzionare ad una frequenza almeno 10 volte superiore quindi a 3MHz circa perché, durante il caricamento, i LED devono essere spenti.
E tutto questo per ottenere un risultato poco più che mediocre.
Una soluzione più elegante sarebbe quella di utilizzare 4 74HC373. Uno per l' uscita delle colonne e 3 per le 24 uscite dei LED. Il collegamento al micro sarebbe fatto con 8 linee collegate a tuti gli ingressi dei 373 e 4 strobe.
A questo punto potremmo permetterci il lusso di aumentare il numero di livelli di luminosità di ogni LED per esempio, e di sicuro avremo il micro meno impegnato a "correre dieto" al multiplexing visto che con pochissime istruzioni noi caricheremmo tutto l' ambaradan.
Se dovessi farlo io taglierei la testa al toro ed utilizzerei 32 linee di I/O dirette dal micro. Non ci vedo molto senso nell' utilizzare integrati aggiuntivi quando, allo stesso prezzo (forse risparmiandoci pure) e senza fare tanti casini, posso prendermi un micro in contenitore QFP100 che ha tutto quello che mi serve a bordo e che mi pilota direttamente i LED, almeno le 24 righe.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

Prossimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 134 ospiti