Home
Accesso / Registrazione
 di 

Led multiplexaggio

4 risposte [Ultimo post]
ritratto di lux1982
Offline
Titolo: User
Utente
Ultima visita:
3 anni 17 settimane fa
Utente dal: 17/11/2010
Messaggi: 7

Salve, c'è mio nipote che a breve dovrà consegnare una relazione sulla tecnica di multiplexaggio dei led ma non so come impostargli il discorso. Qualche idea?

ritratto di Alex87ai
Offline
Titolo: User++
Utente++
Ultima visita:
2 anni 15 settimane fa
Utente dal: 25/05/2010
Messaggi: 72
Il multiplexing nella

Il multiplexing nella gestione dei led o di tutte le applicazioni che sui led basano il loro funzionamento (led dot matrix, display a 7 segmenti, ecc…) è una tecnica ampiamente utilizzata per ridurre i consumi di potenza statica e se si pilota il sistema a led tramite microcontrollore (come spesso accade nelle applicazioni moderne), si riescono a ridurre drasticamente il numero di GPIO adoperati per lo scopo.
Il principio di funzionamento del multiplexing è molto semplice: se tu accendi e spegni un led ad una frequenza tutto sommato non eccessivamente elevata (da 50Hz in su),l’occhio umano non si accorge dello sfarfallio perché la retina ha un tempo minimo che deve passare prima di poter essere impressionata efficacemente da una nuova immagine. È un po’ quello che accade quando osservi una ventola che ruota a diverse migliaia di giri al minuto…non distigui più la ventola nella sua realizzazione ma percepisci un’immagine che è la sovrapposizione continua delle pale su diversi passi angolari (vedi una sorta di immagine circolare confusa). L’occhio si comporta come filtro passa-basso facendoti distinguere con precisione oggetti che si muovono relativamente lenti e come immagini sovrapposte gli oggetti che si muovono oltre una certa velocità (passami il termine) ”di taglio superiore” . Alla luce di questo principio, ti è facile capire che se ho una stringa di led e facciamo in modo che sia acceso solo un led per volta e la sequenza di accensione la si esegue con una frequenza consona (oltre almeno 50Hz…per stare sul sicuro diciamo oltre i 100Hz), allora tu li vedrai tutti accesi contemporaneamente come se lo fossero davvero. L’unico problema di questo approccio è che la luminosità del singolo led si riduce in maniera proporzionale al numero di led che ci metti nella sequenza. Questo perché il periodo lo calcoli come tempo necessario per effettuare tutta la spazzolata dei led, mentre il singolo led è acceso solo su una frazione di tale periodo dopodiché viene spento per accendere il successivo nella sequenza. Si alimenta il led con un’onda rettangolare il cui duty-cycle si riduce all’aumentare del numero di led che ci metti. Per risolvere in parte questo problema , possono ad esempio essere adottati led di tipo ultra-bright.
Capito il principio del multiplexing si capisce anche il perché utilizzando tale tecnica si riduce il consumo statico di potenza aumentando quindi la durata della batterie di un possibile dispositivo portatile. Il fatto che si riduca anche il numero di pin di un microcontrollore utilizzati per la gestione dei led forse è un po’ meno chiara pechè per capirlo occorre introdurre il concetto di matrice di Led. Capirai con l’esempio che vado a proporti. Supponi di voler visualizzare un numero a due cifre su due display a 7 segmenti a catodo comune. Se vedi i due display come due sistemi distinti di led, ognuno di essi è costituito da sette led. Ora immagina che, in maniera sufficientemente veloce, tu accenda prima l’uno e poi l’altro in maniera alternativa. Vedrai i due display accesi in contemporanea anche se in realtà non lo sono. Ora se colleghi in parallelo gli anodi corrispondenti a due segmenti coincidenti in posizione sui due display e questo per tutti i segmenti, ti ritroverai alla fine ad avere 7 linee di anodo più i due catodi dei due display. I due catodi non li poni fissi al negativo di alimentazione ma al contrario li devi rendere controllabili tramite due linee distinte che confluiranno verso due uscite del microcontrollore. In definitiva ti ritrovi con 9 linee di controllo, 7 di anodo e due di catodo. Se fai confluire il tutto verso un microcontrollore, quando alimenti il primo catodo (ad esempio quello delle unità) farai si che le uscite di anodo siano fissate per visualizzare la cifra di unità, mentre quando alimenti il secondo catodo dopo aver spento il primo, fisserai le uscite di anodo per visualizzare la cifra delle decine. Se questo avviene in maniera sufficientemente rapida, avrai realizzato un controllo per due display 7 segmenti utilizzando solo 9 linee di I/O del micro contro le 14 linee che andresti ad utilizzare senza la tecnica del multiplexing. Dall’esempio ti renderai conto che con i due display si è realizata una matrice 2x7 e questo ci ha permesso di ottimizzare il numero di linee utilizzate per il controllo dei led. All’aumentare del numero di display, questa tecnica diventa via via sempre più efficiente dal punto di vista dell’occupazione di risorse del micro.
Quanto spiegato è certamente implementabile vi a hardware in maniera abbastanza semplice, anche se tipicamente si adottano tecniche circuitali per rendere il multiplexing più efficiente dal punto di vista della luminosità dei led.

