Forum: Mikrocontroller und Digitale Elektronik LED Matrix


von Samuel (Gast)


Lesenswert?

Hallo ich möchte gerne eine LED Matrix aufbauen (11x11) und dann diese
mit PLD ansteuern ich möchte aber nicht 121 Widerstände benutzen wen
das geht. nun meine Frage wie muss ich diese LED Matrix aufbauen? und
wie kann ich die dann ansteuern (ohne uC)?

von Jadeclaw D. (jadeclaw)


Lesenswert?

Wirf mal ein Auge hier drauf:
http://home.wanadoo.nl/electro1/avr/dotmatrix.htm
Ist zwar auch Mikrocontroller, aber es bringt das Ansteuerprinzip nahe,
denn Zeitmultiplex ist die Lösung.
Ansteuern lässt sich das dann auch mit Zähler und EPROM als
Charakterfontspeicher.
Aber Achtung: In den Reihenleitungen zur LED-Matrix sind Widerstände
notwendig, wenn etwas anderes als ein AT90S2313 zur Ansteuerung
verwendet wird.

Gruss
Jadeclaw.

von Samuel (Gast)


Lesenswert?

Vielen Dank für die Hilfe, das Prinzip des Matrixaufbaus habe ich wohl
verstanden nicht aber ganz die ansteuerung jeder sagt was anderes und
ein gutes schema habe ich auch nicht wirklich gefunden.

welchen multiplexer sollte ich denn nehmen und was macht dieser
74HC595?
Als erstes möchte ich mal hinkriegen das alle LED's leuchten und dann
vieleicht mit einem Knopfdruck oder einem Timer irgendwelche effekte
geschehen welche ich dann mit dem PLD bzw. CPLD programmieren möchte.

von thkais (Gast)


Lesenswert?

Darf ich mal ganz dumm fragen, warum ein PLD, aber kein µC eingesetzt
werden soll? Das Letztere ist doch wesentlich unkomplizierter
(zumindest aus meiner Sicht).

von Samuel (Gast)


Lesenswert?

ja ich mache dieses Projekt in der Firma und da haben wir noch keine uC
aber wir sind jetzt gerade am PLD dran und da wäre es eine gute übung
ich würde es auch lieber mit uC machen. ^^

aber das ist doch nicht zu schwierig oder sonst lasse ich das mit den
efekten weg wenn ich das nicht hinkriege

von 3 Newton (Gast)


Lesenswert?

Naja, wenn Du das mit den Effekten weglässt ist auch eine Ansteuerung
sinnlos. Dann legt halt alle über FETs an ein entsprechendes PWM
Signal.

3N

von Jadeclaw D. (jadeclaw)


Lesenswert?

@Samuel: Der 74HC595 ist ein Schieberegister,
Er nutzt es hier, um die einzelnen Spalten durchzuschalten, indem eine
0 durchgeschoben wird und parallel auf die Reihenleitungen das dazu
passende Datenbyte draufgelegt wird.

Nur - Da du einen PLD nutzt, kannst du dir den Decoder/Schieberegister
programmieren, ebenso den Zähler für die Spaltenauswahl etc.
Ist der PLD gross genug, passt alles in das Teil hinein, inklusive
Charakterfont (falls Zahlen/Buchstaben dargestellt werden sollen).

Gruss
Jadeclaw.

von Markus (Gast)


Lesenswert?

Ehm ich muss ma kurz unterbrechen, was ist ein PLD?

von Jadeclaw D. (jadeclaw)


Lesenswert?

Ein IC, welches eine grosse Anzahl einzelner Gatter und Logikblöcke
enthält, die dann nahezu beliebig untereinander 'verdrahtet' werden
können.
So kann man sich aus diesen einzelnen Teilen die benötigten Funktionen
zusammenbauen. Ein PLD kann je nach Grösse bis zu 200-300 TTL-ICs
ersetzen.
Günstiges Einstiegsteil ist die XC9536-Serie von Xilinx.
Einsteigerkits dafür findet man öfters auf eBay für wenig Geld.

Gruss
Jadeclaw.

von Markus (Gast)


Lesenswert?

Und warum nimmt man dafür keinen µC her?
Ist man damitnicht einfacher, schneller, und vorallem flexibler
unterwegs?

von Jadeclaw D. (jadeclaw)


Lesenswert?

Jein. Ein PLD ist genauso flexibel, verlangt allerdings mehr
Gehirnschmalz beim Programmieren. Wo ein Controller oder Mikroprozessor
allerdings nicht mithalten kann, ist die Geschwindigkeit. Bei modernen
PLDs sind feste Durchlaufzeiten für die eingehenden Signale bis diese
an den Ausgängen erscheinen die Normalität. Der Controller, der innert
5 ns auf einen Signalwechsel reagiert, dieses Signal mit einem anderen
verknüpft und das Ergebnis an einem anderen Ausgang bereitstellt muss
erst noch erfunden werden. Und das unabhängig davon, was sonst noch auf
anderen Teilen desselben Chips passiert.

Gruss
Jadeclaw.

von peter dannegger (Gast)


Lesenswert?

@Jadeclaw,

"Ein PLD ist genauso flexibel, verlangt allerdings mehr Gehirnschmalz
beim Programmieren."


Falsch !

Ein µC ist ungleich flexiber. Schon um nur die µC-CPU nachzubilden,
brauchts riesige FPGAs mit Gatteranzahl jehnseits von 100.000.

