Forum: Mikrocontroller und Digitale Elektronik 5x7 DotMatrix Displays richtig multiplexen


von Lukas (Gast)


Lesenswert?

Hallo zusammen!
Ich habe hier einen kleinen Hirnverdreher :-)

Und zwar möchte ich 4 5x7DotMatrix Displays an einen AVR anschließen.
Jedes diser Displays braucht 12 Anschlüsse (5 um die zu beleuchtende 
Spalte auszuwählen, 7 für die Zeile). Ist ja logisch ;-)

Weil der AVR aber nicht 4 x 12 = 48 Anschlüsse hat, habe ich mir 
überlegt alle Displays parallel zu schalten. Dann zeigen natürlich auch 
erstmal alle die selben Daten an... die Schaltung dazu habe ich mal oben 
angehängt (jaja, ich weiß: das ist nicht standardkonform, aber ist auch 
nur ne schnelle PaintBrush-Skizze) ;-)

Mein Problem ist nun das folgende:
Mit 4 weiteren Pins vom AVR möchte ich steuern, welches Display die 
gerade anliegenden Daten anzeigt (also multiplexen). So dass 
schlussendlich jedes Display etwas anderes darstellen kann.
Aber wie mach ich das am sinnvollsten???

Die einzige Lösung die mir einfällt wäre 20 weitere Transistoren 
einzubauen, nämlich vor alle Spalten-Eingänge an den Displays. Und die 
könnten dann jeweils in 5er Gruppen mit einem Pin vom AVR gesteuert 
werden.
Das ist natürlich enorm (löt-)aufwendig. Geht das nicht einfacher???

Vielen Dank für eure Ideen!!!

von Lukas (Gast)


Angehängte Dateien:

Lesenswert?

Irgendwie klappt das mit dem Anhang nicht... neuer Versuch :-)

von Unwissender (Gast)


Lesenswert?

Hi,
würde mich auch interessieren, wie es einfacher geht.
Mein 490Dot-Matrixdisplay ist auch ein wenig aufwendig...
VG vom Unwissenden

von Jack B. (jackbraun)


Lesenswert?

>Mit 4 weiteren Pins vom AVR möchte ich steuern, welches Display die
>gerade anliegenden Daten anzeigt (also multiplexen).

Da drängt sich sofort die Frage auf: Was soll das bringen?

von Unwissender (Gast)


Lesenswert?

aufwändig nachtürlich mit ä
sorry

von maddin (Gast)


Lesenswert?

deine matritzen sind, wenn ich das richtig sehe alle parallel geschaltet 
- wie willst du da einen punkt erreichen, wenn du leitungen beschaltest, 
dann leuchten immer 4 punkte....

vielleicht noch etwas ausgehender mit dem multiplexing/charlieplexing 
von led matritzen nachdenken...

maddin

von Εrnst B. (ernst)


Lesenswert?

maddin wrote:
> vielleicht noch etwas ausgehender mit dem multiplexing/charlieplexing
> von led matritzen nachdenken...


Um das Nachdenken zu Beschleunigen:

LED-Matrix

Sinnvoll wär ein 1:7 Multiplexing über die Zeilen, und jede Menge 
Schiebe-Register über die Spalten.

Wenn Du die einzelnen Displays auch noch nacheinander schaltest, würde 
jede leuchtende LED nur noch für ein achtunzwanzigstel der Zeit Strom 
kriegen, wär also recht dunkel...

/Ernst

von Danielzik (Gast)


Lesenswert?

Hallo Lukas,

das kannst du wie folgt lösen:

Die 5 Leitungen für die Spalten, schließt du nicht direkt an alle 4 
Anzeigen, sondern schaltest davor 3 x 74138 3zu8 Decoder/Demultiplexer.

Mit diesen Decodern (74138) schaltetst du immer nur einen Ausgang.
Somit musst du um ein komplettes Bild darzustellen, 20 mal eine Adresse 
und die zugehörigen 7 Reihen anzeigen.

Für die Spalten Anschaltung brauchst du 3 Bits (A, B, C)
und 3 Freigabe Bits für je einen 74138.
Macht zusammen 6 Bits.

Viel Spaß beim bauen

von Stefan (Gast)


Lesenswert?

Max7219

von Lukas (Gast)


Lesenswert?

Vielen Dank an die letzten drei Poster :-)

