PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RGB demultiplexing



Holzi86
08.10.2008, 23:58
Guten Abend,

habe vor eine 3x3 RGB-Matrix zu erstellen. Jeweils die Beinchen von Rot Grün und Blau sind Zeilenweise wie im hochgeladenen Bild miteinander verbunden. Spaltenweise sind die Kathoden zusammengeschlossen.
Jetzt würde ich einen ATMega32 ?? nehmen. Insgesamt habe ich dann 3(RGB)+3(Zeilen)+3(Spalten)= 9 Ausgänge. Wenn ich zb Spalte 1 auf Masse lege und RGB der Zeile 1 auf High lege, geht die RGB-LED oben links an. Will ich jedoch ein Lauflicht erstellen ist dies auch noch ok. Ich kann nacheinander schön die LEDS ein und dann wieder ausschalten. Jedoch verstehe ich nicht wenn ich LED1(oben links) einschalte diese mittels PWM ausschalte und LED2(oben mitte) anschalte mit einer PWM, dass ein Übergang entsteht, denn ich kann ja erst softwaremäßig aus der ersten PWM Schleife sofern die LED1 sich ausgedimmt hat also dunkel ist. Danach wird dann die 2. LED heller gemacht und wiederrum gedimmt. Wie klappt das?

MfG

Jens

wkrug
09.10.2008, 01:29
In dem Du deine LED's einzeln im Multiplex Betrieb ansteuerst.
Dabei wird eine LED beim PWM Betrieb auch bei voller Helligkeit nicht für die Ganze Zeit eingeschaltet, sondern nur für den Bruchteil einer Zeitspanne.
Wenn Du dann ein Multiplex Zeitraster anlegst, kannst Du innerhalb einer Ansteuerung für eine LED die Impulslänge verkürzen.
Beispiel bei 100% PWM ist eine LED 1ms an und 9ms aus.
Bei 50%PWM ist die LED 0,5ms an und 9,5ms aus.
Dadurch wird die Helligkeit auf etwa die Hälfte reduziert.
Wenn Du das Verfahren auf alle LED'S anwendest, kannst Du jede einzelne LED unabhängig von den anderen dimmen.

Die LED werden dabei aber sinnvollerweise mit einem höheren Strom, als dem üblichen Dauerstrom angesteuert.
Wie hoch dieser Srom sein darf, sollte sich aus dem Datenblatt der verwendeten LED herauslesen lassen.

pongi
09.10.2008, 09:39
Jedoch verstehe ich nicht wenn ich LED1(oben links) einschalte diese mittels PWM ausschalte und LED2(oben mitte) anschalte mit einer PWM, dass ein Übergang entsteht, denn ich kann ja erst softwaremäßig aus der ersten PWM Schleife sofern die LED1 sich ausgedimmt hat also dunkel ist.

Ja, im Prinzip hast Du ja recht. Da aber das menschliche Auge ein langsames Ding ist (im Vergleich mit den Taktzeiten in einem uC) nimmt es die Veränderung nicht so schnell wahr --> die einzelnen LEDs "verschwimmen" zu einem Bild.
Du siehst ja bei einer Glühbirne auch nicht, dass diese 50mal in der Sekunde ein- und ausschaltet.

Als minimale Geschwindigkeit gilt >20fps (Du musst also die LED-Matrix in einer Sekunde mehr als 20-mal mit dem gewünschten Bild neu beschreiben), damit ein halbwegs stehendes Bild für die Augen entsteht.

Holzi86
09.10.2008, 09:56
ich verstehe.. danke.. sehe aber jetzt noch ein Problem daran dass wenn ich in der 1 Zeile(LED 1, LED 2, LED 3 (obere Reihe) ) verschiedene Farben erreichen will, sehe ich keine Möglichkeit dies zu verwirklichen. Jede Zeile liegt ja ansich an einem gemeinsamen Gelb gemeinsamen Rot und gemeinsam blau an. Dh LED1 kann meiner Meinung nach nicht rot und LED2 im nächsten Schritt nicht blau werden.

pongi
09.10.2008, 12:48
Sicher können sie das. Du hast ja verschieden Portpins für die verschiedenen Farben. Zb Rot PB1, Blau PB2. In Schritt 1 ist PB1 high, in Schritt zwei PB2 high.

Holzi86
09.10.2008, 12:54
Das Problem ist jedoch das die erste Zeile die gleichen Signale trägt und somit die 1.Zeile der 3x3 Matrix RGB LEDs also sprich LED1, LED2, und LED3(obere Zeile) die gleichen Farben tragen!! Oder seh ich das falsch?!

pongi
09.10.2008, 13:00
Wenn LED1 blau leuchten soll, schaltes Du das rosa Kabel LOW, und das blaue HIGH. Dann schaltest Du das ganze aus. Dann schaltest Du LED 2 rot ein, indem du dessen rosa Kabel auf LOW schaltest, und das rote Kabel auf HIGH. Geht doch, oder?

Du musst es nur schnell genug machen, damit das für die Augen gleichzeitg passiert.

Holzi86
13.10.2008, 21:58
ist dies C-Code mäßig schwer zu realisieren? Gibt es viellt. C-Codes mit denen die den Ablauf des Multiplexing ein wenig besser beschreiben? Mein Prof meinte heute ich solle es mit multiplex machen jedoch die ganze PWM Geschichte auf einem extra PLD Baustein machen.. würde es jedoch gerne auf einem ATMega Baustein machen.. da ich bisher noch keine Erfahrung I2C habe!!

pongi
14.10.2008, 14:48
Warum extern? Die Atmegas haben ja Hardware-PWM, das ist ja das geringste Problem.
Such mal im Forum nach Multiplexing, da sollten viele Sachen kommen.

Besserwessi
14.10.2008, 19:27
Für die gemultiplexten LEDs kann mit dem hardware PWM nicht alszuviel anfangen, denn man müßte da das Umschalten mit dem PWM Signal syncronisieren. Das geht, wird aber bei mehr als 2 Kanälen schwierig. Mit Software PWM geht die Helligkeitsregelung schon, allerdings wird man kaum mehr als 8 Bit PWM bei den 9 LEDs hinkriegen, zumindest nicht in C. Für 8 Bit PWM sollte die Geschwindigkeit aber wohl noch reichen.

Holzi86
16.10.2008, 23:27
also für eine LED habe ich die PWM hingekriegt, jedoch wie soll ich das jetzt Software technisch umsetzen.. klar eine Zeile von 9 ansprechen und eine Spalte von drei auswählen.. aber nebenbei noch die PWM laufen lassen für jede RGB? Habe momentan noch ein Brett vorm Kopp..