Ho esaminato i due metodi e il multiplexing sembra avere solo un vantaggio, che sarebbe più facile rintracciare un LED guasto rispetto a un array Charlieplex.
Qualcuno più esperto può spiegare altri compromessi?
Ho esaminato i due metodi e il multiplexing sembra avere solo un vantaggio, che sarebbe più facile rintracciare un LED guasto rispetto a un array Charlieplex.
Qualcuno più esperto può spiegare altri compromessi?
Risposte:
Sì, il multiplexing e il charlieplexing hanno entrambi i loro vantaggi e sono più adatti a compiti diversi.
Il vantaggio principale del charlieplexing è che può essere fatto su un microcontrollore di medie dimensioni, pilotando più LED con meno pin I / O e potenzialmente nessun hardware esterno oltre ai LED.
Ora, il vantaggio di "nessun hardware esterno" si applica solo a un numero relativamente piccolo di LED, fino a quando non si raggiunge il limite corrente del microcontrollore e si impone un limite di luminosità che gli array multiplex non hanno. Se si sceglie di non utilizzare alcun hardware esterno, si è generalmente limitati a guidare un solo LED nella matrice in un dato momento, a differenza di un array multiplex in cui si guida una riga intera alla volta.
Una volta aggiunto hardware esterno per pilotare i LED con una luminosità più elevata in modo che corrisponda a quella di un array multiplex, il charlieplexing perde la sua lucentezza.
Innanzitutto, un array multiplex è indirizzato rigorosamente da riga e colonna; è molto semplice farlo. Attiva la riga 1, attiva tutte le colonne per la riga 1, disattiva la riga 2, attiva tutte le colonne per la riga 2 e così via. Al contrario, un array charlieplexed è molto meno semplice. C'è sempre una riga diagonale che è inutile e uso personalmente le tabelle di ricerca per mettere in relazione tra i miei array e un array rettangolare in cui memorizzo i miei dati.
In secondo luogo, e un assassino, è che il charlieplexing richiede generalmente driver a tre stati. Il multiplexing, tuttavia, viene eseguito con una logica binaria on-off rigorosa. Se si dispone di un microcontrollore con un numero di piedini basso e si desidera pilotare una vasta gamma di LED, è semplice utilizzare chip logici esterni (ad es. Registro a scorrimento e / o driver LED) per controllare gli assi X e Y. La maggior parte dei chip di tipo shift-register non supporta il tristating necessario per fare la stessa cosa in un array charlieplexed. Sono disponibili driver dedicati con charlieplex, ma non sono così versatili.
Terzo, in un array charlieplexed, ogni pin che non sta attivamente facendo qualcosa è ancora collegato ai LED attraverso una connessione debole ("alta impedenza"). E mentre la connessione è debole, è diversa da zero. Supponiamo di avere 25 pin I / O collegati a una griglia di LED. Se accendi un LED, prendendo una di quelle 25 linee alte e una di quelle 25 linee basse, ciò lascia 23 linee ad alta impedenza. Ogni posto in cui la linea I / O alta passa attraverso un LED a una linea neutra, c'è qualche possibilità di perdere corrente. Non tanto. Forse un microamp qua o là. Ma con LED moderni ed efficienti, spesso è sufficiente per creare ghosting visibili.
In quarto luogo, è più difficile controllare la luminosità del LED in un array charlieplexed. In un array multiplex, è possibile utilizzare qualsiasi numero di chip driver LED "sinking" normalmente regolabili che regolano la luminosità di ciascuna colonna separatamente, utilizzando la regolazione della corrente in combinazione con un driver PWM. Nella misura in cui le posizioni della matrice charlieplexed sono indirizzate individualmente e utilizzano solo un resistore per riga o colonna, è molto più difficile eseguire la correzione della luminosità dei punti e l'animazione completa in scala di grigi / colori in un array charlieplexed.
Lo svantaggio più significativo delle luci "Charlieplexing" è che limita il numero di LED che possono essere pilotati con il multiplexing "n" a n (n-1). Non vedo il requisito del driver a tre stati come un grosso problema con la tecnica nel suo insieme. Sicuramente dover usare due driver convenzionali anziché un driver a tre stati ridurrà il vantaggio di CharliePlexing, ma in alcuni casi potrebbero ancora rimanere dei vantaggi (ad esempio, può ridurre il numero di cavi di interconnessione tra un pannello con i driver e un pannello con il luci o interruttori).
Per quanto riguarda gli switch Charlieplexing, l'articolo di Wikipedia non menziona il più grande svantaggio: il charlieplexing non consente a un controller di attendere passivamente la pressione di un pulsante. D'altra parte, è eccessivamente pessimista riguardo ai requisiti dei componenti. Nel 1997, ho prodotto un dispositivo che analizza otto pulsanti utilizzando tre pin I / O e un pin di solo ingresso su un PIC12C508, senza necessità di diodi esterni o altri componenti tranne IIRC un pull-up per un pin PIC che non ha avere uno incorporato; l'approccio avrebbe potuto gestire dieci pulsanti con l'aggiunta di un altro resistore pull-up (per un altro pin I / O che non ne aveva uno), ma il cliente aveva bisogno solo di otto pulsanti, quindi non era necessario.