Ich habe vor 60rgb leds mit dem atmega8 zu steuern. Dabei sollen zur gleichen Zeit höchstens 5 leds leuchten aber trotzdem jede einzeln ansprechbar sein. Wie könnte man die 60 leds (3 Anschlüsse pro led) an den controller anschließen? Mit Schieberegistern wäre zwar eine Möglichkeit aber geht es nicht effiziente?
Hallo, ohne Matrix geht es wohl nicht, es sind ja sonst 180 Leitungen mit Matrix 8 an 8 und das 3 mal, Aber PWM wird dann wohl unansehlich Sind PWM LED Treiber Chips nicht eine bessere Alternative? TLC5940 ala http://www.freeduino.de/blogs/charlos/64-rgb-led-couchtisch
Danke für die Antworten. Ihr habt mich auf die richtige Spur gebracht: Multiplexing habe ich gesucht http://www.mikrocontroller.net/articles/Multiplexen#TDMA. Für mich ist das alles noch ein wenig kompliziert aber ich verstehe immer mehr.
Worin besteht denn die Anwendung? Eine RGB-LED hat ja mind. drei Kanaele, manche sogar 4 (z.B. blau doppelt). Das heisst ja das Du in Wirklichkeit nicht 60, sondern 180 einzelne LEDs ansteuern willst. Wieviele Du dabei zu einer Zeit einschalten willst spielt eine untergeordnete Rolle und wirkt sich bestenfalls auf den Gesamtstrombedarf aus, nicht jedoch auf die Schaltung. Dann wirst Dir ueberlegen muessen in wie vielen Zeilen und Spalten Du das organisieren willst, also z.B. 13*15(=195) bei einer annaehernd quadratischen Matrix, wobei da ein paar Stellen ungenutzt bleiben, bei 180 geht es halt nicht auf. Also 13 Zeilen mal 15 Spalten, 15 deshalb dass es auch durch 3 Teilbar ist. Du haettest also demnach 15/3=5 LEDs in jeder Deiner 13 Spalten. Du musst dann den Strom bestimmen und dafuer sogrgen, dass jeder Spaltentreiber genau auf die Vorwaertsspannung des jeweiligen Farbkanals passt, also passende Widerstaende und zwar unter Beruecksichtigung von Impulsstroemen, die ja wahlweise um einiges hoeher sein koennen als ein DC-Level. Dann musst Dir weiter ueberlegen mit welcher Zeilenfrequenz Du die Sache ansteuern willst, sinnvollerweise sind etwa 100-120Hz, dass man kein Flimmern mehr wahrnehmen kann und auch das anspruchsvolle Auge oder die Kamera damit befriedigen kann ;) Das heisst aber Zeilenfrequenz, denn wir wollen fuer die einzelne Zeile diese Frequenz erreichen. Wir muessen die Matrix also tatsaechlich mit 13*120 = 1560Hz ansteuern, was noch im Rahmen des machbaren liegt, zumindest bei den Frequenzen, Transistoren usw... aber auch bei Deinen LEDs? Du schaltest also mit einer Frequenz von 1560Hz, was t~0.65ms bedeutet. Und da seh ich ein kleines Problem, denn das ist nicht einmal eine Millisekunde, da wirst Du einen sehr hohen Pulsstrom brauchen, dass Deine Matrix spaeter hell genug ist. Da musst Du schauen wieviel und wie lange Deine LEDs den Pulsstrom verkraften, wodurch sich bei solchen Matritzen auch immer die Grenzen ergeben. Ein Ausweg ist die Zeilen breiter zu machen und somit weniger davon zu bekommen, was die Frequenz erniedrigen wird. Wenn Du Deine Matrix noch in Helligkeit ansteuern willst wirst Du noch hoeher takten muessen und ggf. das Tastverhaeltnis dadurch nochmal beeinflussen koennen. Bleiben wir nochmal bei den 13*15 Spalten so brauchst Du ohne Schieberegister also 13+15 = 28 Pins, was Dein Atmega8 nicht hat. Du kannst Schieberegister verwenden, was Dir aber die ANsteuerung nochmals verkomplizieren wird. Ich lese heraus dass Du noch nicht so viel Erfahrung hast deswegen rate ich Dir hier einen Controller mit genuegend Pins zu nehmen und die Ansteuerung direkt zu machen. Schau Dir mal den Schaltplan an, wie man so ne Matrix prinzipiell ansteuern kann, auch wie die Transistoren verwendet sind. Wie man sieht is so ne LED-Matrix trickreicher als man im ersten Moment vermuten mag, da gehoeren paar Ueberlegungen zu. Gruss, Michael
Scheisse... :P Ich hab ja eins gar nicht beruecksichtigt. Was ich oben beschrieben habe funktioniert ja nur fuer normale LEDs. Bei einer RGB-LED wenn Du alle Farben mischen willst musst Du ja das Helligkeitsverhaeltnis der Kanaele untereinander beeinflussen koennen, d.h. jeden Kanal fuer sich per PWM pulsen... Das prinzip ist zwar das selbe aber Du kannst bei den Spaltentreibern dann nicht mehr einfach nur "an" oder "aus" sagen denn das wuerde Dir ja nur die Grundfarben mischen, nix stufenlos wie man das bei ner RGB-LED moechte. Das heisst jeder Kanal muesste also die passende PWM-Frequenz haben, sobald die Zeile ausgewaehlt ist. Damit wird das erheblich komplizierter... Ich glaube Falk hatte sowas mal mit nem FPGA gemacht? An der Stelle hoert sich das auch eher danach an als ob es was fuer nen FPGA (oder auch CPLD) waere, weil man sehr viele PWM-Kanaele braucht und ob man das auf nem AVR sinnvoll mit Software loesen kann? Greets, Michael
es gibt doch LED Treiber. Ich dachte die können die Matrix ansteuern und auch dimmen. Irre ich mich?
Ach ja... Dir ist Dein Anliegen nicht ernst, oder? Naja der ein oder andere liest den Text vielleicht doch noch, dann war es nicht ganz umsonst.
Natürlich ist mir das ernst. Ich will das Rad halt nicht neu erfinden und daher meine Frage ob das Alles nötig ist oder ob ich einfach einen Treiber wie den TLC5940 benutzen kann. Deine Erklärung finde ich übrigens toll weil ich trotzdem wissen will wie der Chip arbeitet (wenn er es macht).
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.