Allerdings bin ich mir nicht ganz sicher, ob es nicht doch einfacher und 
billiger wäre der Schaltung einen zusätzlichen ATMega16 zu spendieren, 
der nur für die Displaysteuerung zuständig ist...
eieiei, ist das schwierig ^^

von Lukas (Gast)


Lesenswert?

Andererseits: so ein AVR-Pin lieferst ja fast keinen Strom. Ich vermute 
mal diese 74138 können da was mehr vertragen?

von Alex (Gast)


Lesenswert?

Statt einzelner Transistoren kann du auch Darlington-Arrays benutzen. 
Ein bisschen weniger Lötarbeit und viel weniger gefriemel.

Dann würde ich die Spalten direkt über 20 (4 * 5) Pins am Atmega16 
ansteuern/versorgen.
Die 7 reihen der Displays alle parallel schließen und über 7 pins am 
Atmega so die jeweilige Reihe auswählen die von angesteuert werden soll. 
(Darlington array und evtl. noch den demultiplexer dazwischen)

Die Vorwiderstände für die LED-Displays sollten an den 20 Spalten-pins 
sein. Das sind zwar 20 Widerstände aber so ist garantiert dass pro 
Widerstand immer nur eine LED in serie liegt.

Weitere Vorteile der Schaltung sind
- ein aktiver Pixel auf dem Display ist immerhin 1/7 der Zeit wirklich 
an
- jeder Ausgangspin am uC wird durch nur eine LED belastet der ganze uC 
durch höchstens 20 auf einmal
- nur 7 Transistoren!!!

Für das ganze müssen natürlich die Reihen deiner Displays die Kathoden 
der LEDs sein.

Ich hab das so für ein 8x8 Display gelöst und es geht prima. 
Vorwiederstände sind bei mir 100 Ohm, der Demultiplexer ist der 74HC238, 
das Darlington array ist ULN2803.

von Lukas (Gast)


Lesenswert?

Doh! Schon wieder bei Reichelt bestellen... :-(  Man sollte mal 
Bestellgemeinschaften bilden...

Danke für deine Tips, das hört sich alles sehr gut an!

von Alex (Gast)


Lesenswert?

Hi, noch was kleines zum hinzufügen..
Ich hab mal das Datenblatt vom ATmega16 angeschaut.
Da steht drin dass alle Ausgangspins zusammen nicht mehr als 200mA 
liefern sollten (bei PDIP bauform). Und auch noch ein paar andere 
Limitierungen, was das angeht. (Seite 294)
Naja.. bei 20 pins macht das 10 mA pro LED, was von der helligkeit her, 
gerade so ok ist. Bei mir sind es bei den 100 Ohm Vorwiderstand 15mA pro 
LED.

Ich würde das aber einfach mal ignorieren und checken ob der uC nicht zu 
warm wird. Die Pixel sind ja normalweise auch nicht alle gleichzeitig 
an. Allerdings hab ich keine Erfahrung ob das dann die Lebensdauer von 
dem uC beeinflusst. Vielleicht kann hier jemand anderes weiterhelfen.

von Falk (Gast)


Lesenswert?

@ Lukas

>ngs bin ich mir nicht ganz sicher, ob es nicht doch einfacher und
>billiger wäre der Schaltung einen zusätzlichen ATMega16 zu spendieren,
>der nur für die Displaysteuerung zuständig ist...

Nein, ist es nicht. Ausserdem langeweilt der sich dann zu Tode. Für 
deine vier 5x7 Matritzen brauchst du 7 + 4*5 = 27 Pins. Wie bereits von 
anderen geschrieben musst du sinnvoillerweise ein 7:1 MUX bauen, welche 
20 Bit (4x5) pro Zeile ansteuert. wenn dir die 20 Pins zu viel sind, 
nimm drei 74HC595, und mach eine Porterweiterung per SPI, dann brauchst 
du nur 7 + 3 Pins, wobei dann allerdings der Controller ein wenig mehr 
zu tun hat. Sollte aber nciht ins Gewicht fallen.

http://www.mikrocontroller.net/articles/Porterweiterung_mit_SPI

>eieiei, ist das schwierig ^^

Nöö, immer wieder das Gleiche.

Und bevor ich es vergesse. Ja, du musst noch Leistungstreiber einsetzen, 
normale Digital-ICs können die Ströme nicht schalten.

MfG
Falk


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.