Für jede einfache Sache verbraucht ein CPLD Macrozellen, Rechnen ist
besonders aufwendig.

Für einen µC ist es dagegen ein Klacks, viele verschiedene Sachen quasi
gleichzeitig zu machen.


Der einzige Vorteil eines CPLD liegt in der Geschwindigkeit, da er ja
alles echt parallel macht (mit verschiedenen Macrozellen).

Diese wird hier aber überhaupt nicht benötigt, LED-Multiplex macht
jeder µC spielend so nebenbei im Timerinterrupt.

Im Gegenteil, LEDs im MHz-Bereich zu multiplexen erfordert schweinische
Schaltleistungen (hohe Umladeströme) und stört wie Sau.


Peter

von Jonas (Gast)


Lesenswert?

...womit ihr hier mal wieder, wie so oft, voll von der eigentlichen
frage abgewichen seit, und leute die den thread lesen, einen haufen
sachen lesen, die garnicht die eigentliche Frage beantworten.

samuel fragt schon lang nicht mehr, und ich denke geholfen ist ihm
immer noch nicht wirklich...

wenn jemand wissen will worin der Unterschied zwischen einem uc und
einem pld liegt, warum macht er dann nicht einen neuen thread mit genau
dieser fragestellung als überschrift auf!? so findet man doch auch die
lösungen zu seinen problemem viel schneller!

stattdessen sind hier threads mit 100derten von einträgen über gott und
die welt, alles ein durcheinander... ok, zumindest manchmal....

sorry aber das musste mal sein.

Jonny

von peter dannegger (Gast)


Lesenswert?

@Jonny

"samuel fragt schon lang nicht mehr, und ich denke geholfen ist ihm
immer noch nicht wirklich..."


Im Prinzip ist die Antwort ja schon gegeben:

Ein CPLD ist der erheblich umständlichere Weg, ein µC ist wesentlich
besser geeignet.


Peter

von Sebastian Heyn (Gast)


Angehängte Dateien:

Lesenswert?

siehe anhang.
du brauchst nur 11R's, wenn du multiplex ansteuerst ist ja immer nur 1
zeile aktiv...
bei fragen fragen!

von Samuel (Gast)


Lesenswert?

Ja hallo danke für die Hilfe habe jetzt eine konkrete idee das ich die
Matrix mit einem PWL ansteuere ich habe da drin rote und weisse LED's
dann kann ich irgendwie die roten und die weissen verknüpfen das die
die roten und die weissen immer dimmen also zuerst die roten ein und in
der zeit die weissen aus usw. und dann zwischendurch leuchten alle (wenn
das geht). Ich bin jetzt noch auf der suche wie ich das realisieren kann
mit meinen (C)PLD's ;-)

von Samuel (Gast)


Lesenswert?

ach ja noch was das mit den strömen und den Widerständen ist dann da
auch wieder so ne sache ich dachte ich verdrahte die roten alle
parallel und dann an einen Transistor um sie anzusteuern

von Jadeclaw D. (jadeclaw)


Lesenswert?

Grundsätzlich gilt, dass pro Reihenleitung eine LED an ist.
Bei 20mA und 2 Volt Spannungsabfall an der LED sind 150 Ohm richtig.
(Uges - Uled)/Iled = R; R in Ohm, U in Volt, I in Ampere.
High Efficiency-LEDs brauchen weniger Strom,
680 Ohm bis 1kOhm sind da Ok.
Die Widerstände kommen immer in die Leitungen, auf die das Bitmuster
ausgegeben wird.

Gruss
Jadeclaw.

von Schmolli (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

habe eine 5x7 DOT Matrix TC07 von Kingbright verwendet, nutze den 
PIC18F452, habe die 5 Spalten über Vorwiderstände an den Ausgängen des 
74HC595 angeschlossen, die 7 Zeilen sind direkt an Port D angeschlossen, 
siehe include.

Die drei Steuerleitungen SHCP, STCP und DS habe ich an dem Port C 
angeschlossen.

Soweit so gut, das angehängte Programm müßte normalerweise einen DOT in 
Zeile 1 von rechts nach links wandern lassen, jedoch ist die Zeile 1 
dauerhaft an. Habe vermutet, es handelt sich hierbei um ein Zeitproblem, 
habe jedoch schon den Datentyp der Zählvariable auf double umgeändert 
und es ändert sich rein garnichts.

Zum Programmablauf

1) Ich lege die Zeile 1 mit dem zugehörigen Portpin auf 5v+ Potential
2) Ich lasse eine for Schleife von 7 an rückwärts zählen
3) Ich hole mir das letzte Element aus dem Feld per zählvariable 7
4) rufe die Fkt Schiebregister auf, Übergabe letztes Feldelement

5) Schiebe den Wert seriell in den HC595
6) Schalte den Wert auf die Ausgänge des HC595
7) Warteroutine
8) Schritt 1 usw usw

Die seriell to parallel Wandlung sollte richtig sein, ich habe keine 
idee, woran es liegen könnte, dass die Zeile 1 dauerhaft leuchtet


Ich hoffe, das jemand meinen bzw meine Fehler im Quellcode oder evtl in 
der Hardwarebeschreibung findet. Ich habe mich an dem Beispiel

von Schmolli (Gast)


Lesenswert?

am Beispiel http://home.wanadoo.nl/electro1/avr/dotmatrix.htm   sollte 
das heißen, hatte den Link vergessen

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.