Forum: Mikrocontroller und Digitale Elektronik 60rgb leds an atmega8


von sebastian w (Gast)


Lesenswert?

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?

von vielleicht (Gast)


Lesenswert?

vielleicht kann dir eine Led matrix helfen.

von Horst H. (horha)


Lesenswert?

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

von sebastian w (Gast)


Lesenswert?

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.

von Michael G. (linuxgeek) Benutzerseite


Angehängte Dateien:

Lesenswert?

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

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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

von sebastian w (Gast)


Lesenswert?

es gibt doch LED Treiber. Ich dachte die können die Matrix ansteuern und 
auch dimmen. Irre ich mich?

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

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.

von sebastian w (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.