ritratto di lux1982
Offline
Titolo: User
Utente
Ultima visita:
3 anni 17 settimane fa
Utente dal: 17/11/2010
Messaggi: 7
Quali sono queste tecniche

Quali sono queste tecniche circuitali per rendere più efficiente il multiplexing dei led?

ritratto di Alex87ai
Offline
Titolo: User++
Utente++
Ultima visita:
2 anni 15 settimane fa
Utente dal: 25/05/2010
Messaggi: 72
Essenzialmente tecniche di

Essenzialmente tecniche di buffering sui controlli dei led. In pratica, anzicchè demandare al microcontrollore l’intera gestione della matrice di led, ogni colonna viene gestita lungo le sue righe da un buffer,cioè da un registro (elemento di memoria) parallelo (meglio se seriale-parallelo). In questo caso però i catodi vanno lasciati fissi al potenziale negativo di alimentazione. I buffer devono avere uscite latch in modo da poter congelare lo stato dei led anche quando il microcontrollore è in fase di aggiornamento del buffer. Solo quando l’intero stato successivo delle uscite è stato aggiornato, si da un segnale di trigger al buffer e le uscite vengono aggiornate con il nuovo valore visualizzando la cifra corrente. Se per ogni display inserisci un buffer fatto in questo modo (registro + latch sulle uscite), i led di tutti i display verranno aggiornati con lo stesso segnale di trigger una volta che il microcontrollore avrà rinfrescato tutti i registri nascosti dei buffer. Questa tecnica ti migliora l’intensità luminosa dei led che andrebbe sempre più scemando all’aumentare del numero di display però ha come svantaggio quello di avere display sempre accesi e in contemporanea portando la batteria di un device portatile praticamente a scaricarsi in niente (purtroppo non si può avere tutto nell vita…c’è sempre la questione del compromesso dal quale non si può prescindere!!). Ovviamente, un dispositivo che deve consumare poco sarà anche soggetto ad una progettazione utilizzante dispositivi poco esosi dal punto di vista dell’assorbimento energetico, e con gli anni i display a led sono andati via via sempre più scomparendo nelle applicazioni portatili lasciando posto a interfacce di visualizzazione come display LCD alfanumerici e grafici. Anche se non si direbbe, anche sui display LCD vengono adottate tecniche di multiplexing, anche se il tempo di trattenuta del pixel eccitato in un display è di gran lunga superiore a quello di un led, quindi anche se si devono gestire display grafici molto grandi intermini di pixel, non sussiste il problema dell’affievolimento dell’intensità di accensione.

