RGB-LED an WS2801 dimmen

Fragen zu Schaltungen, Elektronik, Elektrik usw.

Moderator: T.Hoffmann

Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 11:48

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
Borax
Star-Admin
Star-Admin
Beiträge: 11993
Registriert: Mo, 10.09.07, 16:28

Di, 10.04.12, 12:11

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.
...noch den Platz für so viel (hochgerechnet auf die Anzahl meiner LEDs) Transitoren.
Um welche LEDs (Anzahl und Type) und welche Versorgungsspannung geht es denn?
Strumboe
Ultra-User
Ultra-User
Beiträge: 622
Registriert: Mi, 25.08.10, 11:19
Wohnort: Quickborn

Di, 10.04.12, 12:19

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ß
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 12:32

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
Auszug.png
Strumboe
Ultra-User
Ultra-User
Beiträge: 622
Registriert: Mi, 25.08.10, 11:19
Wohnort: Quickborn

Di, 10.04.12, 12:38

????
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ß
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 12:44

Wenn das IC selbst den Arbeitsstrom einstellt, wozu benötige ich dann überhaupt die Widerstände. So wie ich das Datenblatt verstanden habe stellen die den maximalen Strom ein, der durch jeden Pfad fließt.
Borax
Star-Admin
Star-Admin
Beiträge: 11993
Registriert: Mo, 10.09.07, 16:28

Di, 10.04.12, 13:02

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:
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.
nur ist es eben unnötig, weil das der Chip ja selbst macht.
Zuletzt geändert von Borax am Di, 10.04.12, 13:03, insgesamt 1-mal geändert.
Strumboe
Ultra-User
Ultra-User
Beiträge: 622
Registriert: Mi, 25.08.10, 11:19
Wohnort: Quickborn

Di, 10.04.12, 13:03

Weil LEDs mit einem Konstantstrom betrieben werden und nicht mit einer Konstantspannung.


Gruß
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 13:07

Aber besteht denn irgendwie die Möglichkeit, die Helligkeit der LEDs zu verringern ohne den Farbton viel zu verändern?
Strumboe
Ultra-User
Ultra-User
Beiträge: 622
Registriert: Mi, 25.08.10, 11:19
Wohnort: Quickborn

Di, 10.04.12, 13:08

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ß
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 13:10

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".
Also war meine gesamte Überlegung von vornherein totaler Schwachsinn?
Borax
Star-Admin
Star-Admin
Beiträge: 11993
Registriert: Mo, 10.09.07, 16:28

Di, 10.04.12, 13:14

In gewisser Hinsicht ja :)
Das Dimmen übernimmt der Chip ja schon selbst. Du musst ihm nur die 'richtigen' Werte seriell 'füttern'. Und ggf. noch eine Leistungsstufe spendieren, wenn es um mehr als eine RGB-LED geht.
Strumboe
Ultra-User
Ultra-User
Beiträge: 622
Registriert: Mi, 25.08.10, 11:19
Wohnort: Quickborn

Di, 10.04.12, 13:16

Nö, du lernst doch. Du machst dir Gedanken. Insofern nicht. :mrgreen: :mrgreen:

Und du fragst! Das ist alles andere als "Schwachsinn".
LEDs funktionieren nun einmal genau entgegengesetzt von den klassischen Glühlampen.

Gruß
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Di, 10.04.12, 13:41

Okay, dann erst einmal vielen Dank für eure Hilfe, ihr habt mir sehr weiter geholfen!
turi
Mega-User
Mega-User
Beiträge: 302
Registriert: Do, 13.11.08, 21:52
Wohnort: 04...
Kontaktdaten:

Di, 10.04.12, 21:38

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).
IMG_1004647.jpg
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Mi, 11.04.12, 19:42

Die Frage die ich mir jetzt stellt: WIe bekomme ich die Daten da reingetaktet, wenn ich keinen Clock habe?
Muss ich zwischen den einzelnen Bits eine gewisse Wartezeit einhalten, damit der WS2811 das selbstständig weitertaktet?
turi
Mega-User
Mega-User
Beiträge: 302
Registriert: Do, 13.11.08, 21:52
Wohnort: 04...
Kontaktdaten:

Mi, 11.04.12, 19:45

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.
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Mi, 11.04.12, 20:11

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)?
turi
Mega-User
Mega-User
Beiträge: 302
Registriert: Do, 13.11.08, 21:52
Wohnort: 04...
Kontaktdaten:

Mi, 11.04.12, 20:29

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?
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.
Falls ja, wird das Ende der Datenübertragung dadurch signalisiert, dass der Data-In-Pin auf Masse bleibt?
Richtig, für mind. 50µs werden keine Daten gesendet.
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)?
[/quote]
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.
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Mi, 11.04.12, 20:45

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.
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.

Geplant ist, dass sich die Farbe der Leds so alle 60s mal ändert.

Nochmals vielen Dank für eure Hilfe :)
Benutzeravatar
Beatbuzzer
Auserwählter
Auserwählter
Beiträge: 3177
Registriert: Fr, 17.08.07, 11:02
Wohnort: Alfeld / Niedersachsen
Kontaktdaten:

Mi, 11.04.12, 20:53

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).
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Do, 12.04.12, 05:49

Ich wollte die Helligkeit der Leds reduzieren ohne dabei den Farbton zu verfälschen.
Benutzeravatar
Achim H
Star-Admin
Star-Admin
Beiträge: 13067
Registriert: Mi, 14.11.07, 02:14
Wohnort: Herdecke (NRW)
Kontaktdaten:

Do, 12.04.12, 06:26

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.

Bild

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).
Terminus
User
User
Beiträge: 19
Registriert: Di, 10.04.12, 11:19

Do, 12.04.12, 10:05

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.
Borax
Star-Admin
Star-Admin
Beiträge: 11993
Registriert: Mo, 10.09.07, 16:28

Do, 12.04.12, 11:15

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.
Geplant ist, dass sich die Farbe der Leds so alle 60s mal ändert.
Ok. Und woher kommt diese Info? Respektive wo ist festgelegt welche Farbe 'angezeigt' werden soll?
Hast Du dafür schon einen µC oder soll das einfach 'irgendwie' erfolgen?
Antworten