Dies ist eine alte Version des Dokuments!


Grundlagen

Angenommen man möchte gerne 16 Leuchtdioden ansteuern und verwendet dafür einen Mikrocontroller.

Mit einem Atmega8 wäre dies kein Problem, man könnte jede der LEDs auf einen Portpin legen und könnte somit alle einzeln ansteuern.

Was passiert aber wenn man nicht mehr genügend Portpins frei hat?

Dann kann man sich mit LED-Multiplexing helfen. In diesem Beispiel benötigt man anstatt der 16 Pins nur 8.

Das ist zwar nur grad mal die Hälfte, wenn man aber zB 64 LEDs ansteuern möchte benötigt man statt 64 Pins nur 16.

Und wie soll das jetzt funktionieren?

Ganz einfach:

Das menschliche Auge ist langsam. Wenn man die LEDs in Zeilen und Spalten aufteilt kann man mit Hilfe der Software jede LED einzeln ansteuern.

Tut man dies sehr schnell (>50Hz) kann das Auge dies nicht mehr wahrnehmen.

Prinzipiell gibt es drei einfache Methoden zum Multiplexen:

Bitweises Multiplexing

Bei dieser Methode wird jede LED einzeln angesteuert. Ein Bildaufbau benötigt also bei 16 LEDs 16 Durchläufe.

Diese Methode ist also sehr langsam und lässt weniger Rechenzeit übrig.

Zeilenweises Multiplexing

Hier werden erst alle Spalten die leuchten sollen gesetzt. Danach folgt ein kurzer Impuls auf die Zeile.

Sämtliche LEDs die leuchten hängen parallel und haben nur einen Vorwiderstand. Dadurch kann es bei abweichenden LED-Durchlassspannungen zu unterschiedlichen Helligkeiten führen.

Ein Bildaufbau benötigt also bei 16 LEDs 8 Durchläufe.

Spaltenweises Multiplexing

Hier werden erst alle Zeilen die leuchten sollen gesetzt. Danach folgt ein kurzer Impuls auf die Spalte.

Jede LED hat einen eigenen Vorwiderstand. Die Helligkeiten sind also gleich. Diese Methode ist also allen anderen vorzuziehen.

Ein Bildaufbau benötigt also bei 16 LEDs 8 Durchläufe.