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!!!
Irgendwie klappt das mit dem Anhang nicht... neuer Versuch :-)
Hi, würde mich auch interessieren, wie es einfacher geht. Mein 490Dot-Matrixdisplay ist auch ein wenig aufwendig... VG vom Unwissenden
>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?
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
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
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
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 ^^
Andererseits: so ein AVR-Pin lieferst ja fast keinen Strom. Ich vermute mal diese 74138 können da was mehr vertragen?
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.
Doh! Schon wieder bei Reichelt bestellen... :-( Man sollte mal Bestellgemeinschaften bilden... Danke für deine Tips, das hört sich alles sehr gut an!
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.
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.