ritratto di Alex87ai
Offline
Titolo: User++
Utente++
Ultima visita:
2 anni 15 settimane fa
Utente dal: 25/05/2010
Messaggi: 72
Il charlieplexing è una

Il charlieplexing è una tecnica proposta nel 1995 da Charlie Allen della Maxim Integrated Products per pilotare un display in multiplexing minimizzando al massimo l’utilizzo di pin di I/O su un microcontrollore per pilotare un array di led. Il metodo utilizza la capacità dei microcontrollori di pilotare le proprie uscite in modalità tri-state, e questo permette di guadagnare efficienza rispetto al multiplexing tradizionale. Nonostante la tecnica sia molto più efficiente in termini di occupazione di pin dei microcontrollori, la complessità dell’implementazione è considerevolmente più alta rispetto al multiplexing classico tanto da rendere la tecnica impraticabile per display di grandi dimensioni.
Riprendendo il multiplexing classico tanto da poterne fare il confronto successivamente con il charlieplexing, si può dire che per i display in un vettore, questi vengono accesi individualemente e indirizzati quando accesi. Questo ci permette di usare pochi I/O quando normalmente prenderemmo un numero di I/O pari al numero dei display per il numero di pin per display (quindi almeno 7xnumero di display nel caso di 7 segmenti). Con il charlieplexing, n pin di I/O possono comandare n display con n-1 segmenti, cioè con n pin di I/O è possibile pilotare fino a n*(n-1)=n^2-n segmenti o led. Il multiplexing tradizionale, al contrario, richiede molti più pin di I/O per pilotare lo stesso numero di led: per pilotare n^2 led devono essere usati 2n pin, a meno che non si adottino sistemi ad encoder che andrebbero a limitare il numero di pin necessari.
Per poter realizzare la tecnica del charliepelxing, sono necessari almeno 3 pin con i quali possiamo pilotare in maniera individuale sino a 6 led. Questo ci viene reso possibile perché i led necessitano il rispetto di una polarità nella tensione applicata, quindi per poter spegnere un led o lo si disconnette totalmente dalla tensione di alimentazione o lo si polarizza in inversa.
Si prenda in considerazione la seguente immagine: http://www.google.it/imgres?imgurl=http://omegav.no/wiki/images/thumb/b/bb/Charlieplexing2...
Questa struttura, che è la base perché il charlieplexing abbia senso, presenta ad ogni modo un problema: è necessario disconnettere una dei pin prima di applicare il carico ai restanti due. Questo può essere risolto proprio utilizzando la proprietà tri-state dei pin dei microcontrollori. I pin dei microcontrollori, infatti, generalmente hanno tre stati logici possibili: alto, basso e input. Quando il pin è impostato per lavorare come input, l’impedenza è molto alta per cui, elettricamente parlando, questo pin è disconnesso dal resto del circuito o per lo meno tramite esso scorrerà una corrente così bassa da non essere sufficiente ad alimentare un led. Al fine di pilotare 6 led con sole 3 linee di I/O, le due linee connesse al led che si desidera accendere vanno connessi a +5V (anodo) e 0V (catodo) mentre il terzo pin deve essere disconnesso, quindi impostato per lavorare come ingresso perché possa andare in alta impedenza. Così facendo, la corrente relativa alla linea posta in alta impedenza viene resa minima e ci si accerta che sia acceso il solo led voluto. Usando la proprietà tri-state dei pin di I/O, potenzialmente l’intera struttura può essere estesa alle dimensioni che vogliamo, finche ci sono pin disponibili secondo la legge di conversione pin->led scritta precedentemente. Ciò che dovrebbe saltare subito alla mente è il fatto che non si possono accendere più led contemporaneamente, o meglio si potrebbe fare ma secondo combinazioni ben precise funzioni della grandezza del display che si vuole pilotare.

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 2 utenti e 42 visitatori collegati.

Ultimi Commenti