RGB-LED an WS2801 dimmen
Moderator: T.Hoffmann
Hallo!
Ich hätte da mal eine Frage zum Thema dimmen von RGB-Leds.
Da dimmen über die Spannung aufgrund der Nichtlinearität und der unterschiedlichen Durchlassspannungen nicht möglich ist, bleibt nur das Dimmen über eine Regelung des Stromes.
Für meine Schaltung würde ich ganz gerne einen WS2801(http://www.sparkfun.com/datasheets/Comp ... WS2801.pdf) verwenden, da ich den noch rumliegen habe.
Meiner Theorie nach habe ich jetzt 2 Möglichkeiten, um den Strom zu dimmen.
1) Der Farbcode für die LED wird ja per seriellem Datenstrom in das IC getaktet. Wäre es möglich darüber die LED auszuschalten (0x00) und wieder einzuschalten (0x01-0xFF). Bei hinreichender Geschwindigkeit müsste sich die LED doch dimmen lassen, ohne den Farbton zu verfälschen.
2) Die LED wird im "Constant Driving Current Mode" (Datenblatt Seite 8 ) mit dem einzigen Unterschied, dass in Reihe mit dem Widerstand RXFB ein N-FET kommt (RXFB-NFET-GND). Mittels PWM könnte ich den FET dann in den ohmschen Bereich bringen und somit den Gesamtstrom der LED verringern.
Bei Theorie 1 sehe ich das Problem, dass bei ungenauem Timing die LED anfangen könnte zu flackern bzw. keine konstante Intensität hat.
Ich habe im Internet ein Projekt gefunden, bei dem über 3 BJTs eine RGB-Led gedimmt wird. Für mich stellt das allerdings keine Alternative da, denn ich habe weder ausreichend PWM-Kanäle noch den Platz für so viel (hochgerechnet auf die Anzahl meiner LEDs) Transitoren.
MfG
Christian
Ich hätte da mal eine Frage zum Thema dimmen von RGB-Leds.
Da dimmen über die Spannung aufgrund der Nichtlinearität und der unterschiedlichen Durchlassspannungen nicht möglich ist, bleibt nur das Dimmen über eine Regelung des Stromes.
Für meine Schaltung würde ich ganz gerne einen WS2801(http://www.sparkfun.com/datasheets/Comp ... WS2801.pdf) verwenden, da ich den noch rumliegen habe.
Meiner Theorie nach habe ich jetzt 2 Möglichkeiten, um den Strom zu dimmen.
1) Der Farbcode für die LED wird ja per seriellem Datenstrom in das IC getaktet. Wäre es möglich darüber die LED auszuschalten (0x00) und wieder einzuschalten (0x01-0xFF). Bei hinreichender Geschwindigkeit müsste sich die LED doch dimmen lassen, ohne den Farbton zu verfälschen.
2) Die LED wird im "Constant Driving Current Mode" (Datenblatt Seite 8 ) mit dem einzigen Unterschied, dass in Reihe mit dem Widerstand RXFB ein N-FET kommt (RXFB-NFET-GND). Mittels PWM könnte ich den FET dann in den ohmschen Bereich bringen und somit den Gesamtstrom der LED verringern.
Bei Theorie 1 sehe ich das Problem, dass bei ungenauem Timing die LED anfangen könnte zu flackern bzw. keine konstante Intensität hat.
Ich habe im Internet ein Projekt gefunden, bei dem über 3 BJTs eine RGB-Led gedimmt wird. Für mich stellt das allerdings keine Alternative da, denn ich habe weder ausreichend PWM-Kanäle noch den Platz für so viel (hochgerechnet auf die Anzahl meiner LEDs) Transitoren.
MfG
Christian
Hallo Christian,
welcome on board!
Ich verstehe Deine Frage nicht ganz... Der WS2801 'übersetzt' doch einen seriellen Input schon in die nötige PWM (256 Stufen). Da müssen doch nur noch die drei 8Bit Werte für R,G und B seriell in den Chip geschrieben werden. Die PWM macht der ja selbst. Dabei kann entweder der Constant Current Output verwendet werden (max. 30mA) oder der Constant Voltage Output der sich insbesondere für eine Verstärkung (mit Leistungstransistor oder Mosfet) eignet.
welcome on board!
Ich verstehe Deine Frage nicht ganz... Der WS2801 'übersetzt' doch einen seriellen Input schon in die nötige PWM (256 Stufen). Da müssen doch nur noch die drei 8Bit Werte für R,G und B seriell in den Chip geschrieben werden. Die PWM macht der ja selbst. Dabei kann entweder der Constant Current Output verwendet werden (max. 30mA) oder der Constant Voltage Output der sich insbesondere für eine Verstärkung (mit Leistungstransistor oder Mosfet) eignet.
Um welche LEDs (Anzahl und Type) und welche Versorgungsspannung geht es denn?...noch den Platz für so viel (hochgerechnet auf die Anzahl meiner LEDs) Transitoren.
Hallo Terminus,
und willkommen hier im Forum.
Du liegst zum einen Richtig, LEDs sind "Stromgesteuert". Und zum anderen falsch. Beim Dimmen arbeitest du - auch mit dem WS2801 - mit PWM (PulsWeitenModulation). Hier wird über ein Tastverhältnis die entsprechende LED Ein- und Ausgeschaltet.
Der WS2801 hat dafür ein serielles Interface. Er verarbeitet, wie schon von Borax erwähnt 30mA pro Kanal bei einer Betriebsspannung von 6V. Du kannst hier demzufolge "nur" eine LED pro Kanal anschließen. Oder du baust um diesen Baustein noch eine entsprechende - dreifache - Leistungsstufe auf, die in der Lage ist, die von dir vorgesehenen LEDs zu treiben. Du beteibst in diesem Fall dann den WS2801 schwebend.
Was hast du denn vor??
Gruß
und willkommen hier im Forum.
Du liegst zum einen Richtig, LEDs sind "Stromgesteuert". Und zum anderen falsch. Beim Dimmen arbeitest du - auch mit dem WS2801 - mit PWM (PulsWeitenModulation). Hier wird über ein Tastverhältnis die entsprechende LED Ein- und Ausgeschaltet.
Der WS2801 hat dafür ein serielles Interface. Er verarbeitet, wie schon von Borax erwähnt 30mA pro Kanal bei einer Betriebsspannung von 6V. Du kannst hier demzufolge "nur" eine LED pro Kanal anschließen. Oder du baust um diesen Baustein noch eine entsprechende - dreifache - Leistungsstufe auf, die in der Lage ist, die von dir vorgesehenen LEDs zu treiben. Du beteibst in diesem Fall dann den WS2801 schwebend.
Was hast du denn vor??
Gruß
Ich muss gerade noch mal mein Verständnis von dem IC überdenken.
Es ist doch so, dass das IC je nach reingetaktetem Farbcode den LED-Strom regelt. Entsprechend von 0mA bis max. 30mA oder wie von mir eingestellt 20mA.
Wenn ich da also eine RGB-Farbcode reintakte, dann wird das IC seinen Möglichkeiten entsprechend diesen Farbton einstellen. Die LED wird für diesen Farbton also immer mit maximaler Intensität leuchten.
Wenn ich jetzt einen "niedrigeren" Farbcode verwende um die Helligkeit der LED zu verringern, dann verfälsche ich ja die eigentlich gewünschte Farbe.
Ich möchte eine Statusanzeige bauen, die bei mir später an die Wand soll. Damit ich nachts nicht geblendet werde wollte ich die Helligkeit der LEDs reduzieren und zwar möglichst so, dass die Farbe erhalten bleibt.
Insgesamt habe ich 28 RGB-Leds, wobei maximal 6 davon gleichzeitig leuchten. Jede der 6 LEDs hat dabei dann ihren eigenen WS2801.
Ich habe mal einen Auszug aus dem Schaltplan angehängt, so wie die RGB-Leds zur Zeit angesteuert werden.
Vielen dank erstmal für eure Hilfe!
Gruß
Christian
Es ist doch so, dass das IC je nach reingetaktetem Farbcode den LED-Strom regelt. Entsprechend von 0mA bis max. 30mA oder wie von mir eingestellt 20mA.
Wenn ich da also eine RGB-Farbcode reintakte, dann wird das IC seinen Möglichkeiten entsprechend diesen Farbton einstellen. Die LED wird für diesen Farbton also immer mit maximaler Intensität leuchten.
Wenn ich jetzt einen "niedrigeren" Farbcode verwende um die Helligkeit der LED zu verringern, dann verfälsche ich ja die eigentlich gewünschte Farbe.
Ich möchte eine Statusanzeige bauen, die bei mir später an die Wand soll. Damit ich nachts nicht geblendet werde wollte ich die Helligkeit der LEDs reduzieren und zwar möglichst so, dass die Farbe erhalten bleibt.
Insgesamt habe ich 28 RGB-Leds, wobei maximal 6 davon gleichzeitig leuchten. Jede der 6 LEDs hat dabei dann ihren eigenen WS2801.
Ich habe mal einen Auszug aus dem Schaltplan angehängt, so wie die RGB-Leds zur Zeit angesteuert werden.
Vielen dank erstmal für eure Hilfe!
Gruß
Christian
????
Wie soll denn der WS2801 die Widerstände ändern? Der WS2801 bekommt über einen µC per I2C Interface mitgeteilt, welches PWM-Verhältnis für die einzelnen LEDs - respektive rot, blau und grün - an sein sollen. So kommt die Farbmischung zustande bis hin zum ganz aus der einzelnen LED wenn du nur rein rot, blau oder grün haben willst oder alle ganz aus sein sollen.
Dieser Baustein ist in DMX-Controllern häufig zu finden und hier das universal "Arbeitspferd".
So zumindest mein Kenntnisstand.
GRuß
Wie soll denn der WS2801 die Widerstände ändern? Der WS2801 bekommt über einen µC per I2C Interface mitgeteilt, welches PWM-Verhältnis für die einzelnen LEDs - respektive rot, blau und grün - an sein sollen. So kommt die Farbmischung zustande bis hin zum ganz aus der einzelnen LED wenn du nur rein rot, blau oder grün haben willst oder alle ganz aus sein sollen.
Dieser Baustein ist in DMX-Controllern häufig zu finden und hier das universal "Arbeitspferd".
So zumindest mein Kenntnisstand.
GRuß
Ja, den Strom schon. Dadurch lassen sich 15mA LEDs sowie auch 30mA LEDs damit treiben. Aber das hat nur bedingt was mit der 'Helligkeit' zu tun. Die wird über die PWM (die der Chip selbst erzeugt) bestimmt.
So kann man einen Strom von z.B. 20mA vorgeben, der dann je nach dem 'rein getakteten' PWM Wert eben 0 bis 100% der Pulsbreite (also Zeit!) an ist. Im Prinzip genau das was Du oben vorhattest:
So kann man einen Strom von z.B. 20mA vorgeben, der dann je nach dem 'rein getakteten' PWM Wert eben 0 bis 100% der Pulsbreite (also Zeit!) an ist. Im Prinzip genau das was Du oben vorhattest:
nur ist es eben unnötig, weil das der Chip ja selbst macht.Wäre es möglich darüber die LED auszuschalten (0x00) und wieder einzuschalten (0x01-0xFF). Bei hinreichender Geschwindigkeit müsste sich die LED doch dimmen lassen, ohne den Farbton zu verfälschen.
Zuletzt geändert von Borax am Di, 10.04.12, 13:03, insgesamt 1-mal geändert.
Geanu DAS geschieht mit der PWM-Steuerung. Da immer der selbe Strom durch die LED fließt, ändert sich seine "Farbe" nicht. Das Auge ist nur zu träge um dieses zu erkennen und empfindet dies als "dimmen".
Gruß
Gruß
Also war meine gesamte Überlegung von vornherein totaler Schwachsinn?Strumboe hat geschrieben:Geanu DAS geschieht mit der PWM-Steuerung. Da immer der selbe Strom durch die LED fließt, ändert sich seine "Farbe" nicht. Das Auge ist nur zu träge um dieses zu erkennen und empfindet dies als "dimmen".
Vielleicht hier noch eine Ergänzung: man kann auch mehr als eine LED an den WS2801 anschließen. Im Datenblatt ist dazu die ergänzende Schaltung mit Transistor-Erweiterung dargestellt. Es gibt ein Projekt mit fertigen Pixeln (in einem anderen Forum), was genau das mit 3 oder 6 LEDs realisiert hat.
Übrigens, wenn man sowas beim Chinesen kauft, werden die Transistoren gern weggelassen und es scheint trotzdem zu funktionieren. Ich habe das selbst auch schon getestet. Ist eben nur die Frage, wie lange. Alternativ zum WS2801 sollte man sich mal den WS2811 ansehen (kleiner, braucht kein Clock, KSQ mit 18,5mA integriert).
Übrigens, wenn man sowas beim Chinesen kauft, werden die Transistoren gern weggelassen und es scheint trotzdem zu funktionieren. Ich habe das selbst auch schon getestet. Ist eben nur die Frage, wie lange. Alternativ zum WS2801 sollte man sich mal den WS2811 ansehen (kleiner, braucht kein Clock, KSQ mit 18,5mA integriert).
Die Daten werden wie beim WS2801 hinein geschoben (Prinzip Schieberegister). Dann macht man eine bestimmte Zeit lang eine Pause. Damit weiß der Chip, dass die Daten komplett sind und übernimmt sie. Das ist recht einfach. Das Timing muss natürlich stimmen. Es ist etwas kritischer als beim TM1803, der quasi Pin-kompatibel ist.
Ich habe gerade im Datenblatt gelesen, dass eine 0 bzw. 1 durch ein unterschiedliches Verhältnis von Ton zu Toff übermittelt wird. Ist die gesamte Periodendauer dabei egal?
Falls ja, wird das Ende der Datenübertragung dadurch signalisiert, dass der Data-In-Pin auf Masse bleibt?
Und was passiert, wenn vor dem Ende der Übertragung, also bevor das 8. Bit gesendet wurde, der DIN-Pin auf Masse geht. Werden dann die fehlenden Bits durch 0en ersetzt (D0...Dx)?
Falls ja, wird das Ende der Datenübertragung dadurch signalisiert, dass der Data-In-Pin auf Masse bleibt?
Und was passiert, wenn vor dem Ende der Übertragung, also bevor das 8. Bit gesendet wurde, der DIN-Pin auf Masse geht. Werden dann die fehlenden Bits durch 0en ersetzt (D0...Dx)?
Die Periodendauer nicht (das Timing ist im Datenblatt zu sehen), denn wenn es zu lange dauert, werden die Daten ja "gelatcht". Aber die Frequenz der Übertragung ist variabel. Solange keine neuen Daten kommen, werden die alten angezeigt. Das kann man gut beobachten, wenn man den Controller entfernt, aber die Stripes noch unter Spannung stehen.Terminus hat geschrieben:Ich habe gerade im Datenblatt gelesen, dass eine 0 bzw. 1 durch ein unterschiedliches Verhältnis von Ton zu Toff übermittelt wird. Ist die gesamte Periodendauer dabei egal?
Richtig, für mind. 50µs werden keine Daten gesendet.Falls ja, wird das Ende der Datenübertragung dadurch signalisiert, dass der Data-In-Pin auf Masse bleibt?
[/quote]Und was passiert, wenn vor dem Ende der Übertragung, also bevor das 8. Bit gesendet wurde, der DIN-Pin auf Masse geht. Werden dann die fehlenden Bits durch 0en ersetzt (D0...Dx)?
Dann sind noch nicht alle Datenbits an der richtigen Stelle und es werden dann fehlerhafte Werte übergeben. Alles eben um x Bits versetzt, was zu anderen Farben führt. Wenn das zwischendurch passiert, wird es sicher ein wenig flackern, je nach dem, wie oft es passiert.
Ah, da. Ich habe es im Datenblatt gefunden. Ich muss also eine Frequenz von 400kHz +-10% realisieren, also eine Periodendauer von 2,5us pro Bit einhalten.turi hat geschrieben:Die Periodendauer nicht (das Timing ist im Datenblatt zu sehen), denn wenn es zu lange dauert, werden die Daten ja "gelatcht". Aber die Frequenz der Übertragung ist variabel. Solange keine neuen Daten kommen, werden die alten angezeigt. Das kann man gut beobachten, wenn man den Controller entfernt, aber die Stripes noch unter Spannung stehen.
Geplant ist, dass sich die Farbe der Leds so alle 60s mal ändert.
Nochmals vielen Dank für eure Hilfe
- Beatbuzzer
- Auserwählter
- Beiträge: 3177
- Registriert: Fr, 17.08.07, 11:02
- Wohnort: Alfeld / Niedersachsen
- Kontaktdaten:
Ich hab etwas das Gefühl, bei der Farbveränderung oben wurde aneinander vorbei geredet.
Deshalb will ich da nochmal kurz nachhaken:
Einmal kann sich der Farbton von LEDs mit der Stromstärke ändern. Also mal als krasses Beispiel bei 10mA ist sie noch hellrot und bei 30mA dann dunkelrot.
Zum anderen kann es hier bei RGB-LEDs passieren, dass sich durch das Dimmen die Helligkeit der drei Grundfarben nicht gleichmäßig ändert, und sich deshalb die Mischfarbe verschiebt.
Was von beiden war jetzt deine Sorge?
Noch ein kleines PS zum Bus: USB und RS232 z.B. arbeiten auch ohne Clock-Leitung. Es muss nur dafür gesorgt werden, dass beide Seiten "gleich schnell denken" (Quarz-Takt).
Deshalb will ich da nochmal kurz nachhaken:
Einmal kann sich der Farbton von LEDs mit der Stromstärke ändern. Also mal als krasses Beispiel bei 10mA ist sie noch hellrot und bei 30mA dann dunkelrot.
Zum anderen kann es hier bei RGB-LEDs passieren, dass sich durch das Dimmen die Helligkeit der drei Grundfarben nicht gleichmäßig ändert, und sich deshalb die Mischfarbe verschiebt.
Was von beiden war jetzt deine Sorge?
Noch ein kleines PS zum Bus: USB und RS232 z.B. arbeiten auch ohne Clock-Leitung. Es muss nur dafür gesorgt werden, dass beide Seiten "gleich schnell denken" (Quarz-Takt).
- Achim H
- Star-Admin
- Beiträge: 13067
- Registriert: Mi, 14.11.07, 02:14
- Wohnort: Herdecke (NRW)
- Kontaktdaten:
Und genau das geht nicht, wenn man die Led unterschiedlich hoch bestromt. Mit der Höhe der Bestromung erfährt jede Led eine Farbverschiebung in x- und y-Richtung. Wie ausgeprägt diese ist, ist bei jeder Led bzw. Farbe unterschiedlich. Schau Dir zum Beispiel mal das Datenblatt der NSSL157 auf Seite 13 an.
Um keine Farbverschiebung zu erhalten, darf die Led nicht über die Höhe des Strom, sondern nur per Pulsweitenmodulation gedimmt werden. Bei PWM wird die Led ein- und ausgeschaltet. Das Verhältnis aus An- zur Auszeit bestimmt dabei die Helligkeit.
Das Problem bei RGB ist, dass die Spannung zu jeder Farbe einer Led ein- und wieder ausgeschaltet werden muss. Wie sich das bei einem WS2801 realisieren lässt, entzieht sich meiner Kenntnis (auch Verständnis).
Um keine Farbverschiebung zu erhalten, darf die Led nicht über die Höhe des Strom, sondern nur per Pulsweitenmodulation gedimmt werden. Bei PWM wird die Led ein- und ausgeschaltet. Das Verhältnis aus An- zur Auszeit bestimmt dabei die Helligkeit.
Das Problem bei RGB ist, dass die Spannung zu jeder Farbe einer Led ein- und wieder ausgeschaltet werden muss. Wie sich das bei einem WS2801 realisieren lässt, entzieht sich meiner Kenntnis (auch Verständnis).
Gibt es denn überhaupt ein Treiber-IC, mit dem ich sowohl Farbe als auch Helligkeit einstellen kann?
Ich habe nebenbei während ich diesen Post geschrieben habe den "TLC5971" von TI gefunden.
Wäre der für meine Anforderungen denn geeignet?
Laut dem (typischen) Lobgesang auf Seite 1 kann ich mit ihm zusätzlich die Helligkeit einstellen, was im Prinzip genau das ist, was ich möchte.
Ich habe nebenbei während ich diesen Post geschrieben habe den "TLC5971" von TI gefunden.
Wäre der für meine Anforderungen denn geeignet?
Laut dem (typischen) Lobgesang auf Seite 1 kann ich mit ihm zusätzlich die Helligkeit einstellen, was im Prinzip genau das ist, was ich möchte.
Wir sollten vielleicht erst mal klären, wie die Steuerung überhaupt erfolgen soll. Diese Treiber werden normalerweise von einem µC angesteuert. Dieser gibt die Farbe und die Helligkeit vor (was hier eigentlich ein und dasselbe ist).
Der µC kann entweder ein 'fertiges' PWM Signal pro Farbe ausgeben (mind. drei interne PWM Kanäle und drei Pins erforderlich) was direkt an eine Endstufe gegeben werden kann oder eben eine Bitfolge die von einem PWM Chip wie dem WS2801 weiter verarbeitet wird.
Hast Du dafür schon einen µC oder soll das einfach 'irgendwie' erfolgen?
Der µC kann entweder ein 'fertiges' PWM Signal pro Farbe ausgeben (mind. drei interne PWM Kanäle und drei Pins erforderlich) was direkt an eine Endstufe gegeben werden kann oder eben eine Bitfolge die von einem PWM Chip wie dem WS2801 weiter verarbeitet wird.
Ok. Und woher kommt diese Info? Respektive wo ist festgelegt welche Farbe 'angezeigt' werden soll?Geplant ist, dass sich die Farbe der Leds so alle 60s mal ändert.
Hast Du dafür schon einen µC oder soll das einfach 'irgendwie' erfolgen?