Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

17
voti

Il Charlieplexing

Indice

Cos'è il Charlieplexing?

Il Charlieplexing è una tecnica proposta all'inizio del 1995 da Charlie Allen, impiegato presso la Maxim Integrated Products per pilotare molti led con poche linee di I/O di un microcontrollore.
A differenza del multiplexing tradizionale, questo metodo sfrutta la logica tri-state dei buffer di I/O del microcontrollore per pilotare i led con meno linee di I/O.
Gli svantaggi di questa tecnica sono sostanzialmente tre:

  1. la maggior complessità della board
  2. il maggior lavoro necessario da parte del microcontrollore
  3. la luminosità dei led che diminuisce per effetto del duty cicle

Pilotare 20 led con il multiplexing tradizionale

Supponiamo di voler pilotare 20 led con un microcontrollore.
Possiamo pilotare singolarmente ogni led, ed in questo caso abbiamo bisogno di 20 linee di I/O, un vero spreco, oltretutto buona parte dei processori nemmeno le possiede!
Una soluzione più efficiente consiste nell'utilizzare un multiplexing tradizionale come quello mostrato nello schema qui sotto:

Per accendere uno dei led da D6 a D10 devo mettere uno stato logico alto su A1 e basso sui restanti A0, A2, A3.
Poi accendo il led voluto mettendo bassa la linea Bx corrispondente e alte tutte le altre.

In questo modo abbiamo bisogno comunque di 9 linee di I/O, ancora troppe!
Se ci limitiamo al solo stato HIGH-LOW degli I/O non possiamo fare di più.

Pilotare 20 led con il Charlieplexing

La tecnica del Charlieplexing sfrutta al contrario tutti gli stati possibili di un I/O:

  • livello logico alto
  • livello logico basso
  • alta impedenza

Con il Charlieplexing il numero di led che è possibile pilotare è legato al numero di linee utilizzate dalla seguente formula:

led = n(n − 1)

in cui n è il numero di linee utilizzate.
Per pilotare i 20 led quindi bastano soltanto 5 linee di I/O. Lo schema per collegare i led è il seguente:

Per accendere un led, come nel caso del multiplexing tradizionale, si deve alimentare il led nel giusto verso.
Supponiamo di voler accendere il led D9, dobbiamo quindi mettere uno stato logico alto su A0, uno stato logico basso su A2 e porre in alta impedenza tutti gli altri I/O in modo da lasciare flottanti tutti i led ad eccezione di D1, D2, D5, D6, D9 e D10.
Dato che il led conduce in una sola direzione, l'unico ad essere acceso è D9.
I led D1 e D2, nonostante siano polarizzati direttamente, non si accendono perché la tensione minima da applicare alla serie D1-D2 è doppia rispetto a quella del singolo led imposta da D9.

Limiti del Charlieplexing

Teoricamente si può pensare di espandere il metodo ad un numero infinito di led, ma questo non è possibile per la combinazione di 2 ragioni:

  1. La frequenza finita del microcontrollore
  2. La massima corrente accettata dal led

Con questo metodo è possibile accendere un solo led per volta, a parte il caso in cui i led non fanno capo agli stessi I/O.
Come per il multiplexing tradizionale, i led vengono accesi singolarmente (o a gruppi) ad una frequenza elevata in modo che l'occhio venga ingannato.
La frequenza minima da mantenere è di almeno 50 Hz. Con l'aumentare del numero dei led si allunga l'intervallo di tempo tra una accensione e la successiva. Se questo tempo diventa troppo lungo si avverte lo sfarfallio del led.
Se l'occhio non si accorge che il led si spegne e si riaccende, vede però una luminosità inferiore a quella che vedrebbe se il led fosse sempre acceso perché fa una media della luce emessa nel tempo.
Più aumenta il tempo tra un ciclo e il successivo e minore è la luminosità vista.
Per ovviare a questo problema si può aumentare la corrente nel led in modo da renderlo più luminoso quando il led è acceso. In questo modo la luminosità media aumenta ma il limite è imposto questa volta dalla massima corrente ammessa dal led oltre la quale ovviamente non si può andare.

display

display

10

Commenti e note

Inserisci un commento

di ,

Bell'articolo...posta10100...complimenti, mi hai illuminato sul charlieplexing..grazie.

Rispondi

di ,

Lo configuri come ingresso.

Rispondi

di ,

Buon articolo. Vorrei fare la seguente domanda. In un PIC come si ottiene che su un piedino ci sia alta impedenza?? per fare il Charlieplexing?? Grazie.

Rispondi

di ,

Complimenti per l' esperimento!

Rispondi

di ,

posta 10100: il cablaggio e` stato fatto con il metodo "ad catsum", molto utile quando il circuito e` complesso e vai di fretta ;) capisco,è un metodo che applico anch'io quando vado di fretta per qualche prova/verifica a campo ;)

Rispondi

di ,

Utilizzo un PIC16F684 per 7 display a 7 segmenti + punto decimale. In tutto sono 9 linee di I/O. Ho fatto riferimento a 20 led perche` altrimenti lo schema nell'articolo sarebbe stato troppo complesso.

Rispondi

di ,

Ora che riguardo il prototipo su breadboard, quanti led stai pilotando? e con quante linee del microcontrollore? Vedo 7display a sette segmenti, quindi 49led? oppure il primo e l'ultimo display sono collegati da soli? quindi 35led? In ogni caso seguendo la formula che hai postato (led=n(n-1)): con 5linee -> fino a 20led con 6linee -> fino a 30led con 7linee -> fino a 42led con 8linee -> fino a 56led Che configurazione hai adottato? e che microcontrollore hai utilizzato? E' pura curiosità :)

Rispondi

di ,

Grazie dei voti positivi, il cablaggio e` stato fatto con il metodo "ad catsum", molto utile quando il circuito e` complesso e vai di fretta ;)

Rispondi

di ,

Bello! ne avevo sentito parlare nel forum, ma ora con i vari esempi ho capito bene come funziona!

Rispondi

di ,

Grazie posta10100,ora so cos'è il charlieplexing...:-) pertanto voto positivo. ps il cablaggio della breadboard non è proprio il massimo..:-)

Rispondi

Inserisci un commento

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