Hallo zusammen,
ich muss in der Schule ein Projekt mit einer 8x8 LED-Matrix machen. Ich
kenne mich mit Elektronik einiger maßen aus, hab aber von
Mikrocontrollern keine Ahnung.
Hat von euch evtl. jemand einen Schaltplan, wie ich das ganze Aufbauen
muss? Wir müssen das ganze in der Schule selbst auf eine Platine fräsen,
ist eigentlich auch kein Problem. Aber ich weiß eben nicht wie ich die
Schaltung verwirklichen kann.
Ich möchte das ganze gerne mit einem ATMega8 und einer fertigen 8x8
LED-Matrix machen. Ist das eine gute Lösung oder hat jemand einen
besseren Vorschlag?
Bin um jede Hilfe dankbar.
Viele Grüße
hermanntoast
hermanntoast schrieb:> hab aber von> Mikrocontrollern keine Ahnung.>
warum willst du dann einen Mikrocontroller benutzen ?
würde eine Schaltung z.B. mit 8bit Schieberegistern nicht genügen
davon zwei Stück (einer steuert die Kathoden einer die Anoden der LEDs)
dazu noch einen Timer z.B. NE555
damit kann man schon lustige LED spielereien realisieren
(ganz ohne Prozessor)
Gruss Uwe
> Ich möchte das ganze gerne mit einem ATMega8 und einer fertigen 8x8> LED-Matrix machen. Ist das eine gute Lösung oder hat jemand einen> besseren Vorschlag?
Laut meiner Recherche wird das ziemlich viel Code, wo du auch (am
besten) mit Arrays arbeiten solltest.
Wenn du für das Programmieren mind. 3 Monate (inkl. Einarbeitung) Zeit
hast, würde ich das über den µC machen.
Ansonsten probier einfach die zuvorherige vorgeschlagene
Hardwaresteuerung.
Weis auch nicht, ob dein Projekt eine Gewichtsbegrenzung haben soll
(portabilität), sonst hätte ich auch eher die µC- Lösung vorgeschlagen.
Mfg,
tommyProg
hermanntoast schrieb:> ich muss in der Schule ein Projekt mit einer 8x8 LED-Matrix machen.
Erzähl mal genauer, dann kann man auch genauer helfen.
8*8 reicht gerade mal, um einen einzelnen Buchstaben darzustellen.
Als Treiber ist der MAX7219 geeignet.
Peter Dannegger schrieb:> 8*8 reicht gerade mal, um einen einzelnen Buchstaben darzustellen.> Als Treiber ist der MAX7219 geeignet.
Wohl kaum.
Keine Ahnung von uC und dann gleich mit SPI anfangen ?
7-Segment auf ASCII umsetzen ?
ULN2803, UDN2981, direkt ansteuern - einfach und billig.
Tho Wes schrieb:>> Ich möchte das ganze gerne mit einem ATMega8 und einer fertigen 8x8>> LED-Matrix machen. Ist das eine gute Lösung oder hat jemand einen>> besseren Vorschlag?>> Laut meiner Recherche wird das ziemlich viel Code
'viel Code' ist zwar eine schwammige Aussage, aber so kann man das nicht
stehen lassen.
"Viel Code" geht anders. Hat man erst mal das Multiplexprinzip
verstanden, dann ist das sogar ausgesprochen wenig Code, der eine Matrix
antreibt.
hermanntoast schrieb:> Ich möchte das ganze gerne mit einem ATMega8 und einer fertigen 8x8> LED-Matrix machen.LED Matrix
die fertige Matrix nimmt dir ja nur das langweilige Löten der 64 LED in
einem Gitter ab. Ansteuern musst du sie ja nach wie vor selbst.
Hallo, schon mal danke für die viele Antworten. Mein ziel ist es auf der
Matrix verschiedene Bilder oder Buchstaben oder so darzustellen. Das
Programmieren ist dabei auch nicht das Problem. Damit kenn ich mich sehr
gut aus.
Ich würde wirklich gerne einen andere elek. Schaltung in der Schule
machen, aber die Themen wurden vorgeschrieben (auch mit
Microcontroller!). Und wir haben auch bis Anfang/Mitte nächsten Jahres
Zeit.
Als Controller benutze ich auch gerne den MAX7219. Ist mir relativ egal
:)
Was ich jetzt aber noch bräuchte ist eine Zeichnung der Schaltung.
Bin immer noch für alle Tipps dankbar!
Ein µC wie eine AVR Mega 8 ist schon in Ordnung, ein Mega88 wäre die
modernere Version, wo man ggf. die Option für mehr Speicher hat. Einfach
nur für die Darstellung reicht auch ein Mega48. Man hat auch genügend IO
Pins, um ohne Schieberegister oder ähnliches auskommt.
Es gibt da noch 2 Fragen zur gewünschten Funktion:
1) Was sollte dargestellt werden, also wo sollten die Daten herkommen ?
Das könnte ein fester Wert sein, oder etwa eine Eingabe per UART,
oder eine feste Zeichenfolge.
2) Wie hell muss es sein ? Danach richtet sich der nötige Strom. Wenn
man es sich einfach macht, nimmt man etwa 10-20 mA für die Segmente: das
können die Ausgänge des µC noch direkt treiben, und bei einem
Programmfehler geht noch keine LED kaputt. Für die andere Seite der
Matrix wird man wohl Treiber benötigen (sofern man über etwa 2,5 mA
geht) - etwa ULN2803.
Die Schaltung ist relativ einfach: ggf. Spannungsregler, der µC mit 2
mal 8 IO Leitungen + Vorwiderstände und das Treiber IC. Bei den IO
Leitungen hat man ggf. die Wahl die Pins passend für eine einfaches
Layout oder eine einfachere Programmierung zu wählen.
hermanntoast schrieb:> Was ich jetzt aber noch bräuchte ist eine Zeichnung der Schaltung.
( ISR MatrixPointer )
Byt0 Byt2 Byt4 Byt6
| | | |
|Byt1 |Byt3 |Byt5 |Byt7
| | | | | | | |
8xRled \|/ | \|/ | \|/ | \|/ |
_ \|/ \|/ \|/ \|/
bit 7 ----|___|--- x x x x x x x x
U bit 6 ----|___|--- x x x x x x x x
D bit 5 ----|___|--- x x x x x x x x
N bit 4 ----|___|--- x x x x x x x x
2 bit 3 ----|___|--- x x x x x x x x
9 bit 2 ----|___|--- x x x x x x x x
8 bit 1 ----|___|--- x x x x x x x x
1 bit 0 ----|___|--- x x x x x x x x
| | | | | | | |
| | | | | | | |
| | | | | | | |
(ISR ColumnCnt) | | | | | | | |
bit 0 ______________| | | | | | | |
U bit 1 _________________| | | | | | |
L bit 2 ____________________| | | | | |
N bit 3 _______________________| | | | |
2 bit 4 __________________________| | | |
8 bit 5 _____________________________| | |
0 bit 6 ________________________________| |
3 bit 7 ___________________________________|
Karl Heinz schrieb:> "Viel Code" geht anders. Hat man erst mal das Multiplexprinzip> verstanden, dann ist das sogar ausgesprochen wenig Code, der eine Matrix> antreibt.
Ja.
Nur eine Tabelle brauchst du, falls du ASCII zeigen willst, aber 64
ASCII und ein paar Sonderzeichen genugen vollkommen.
64 Zch * 8Byt = 512 Bytes im Flash. Von ASCII-Code 0x20 abziehen,
Zeichen > 96 als ein einziges Sonderzeichen anzeigen.
Wenn du internen Oszillator benutzst, hast du 2 Ports mit
jeweils 8 bit frei, namlich PortB und PortD.
Multiplex frequenz sollte nicht kleiner als 75Hz sein,
also 8 Columns x 75Hz = mit etwa 600Hz multiplexen.
Timer1 auf Clear Timer on Compare Match einstellen, bei
jedem Interrupt:
a) Wert aus deinem ByteArray auf UDN2981 ausgeben,
Matrix Pointer erhohen, falls Pointer > 7,
wieder auf Null setzen.
b) ColumnCnt rechts rotieren, Wert auf ULN2803 ausgeben.
hermanntoast schrieb:> [...] aber die Themen wurden vorgeschrieben [...]
Was ist denn das für eine Schule, die Themen vorschreibt und dann nicht
wenigstens ansatzweise die Grundlagen vermittelt, die nötig sind, um sie
zu bearbeiten?
Marc Vesely schrieb:> ULN2803, UDN2981, direkt ansteuern - einfach und billig.
Viel mehr Lötaufwand.
.. und was soll an der Max7219 Lösung teuer sein? Den gibt es komplett
mit 8x8 Matrix und PCB für unter 2 Euro man kann davon auch problemlos
mehrere Module aneinandereihen wenn man es möchte.
und das bißchen Bitwackeln am Port ist auch nicht aufwändiger zu
programmieren als eine Matrix anzusprechen.
Ro V. schrieb:> .. und was soll an der Max7219 Lösung teuer sein? Den gibt es komplett> mit 8x8 Matrix und PCB für unter 2 Euro man kann davon auch problemlos> mehrere Module aneinandereihen wenn man es möchte.
Ich hab nicht gesagt das es teuer ist, sondern aufwendiger. Und eine
LED Matrix selbst zu programmieren ist sicher nützlicher als MAX7219
zu benutzen, zumindest lernt man so wie multiplexen funktioniert.
Es handelt sich hier um ein Schulprojekt...
Hallo, vielen dank für die ganzen Antworten.
@lurchi:
zu Frage 1: Ich möchte gerne Lauftexte oder kleine Muster darstellen. Es
wäre toll wenn das ganze über einen RS232 Stecker laufen würde. Ich
finde das am einfachsten um den Controller mit dem PC zu verbinden. Oder
liege ich da falsch?
zu Frage 2: Die LED's sollten gut zu sehen sein, aber nicht gleich
kaputt gehen, darum tendiere ich wie du gesagt hast zu 10-20 mA.
@logarithmus
Schon mal ein guter Anfang. Danke
Der Weg über RS232 wäre sicher möglich. Man müsste das aber bei der Wahl
der Pins berücksichtigen, damit man die HW UART nutzten kann. Software
UART zum Empfangen ginge im Prinzip auch, ist aber im Vergleich zur
Matrix schon recht kompliziert. Da lieber die Ausgabe auf 3 Ports
verteilen.
So etwas wie ein vorprogrammiertes Muster Ausgeben kann man immer noch
machen - dafür braucht man keine extra HW.