PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 64 leds mit atmega32 steuern, nur wie?



emde
08.09.2007, 17:00
Hallo,

ich habe mal ein paar fragen zu meinem geplanten projekt Ich möchte mir eine led uhr bauen. Die uhr soll ca 64led´s haben(ich weiss das ist viel), nun ist das prblem das ich ja nicht alle einzeln ansprechen kann, mit nur einem atmega32, darum hir meine frage. Es es möglich 64 leds mit einem atmega32 zu steuern?

emde

Lunarman
08.09.2007, 17:05
das kommt drauf an - müssen auch zwei gleichzeitig an sein können?
Wenn nicht, ist es derbe einfach - 8 x 8. Das heißt, du baust dir einfach ne matrix aus den leds. Dann steuerst du mit einem Port die x-Achse an und mit nem anderen port die y-Achse.
Beispiel:

Die LED in der 5. zeile / 4. Spalte soll leuchten.
Also musst du den 5. Pin der y-Achse auf high ziehen und den 4. Pin der x-Achse auf low ziehen, so dass Strom durch diese eine LED fliesst.

Wenn jetzt mehrere gleichzeitig leuchten sollen, kannst du das ähnlich machen, nur drafst du dann nicht einfach zwei Zeilen und zwei Spalten gleichzeitig anmachen, sondern musst immer an und ausschalten. Weiß grad nicht, wie das heißt... Aber im Grunde gehen die LEDs dann immer an und aus, aber so schnell, dass man es nicht sehen kann.

emde
08.09.2007, 17:10
Danke für deine sehr schnelle antwort =D> Ja es müssen mehrere aufeinmal leuhten. Gibt es schon ein beispiel mit der matrix, denn ich verstehe es noch nicht

emde

Lunarman
08.09.2007, 17:23
Naja... ich hab fast damit gerechnet, dass du das nicht verstehst. Ist auch sehr schwierig zu beschreiben. Nimm meinetwegen nen Schachbrett. Jedes Feld ist ne LED. Die linke Seite ist ein port und die Seite die zu dir zeigt ist auch einer. Jetzt ziehst du in Gedanken eine Linie durch jede ZEILE, also von links nach rechts. Du schließt also im Grunde an jeden Pin 8 LEDs parallel an.
Dann ziehst du in Gedanken eine Linie durch jede SPALTE, also von oben nach unten, du hast also im Grunde 8 LEDs parallel an jedem Pin - nur halt invertiert. Jetzt wirst du, wenn du mitgekommen bist, feststellen, dass jeder Pin mit 8 anderen pins verbunden ist. Wenn du jetzt alle 16 pins high sind, leuchtet nix. Wenn du aber einen der unteren auf low ziehst, wird die Spalte drüber leuchten. Wenn du jetzt 7 der linken auf auch noch auf low ziehst, wird nur noch eine LED leuchten. Verstanden? Wenn nicht, mal ichs dir auch auf.

emde
08.09.2007, 17:29
Ok, das habe ich soweit verstanden, nur noch eine frage zu den linien. Sind die vagerechten leds mit den vertikalen leds verbunden?

emde

Lunarman
08.09.2007, 17:38
nuja... nicht direkt. Das heißt, dass zwei vertikale LEDs nen gemeinsamen Massepol haben, aber keinen gemeinsamen Pluspol, da der ja von nem anderen Pin angesteuert wird, der massepol aber vom gleichen. Und auch der gemeinsame Massepol ist nur da, wenn die LEDs im Schaltplan übereinander sind. Wenn sie diagonal sind, haben sie gar keine Verbindung. Das heißt:
Eine Zeile hat einen gemeinsamen Pluspol
Eine Spalte hat nen gemeinsamen Massepol.
Wobei bei vielen gleichzeitig leuchtenden LEDs die maximalen Ströme der Ports zu beachten sind, also kannst du wahrscheinlich nicht eine Zeile gleichzeitig leuchten lassen, da dir dann eventuell irgendwas abraucht. Da musst du dann Transistoren benutzen. Aber das ist wohl das kleinste Problem.
https://www.roboternetz.de/phpBB2/album_pic.php?pic_id=1855
hier mal ne kleine Skizze.

Christopher1
08.09.2007, 17:39
http://www.mikrocontroller.net/articles/LED-Matrix
Da gibts auch einen Schaltplan (mit schieberegistern).
Oder du machst es mit Transen direkt an den µC, kommt drauf an wie viele pins du zur verfügung hast.

emde
08.09.2007, 17:41
danke für die antwort. Ich werde es demnächst einfachmal probieren.

emde

zerush
08.09.2007, 17:42
Du schließt alle Anoden der ersten Spalte an Pin 0 eines Port (z.b. A), die Anoden der zweiten Spalte an Pin 1 usw.
Dann schließt du alle Kathoden der ersten Zeile an Pin 0 eines anderen Ports (z.b. B), alle Kathoden der zweiten Zeile an Pin 1 usw.
Jetzt wählst du mit Port A die aktuelle Spalte aus (auf LOW ziehen, z.b. Spalte 3 = 11111011).
Mit Port B bestimmst du dann den "Wert" dieser Spalte (HIGH für an, LOW für aus).
Jetzt musst du im Prinzip nur noch schnell genug die Spalten durchgehen und immer den Port B anpassen...
Das Flackern sieht man nicht, das geht alles viel zu schnell ;-)

Gock
08.09.2007, 20:45
Aber mit ihrer vollen Intensität leuchten die LEDs dann nicht. Außerdem muss man programmtechnisch berücksichtigen, dass die Pulslänge jedes Pulses gleich lang sein sollte, sonst ergeben sich unterschiedliche Helligkeiten, je nachdem, wie viele LEDs gleichzeitig leuchten. usw...
Gruß

Lunarman
08.09.2007, 22:24
Da kriegste natürlich Zustimmung, im Grunde werden die LEDs auch noch gedimmt, es sollten also von Haus aus helle sein und keine Standartgrünen ^^

Christopher1
08.09.2007, 23:14
Standardgrüne gehen bestimmt auch, kommt halt drauf an wie viele gleichzeitig an sein sollen.

Crazy Harry
09.09.2007, 21:05
wenn du es weniger kompliziert haben willst, häng dir 4 PCA9552 per I²C an deinen mega. die leds sind einzeln steuerbar, dimmbar und man kann sie einfach blinken lassen ;)

Gock
09.09.2007, 21:51
Oder Du hängst 8 8-fach Latches mit Chipselect an die Ausgänge (zB 74F456) des µC, dann kannst Du auch alle unabhängig von einander schalten und brauchst nicht einmal I2C.
Gruß