Hallo, ich bin auf der Suche nach Möglichkeiten, eine 10x10 RGB-Matrix anzusteuern. Bei einfarbigen LEDs wäre es kein Problem. Hier eignet sich eine Matrix-Anordnung. Um LEDs in beliebigen Kombinationen gleichzeitig zum Leuchten zu bringen schaltet man schnell zwischen verschiedenen Kombinationen hin und her, sodass ein für das Auge konstantes Bild herauskommt. Aber wie sieht es bei RGB-LEDs aus, bei der ich für jede 3 PMWs brauche. Jede LED soll in einer unterschiedlichen Farbe leuchten können. Da ist mir eine Matrix-Anordnung schwer vorstellbar, bzw. ich wüsste nicht wie man es realisieren kann. Steuert man jede LED separat an, so benötigt man 300 PWMs. Was ist die beste Art 300 PWMs zu erzeugen? Mit vielen TLC5940? Was gibt es noch? Wenn ich kein absolut kontinuierliches Farbspektrum möchte, könnte ich für Rot, Grün und Blau mit z.B. 10 PWM-Signalen (von dauerhaft 0 bis dauerhaft 1) schon 1000 unterschiedliche Farbtöne darstellen. Dann würde ich sozusagen 10 PWMs dauerhaft laufen lassen und über eine Beschaltungslogik die R,G und B der LEDs ansteuern, die gerade eins der 10 PWMs brauchen. Wäre so eine Logik (bestehend aus Transistoren und weiß ich was) möglich? Vielleicht habt ihr ja Ideen und Anregungen. Danke und Gruß
:
Bearbeitet durch User
Es kommt auf deine Anforderungen an. Du machst normales Multiplexing, wie bei einfarbeigen LEDs, nur dass du jetzt 30 LEDs pro Zeile hast. (10 LEDs mit je 3 Farben) Nun kannst du eine Software-PWM implementieren. Mit welcher Bit-Tiefe ist natürlich von der Leistung des Controllers abhängig. Mit einer 4-Bit PWM, also 15 Helligkeitsstufen, und 10 Ebenen bei 50Hz Wiederholrate müsstest du das ganze mit mindestens 9kHz ansteuern. Bei 3-Bit PWM sind es nur noch 3,5kHz. Die TLC5940 oder ähnliche PWM-Treiber kannst du natürlich auch im Multiplex benutzen. Du brauchst also nur 2, um eine eine Zeile anzusteuern, und machst den Rest per Multiplex.
Marcel schrieb: > Mit einer 4-Bit > PWM, also 15 Helligkeitsstufen, und 10 Ebenen bei 50Hz Wiederholrate > müsstest du das ganze mit mindestens 9kHz ansteuern. Bei 3-Bit PWM sind > es nur noch 3,5kHz. Wie kommst du genau auf 9kHz und 3,5kHz? Mir ist noch nicht ganz klar wie es funktionieren soll. Angenommen, die erste LED (Zeile1, Spalte 1) soll mit maximaler Helligkeit rot leuchten und die LED in Zeile1, Spalte10 soll ebenfalls mit maximaler Helligkeit rot leuchten. Dann müsste ja an beiden LEDs dauerhaft eine 1 anliegen. Für 10x10 RGB LEDs bräuchte ich doch dann 30 Ports, oder? Oder mit nem Schieberegister umschalten? Was mit (gedanklich) fehlt, ist der Zusammenhang zwischen den berechneten 9kHz und deren "Aufteilung" auf die 30 LEDs. Ich versuche mir gerade vorzustellen was konkret ich machen müsste, damit an einer bestimmten LED ein gewünschtes PWM-Signal ankommt.
Marcel schrieb: > Die TLC5940 oder ähnliche PWM-Treiber kannst du natürlich auch im > Multiplex benutzen. Du brauchst also nur 2, um eine eine Zeile > anzusteuern, und machst den Rest per Multiplex. Nochmal angenommen, ich möchte, dass die erste LED (Zeile 1, Spalte 1) mit maximaler Helligkeit rot leuchtet und alle roten LEDs in den unteren Zeilen aus sind. Dann müsste ja an LED 1 dauerhaft eine 1 anliegen (Spannung an). Ich nehme mal an, ich erzeuge ein PWM-Signal an Spalte 1 mit nem TLC5940, das konstant 1 ist für die Zeit, in der Zeile 1 aktiv beim Multiplexing ist. Dann wird das PWM-Signal 0 für alle Zeilen 2 bis 10. Anschließend wieder 1 wenn Zeile 1 aktiv ist. Dann leuchtet für das menschliche Auge die erste LED rot und die darunterliegenden sind aus. Aber die 1. LED leuchtet doch dann nicht mit maximaler Rot-Intensität, da sie doch nur in 1/10 der Zeit aktiviert wird, oder? Kann ich dann überhaupt mein Multiplexing alle LEDs mit maximalter roter Leuchtkraft leuchten lassen? Wenn ich das möchte, dann muss ich doch jede LED einzeln ansteuern, oder? Und das wäre bei 10x10 RGB LED 300 Ports, oder?
:
Bearbeitet durch User
Wenn die LEDs tatsächlich durchgehend leuchten sollen, dann muss auch jede LED einzeln angesteuert werden. Also Multiplexen ist dann nicht mehr. Wenn man jetzt multiplexen will, aber trotzdem die "volle" Leuchtkraft haben möchte, dann kann man als Workaround den Strom durch die LED erhöhen.
Hallo Ich habe vor kurzem was ähnliches gemacht mit TLC5916 und einem AVR, mehr Helligkeit als das brauchst du nicht (5V 2A Netzteil geht in die Knie, mit Lupe vor matrix kann man an eine 3m entfernte wand ein 1.5m grosses Abbild projizieren...) Hier habe ich was dazu geschrieben: Beitrag "Re: 16x10_RGB-Matrix"
innerand innerand schrieb: > Wenn man jetzt multiplexen will, aber trotzdem die "volle" Leuchtkraft > haben möchte, dann kann man als Workaround den Strom durch die LED > erhöhen. Im Datenblatt einer LED finde ich für if=20mA. Bei den "Absolut Maximum Ratings" steht für "Peak forward Current (tau<10ms) 150mA". Ist dann die 150mA die erhöhte Stromstärke oder gibt es noch eine Art Faustregel, dass man sie nochmals um (z.B.) 10% erhöhen kann? Angenommen ich möchte die die LED mit z.B. 4Bit PWM betreiben (also 15 Helligkeitsstufen). Dann ist beim Multiplexing eine Zeile immer 16 Takte aktiv und dann wird auf die nächste Zeile umgeschaltet, oder?
Nein, über die 150mA sollte man nicht gehen, deshalb auch Absolute Maximum... Eher weniger. Ich habe nur ca. 60mA Pulsstrom bei Multiplex 1:8. Und das ist alles andere als angenehm zum reinschauen (sehr, sehr hell und auch bei vollem Sonnenlicht noch gut sichtbar.) Ich habe übrigens 8 Bit bei <50% CPU Last, benutze aber BAM. Nach Korrektur bleiben dann 5 Bit übrig, das sind ja aber immernoch 32k Farben.
highii H. schrieb: > Wie kommst du genau auf 9kHz und 3,5kHz? Du hast eine Bildwiederholfrequenz f (sollte 50Hz+ sein, damit es nicht flimmert), eine n-Bit tiefe Software PWM und x Ebenen. Damit muss dein Timer, welcher die einzelnen Reihen nacheinander ausgibt, mit f * (2^n - 1) * x laufen. Sind bei 50Hz, 4-Bit PWM und 10 Ebenen 7500Hz. Du musst also alle 1/7500 Sekunden die Reihe wechseln und die einzelnen LEDs entsprechend der PWM an- bzw ausschalten. Angenommen du brauchst 500 CPU-Zyklen für die PWM und die Ausgabe, dann gehen 3.750.000 Zyklen pro Sekunde dafür drauf. Wenn dein Controller mit 20MHz läuft sind das knapp 19% Auslastung. Da hast du also noch Luft nach oben. Das ganze sollte aber auch im Software-PWM Artikel auf der Seite stehen. Volle Helligkeit mit 20mA auf den LEDs finde ich persönlich überbewertet. Weniger tuts auch. Aber wenn du das Maximum rausholen willst, ohne die LEDs zu sehr zu strapazieren, würde ich das ganze in 2 10x5 Matrizen aufteilen und jede mit 100mA Pulsstrom betreiben. Damit kommst du auf 100mA/5LEDs = 20mA/LED.
Was den Verdrahtungsaufwand und generell Hardwareaufwand massiv reduzieren würde, wäre wenn du einfach WS2812 LEDs einsetzen würdest. Da ist der Controller direkt drauf für die PWM und du brauchst nur seriell die gewünschten Farbwerte reinzuschieben. Die LEDs gibts recht günstig, ggfs. auch in einem LED Stripe, falls das für deine Anwendung geht. Schau einfach mal bei Ebay. LG Jan
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.