60rgb leds an atmega8

Gast #1943660
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?
Persönliche Seite #1951561
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
Angehängte Dateien:
Persönliche Seite #1951562
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
Gast #1951988
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).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren