Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Dieser Artikel ist noch lange nicht vollständig. Der Auto/Initiator hofft das sich weitere User am Ausbau des Artikels beteiligen.

Das Ergänzen ist also ausdrücklich gewünscht! Besonders folgende Dinge würden noch fehlen:

TODO: Technische Erklärung, Multiplexing bei z.B. LED-Matrix, Multiplexing bei Eingängen (z.B. Matrix-Tastatur)


Grundidee des Multiplexings

Erklärung

- Hier ist noch Platz für eine schön formulierte, technische Erklärung vorgesehen-



Anschauliches Beispiel für Multiplexing:

Betrachten wir einen Zugverkehr. Am Bahnhof stehen viele Züge, die von dort aus zu ihren Zielbahnhöfen gelangen möchten. Jeder Zug steht zunächst natürlich auf seinem eigenen Gleis. Doch auf den Verbindungsstrecken zwischen den Bahnhöfen/Städten liegt meist nur ein Gleis pro Richtung. Wer käme auf die Idee, für jeden Zug ein eigenes, mehrere km langes Gleis zu bauen? Es wäre ein großer Aufwand. Deswegen beschränkt man sich eben auf ein Gleis pro Richtung, das reicht in den meisten Fällen aus. Jetzt ist es naheliegend, dass die Züge nicht alle gleichzeitig die Verbindungsstrecke benutzen können, sondern es kann nur einer nach dem anderen die Strecke befahren. Dieses Verfahren entspricht dem Multiplexing. Haben mehrere dieser Züge auch noch denselben Zielbahnhof (oder Zwischenhalt), werden diese dort wieder auf mehrere Gleise verteilt. Das entspricht dann dem sogenannten Demultiplexing.

Anwendungen

Vorteile

Mit vergleichsweise wenigen (Prozessor-)Leitungen kann eine umfangreiche Hardware angesteuert bzw. ausgewertet werden.

Nachteile

Leicht aufwändigere Programmierung erforderlich, bei Multiplexing von Ausgängen kann unter Umständen genaues Timing erforderlich sein. Bei Eingängen kann möglicherweise nicht jedes kurzzeitige Signal erfasst werden, man kann z.B. bei einer Tastaturmatrix keine Interrupts auf beliebige Tasten legen.

Ausgänge multiplexen

Varianten, Anwendungen

LED-Matrix

Varianten, Zeilen-/Spaltentreiber, Programme, Pingpong-Platine...

Charlieplexing

Erklärung des Verfahrens, Grenzen der Machbarkeit

Charlieplexing geht zur Ansteuerung vom LEDs noch einen Schritt weiter als die Matixansteuerung: Es ist nicht mehr festgelegt welche Leitungen Zeilen und Spalten sind. Über jeder Kombination von 2 Leitungen können 2 antiparallele LEDs angesteuert werden. Die gerade nicht aktiven Leitungen werden am µC hochohmig geschaltet. Damit können mit wenigen IO Pins viele LEDs angesteuert werden: Bei N IO Pins gibt es N*(N-1) Kombinationen je eine Leitung für ein High und low Signal auszuwählen. Das sind z.B. 6 LEDs mit 3 Leitungen oder 20 LEDs mit nur 5 Leitungen.

Die Schaltung hat aber auch ein paar Nachteile: Man benötigt für jeden IO Pin oder je 2 LEDs einen Vorwiderstand. Das Programm zur Ansteuerung ist komplizierter als bei der Matrix. Außerdem ist es nur eingeschränkt möglich mehr als 1 LED gleichzeitig leuchten zu lassen - zum einen von der Logik und auch von der Belastbarkeit der Ausgänge. Extra Treiber sind aufwendiger (z.B. je 1 NPN und PNP Transistor als Emitterfolger) als bei der Matrix. Durch einen schnellen Wechsel der gerade aktiven LEDs (Multiplexing) kann so der Eindruck erzeugt werden das einige wenige (bis etwa 10) LEDs gleichzeitig hell sind.

Sinnvoll ist Charlieplexing vor allem wenn von den LEDs nur einige wenige gleichzeitig hell erscheinen sollen und die Zahl der PINs am µC wirklich knapp ist. Ein Spezialfall sind rot-grüne LEDs, wo schon in einen Gehäuse die beiden LEDs antiparallel sind - hier bietet sich Charlipixling geradezu an.

Eingänge multiplexen

Analogmultiplexer

Stehen beispielsweise bei einem Mikrocontroller nicht genügend (analoge) Eingänge zur Verfügung, und man muss jedoch viele Spannungen mit dem Mikrocontroller messen, so kann vor einen Analogeingang ein Multiplexer geschaltet werden. Zur Steuerung des Analogmultiplexers sind wenige digitale Leitungen erforderlich.

Exemplarisch soll das Verfahren hier mit einem 8-zu-1-Multiplexer 74HC4051 gezeigt werden:

Analogmultiplexer4051.png

Das Multiplexer-IC wird mit 5V betrieben, die Versorgungsspannung wird an Vcc angelegt und wird mit dem Kondensator C1 stabilisiert. Die zu messenden Spannungen / auszuwertende Sensoren müssen mit die A0...A7 (Kanal 0 ... Kanal 7) verbunden werden. Der COM-Anschluss wird mit einem freien Analogeingang des Mikrocontrollers verbunden.

Wie kann der Mikrocontroller nun festlegen, welchen Kanal der Multiplexer durchschalten soll? Dies wird über die SEL0...SEL2-Anschlüsse festgelegt. Der Mikrocontroller muss lediglich High oder Low an die entsprechenden Leitungen anlegen.

Wahrheitstabelle:

/EN SEL2 SEL1 SEL0 durchgeschalteter Kanal
L L L L Kanal 0
L L L H Kanal 1
L L H L Kanal 2
L L H H Kanal 3
L H L L Kanal 4
L H L H Kanal 5
L H H L Kanal 6
L H H H Kanal 7
H x x x kein; COM hochohmig

Vor dem Einlesen des Analogsignals sollten noch ein paar µS eingeplant werden, da der Multiplexer im Umschaltmoment eine kurze Spannungsspitze am Ausgang generiert (aufgrund interner Kapazitäten).

Es ist noch anzumerken, dass der Multiplexer nicht unendlich niederohmig durchschalten kann, beim 74HC4051 beträgt der Widerstand zwischen COM und durchgeschaltetem Kanal etwa 70 Ohm.

Die gezeigte Schaltung ist keineswegs nur auf analoge Signale beschränkt, der 74HC4051 kann ebenso digitale Signale multiplexen. Außerdem kann das Signal bidirektional (in beide Richtungen verlaufen). Es ist nicht festgelegt, dass A0...A7 Eingänge und COM Ausgang sein muss, es kann auch COM als Eingang und A0...A7 als Ausgänge verwendet werden. Auf diese Art und Weise ist es auch schon gelungen, mehrere Ultraschallsensoren vom Typ SRF05 damit auszuwerten (bidirektional notwendig).

Digitalmultiplexer

Für digitale Signale gibt es neben dem analogen Multiplexern auch noch spezielle Digitale, wie z.B. 74HC152. Dabei ist dann die Richtung der Signale festgelegt, also für einen Multiplexer viele (hier 8) Eingänge und einen Ausgang. Die Umkehrung mit einem Eingang und mehreren Ausgängen nennt man Demultiplexer. Der Demultiplexer hat anders als das analoge Gegenstück an den nicht ausgewählten Ausgängen einen definierten Logikpegel (z.B. high beim 74HC138).