Ist Multiplexing jemals Charlieplexing überlegen?

17

Ich habe die beiden Methoden überprüft, und Multiplexing scheint tatsächlich nur einen Vorteil zu haben: Es wäre einfacher, eine ausgefallene LED ausfindig zu machen als in einem Charlieplex-Array.

Kann jemand sachkundiger irgendwelche anderen Kompromisse erklären?

Chris B. Behrens
quelle

Antworten:

25

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.

Windell Oskay
quelle
1
Gut zu lesen. Bietet einen Einblick in Ihre Peggy Designs ...
NickHalden
Ich habe gerade dunkle reguläre LEDs gekauft, aber Ghosting ist immer noch ein Problem. Ist es besser, einen Widerstand für jede LED anstatt für jede Leitung zu verwenden? Ich fahre 6 LEDs mit einem Attiny85. Vorher habe ich 330 Ohm Widerstände für jede Leitung verwendet und jetzt verwende ich 1K. Bei 1K ist das Chosting geringer, aber immer noch vorhanden. Auch die LEDs sind nicht so hell wie bei 330 Ohm. Ist es also besser, wenn jede LED einen eigenen Widerstand hat, um dies zu beseitigen?
Codebeat
3

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.

Superkatze
quelle
Hast du irgendwo im Netz ein Schema davon?
Codebeat
@ Erwinus: Alle Drähte von der CPU werden hochgezogen. Schließen Sie einen Schalter an alle möglichen Adernpaare an (bei vier Adern sind das also sechs, bei fünf Adern 10, bei sechs, sieben oder acht, 15, 21 oder 28). Schließen Sie einen Schalter zwischen jedem Kabel und Masse an (ein zusätzlicher Schalter pro Kabel).
Supercat