Ja, Multiplexing und Charlieplexing haben beide ihre Vorteile und eignen sich jeweils am besten für unterschiedliche Aufgaben.
Der Hauptvorteil von Charlieplexing besteht darin, dass es auf einem mittelgroßen Mikrocontroller ausgeführt werden kann, der mehr LEDs mit weniger E / A-Pins und möglicherweise keine externe Hardware außer den LEDs ansteuert.
Jetzt gilt der Vorteil von "keine externe Hardware" nur für eine relativ kleine Anzahl von LEDs, bis Sie die aktuelle Grenze Ihres Mikrocontrollers erreichen, und es gibt eine Helligkeitsgrenze, die Multiplex-Arrays nicht haben. Wenn Sie keine externe Hardware verwenden, können Sie im Allgemeinen zu einem bestimmten Zeitpunkt nur eine LED in der Matrix ansteuern - anders als bei einem Multiplex-Array, bei dem Sie jeweils eine ganze Reihe ansteuern.
Wenn Sie externe Hardware hinzufügen, um die LEDs mit einer höheren Helligkeit zu betreiben, die der eines Multiplex-Arrays entspricht, verliert das Charlieplexing seinen Glanz.
Erstens wird ein gemultiplextes Array streng nach Zeile und Spalte adressiert. es ist sehr einfach, dies zu tun. Aktivieren Sie Zeile 1, aktivieren Sie alle Spalten für Zeile 1, deaktivieren Sie Zeile 2, aktivieren Sie alle Spalten für Zeile 2 und so weiter. Im Gegensatz dazu ist ein charlieplexiertes Array viel weniger einfach. Es gibt immer eine nutzlose diagonale Zeile, und ich persönlich verwende Nachschlagetabellen, um eine Beziehung zwischen meinen Arrays und einem rechteckigen Array herzustellen, in dem ich meine Daten speichere.
Zweitens und ein Mörder ist, dass Charlieplexing im Allgemeinen Tristate-Treiber erfordert. Das Multiplexen wird jedoch mit einer strengen binären Ein-Aus-Logik durchgeführt. Wenn Sie einen Mikrocontroller mit geringer Pinanzahl haben und eine große Anzahl von LEDs ansteuern möchten, können Sie problemlos externe Logikchips (z. B. Schieberegister und / oder LED-Treiber) zum Steuern der X- und Y-Achse verwenden. Die meisten Schieberegister-Chips unterstützen nicht das Tristating, das erforderlich ist, um dasselbe in einem charlieplexierten Array zu tun. Spezielle Charlieplex-Treiber sind verfügbar, aber bei weitem nicht so vielseitig.
Drittens ist in einem charlieplexierten Array jeder Pin, der nicht aktiv etwas tut, über eine schwache ("hochohmige") Verbindung mit den LEDs verbunden. Und obwohl die Verbindung schwach ist, ist sie ungleich Null. Angenommen, Sie haben 25 E / A-Pins mit einem LED-Raster verbunden. Wenn Sie eine LED aufleuchten lassen - indem Sie eine dieser 25 Leitungen hoch und eine dieser 25 Leitungen niedrig nehmen, verbleiben 23 Leitungen mit hoher Impedanz. An jeder Stelle, an der die High-I / O-Leitung durch eine LED zu einer neutralen Leitung führt, besteht die Möglichkeit, dass Strom abfließt. Nicht viel. Vielleicht eine Mikroampere hier oder da. Bei modernen, effizienten LEDs reicht dies jedoch häufig aus, um sichtbare Geisterbilder zu erzeugen.
Viertens ist es schwieriger, die LED-Helligkeit in einem Charlieplex-Array zu steuern. In einem Multiplex-Array können Sie eine beliebige Anzahl gängiger stromregelnder "sinkender" LED-Treiberchips verwenden, die die Helligkeit jeder Spalte separat regeln, indem Sie die Stromregelung in Kombination mit einem PWM-Treiber verwenden. In dem Maße, wie charlieplexierte Matrixpositionen einzeln adressiert werden und nur einen Widerstand pro Zeile oder Spalte verwenden, ist es viel schwieriger, eine Punkthelligkeitskorrektur und eine vollständige Graustufen- / Farbanimation in einem charlieplexierten Array durchzuführen.
Der bedeutendste Nachteil von "Charlieplexing" -Lampen ist, dass sie die Anzahl der LEDs, die mit 'n'-Way-Multiplexing angesteuert werden können, auf n (n-1) begrenzen. Ich sehe die Tri-State-Fahreranforderung nicht als ein großes Problem mit der Technik als Ganzes. Die Verwendung von zwei konventionellen Treibern anstelle eines Tri-State-Treibers verringert zwar den Nutzen von CharliePlexing, in einigen Fällen bleiben jedoch Vorteile bestehen (z. B. kann die Anzahl der Verbindungsdrähte zwischen einem Bedienfeld mit den Treibern und einem Bedienfeld mit dem Treiber verringert werden) Lichter oder Schalter).
Bei Charlieplexing-Schaltern wird der größte Nachteil im Wikipedia-Artikel nicht erwähnt: Mit Charlieplexing kann ein Controller nicht passiv auf einen Tastendruck warten. Andererseits sind die Komponentenanforderungen zu pessimistisch. 1997 produzierte ich ein Gerät, das acht Tasten mit drei E / A-Pins und einem Nur-Eingabe-Pin auf einem PIC12C508 abtastet, ohne dass externe Dioden oder andere Komponenten benötigt werden, mit Ausnahme von IIRC, einem Pull-up für einen PIC-Pin, bei dem dies nicht der Fall ist habe einen eingebaut; Der Ansatz hätte zehn Tasten mit einem zusätzlichen Pull-up-Widerstand handhaben können (für einen weiteren E / A-Pin, der keinen hatte), aber der Kunde benötigte nur acht Tasten, sodass es keinen Bedarf gab.
quelle