Ich suche für ein Modellbahnprojekt einen Treiber für 0402 LEDs. Aktuell verwende ich den ws2814f. An jedem Kanal des WRGB Treibers hängt eine zu steuernde LED. Der kommt aber vorallem beim faden der Glühbirnensimulation mit seiner 256 Kanal PWM an seine Grenzen. Die Stufen sind vorallem beim auf oder nachglimmen eindeutig erkennbar. Das ist so nicht akzeptabel. Je Platine sind maximal 14 Leds zu treiben. Angesteuert von einem AtMega328P. Kennt jemand einen Treiber, welche in der selben Preisklasse spielt und ebenfalls von JLCPCB bestückt werden kann?
Was spricht dagegen, ein paar Microcontroller zu nehmen?
Die 0402-LEDs sind keine besonderen Stromfresser, das Dimmen geht problemlos per Software und MCUs wie der CH32V003 sind spottbillig. Moderne Attinys wären auch geeignet, wenn du bei einer familiäreren Architektur bleiben willst.
Natürlich: Hoher Entwicklungsaufwand, die Software dafür muss ja jemand schreiben.
Der hat sogar 16 Kanäle und eine um einen Faktor 16 höhere Auflösung.
Was der jetzt allerdings speziell mit der Arduinowelt zu tun hat, ist irgendwie nicht klar. Der wird ganz normal per I²C gesteuert.
Oder an welchen Arduino dachtest du, der die Fast-mode Plus Version des I²C-Interface unterstützt, falls man die wegen der Updategeschwindigkeit nutzen möchte/muss?
Kann bis zu 16 RGB LEDs mit 16 Bit PWM und zusätzlich noch analog den Strom beeinflussen. Ob das dann aber die Kanone ist und die Spatzen hast musst du selber beurteilen. Und 769 Bit Registergröße ist auch erstmal "seltsam".
Dadurch gibt es zum 328 passende Codebeispiele und "Libraries" bis zum
Erbrechen, und billige Platinchen auf denen der drauf ist zum testen.
Die I²C+Hardware des ATmega328 kann aber eben nicht den schnelle Mode und die verfügbaren Platinen haben wieder nichts speziell mit Arduino zutun.
Da muss man dann also erstmal gucken, welche Datenrate erforderlich ist, um die 14/16 LEDs (ggf. auch gleichzeitig) mit der gewünschtem Geschwindigkeit und Auflösung zu dimmen.
Die Menge der Libraries macht es nicht aus - sie muss auch den Zweck erfüllen können.
Deswegen bietet sich es ja an, einen WS2811-ähnlichen LED-Treiber zu verwenden. Dafür gibt es z.B. die NEOPIXEL-Lib von Adafruit oder FastLED (die können AFAIR auch größere Protokolle).
Die liefern nicht die gewünschte Auflösung - gelesen?
Oder welche Typen können davon deutlich mehr als 8 Bit Auflösung.
Ja, deswegen schrieb ich "WS2811-ähnlichen LED-Treiber".
Es gibt da z.B. noch die UCS...-Treiber, die es mit 16Bit-Graustufen gibt.
Im Gegensatz zum TI-Chip haben die nur eine kombinierte Daten-Takt-Leitung (wie die WS281x).
Und den hat JLCPCB im Lieferprogramm für die Bestückung?
Ja, als extended Part: C702086 und C702086
Kommt halt drauf an was man will. Wenns billig sein soll ist weder TI noch NXP die richtige Anlaufstelle. Will man einen ordentlich spezifizierten Chip der auch noch sowas wie Diagnose ermöglicht gehts eher in Richtung der "westlichen" Hersteller.
Diese sind WS28xx-kompatibel und arbeiten mit 12V.
Sie verwenden eine 12-Bit-PWM, also 4096 statt 256 Helligkeitsstufen und kommen trotzdem mit der WS2811-kompatiblen Übertragung von 8-Bit-Werten aus, weil sie direkt eine Gamma-Korrektur mit eingebaut haben. Diese mappt die 8-Bit-Werte auf entsprechende 12-Bit-PWM-Werte - unter Berücksichtigung der Helligemnpfindlichkeit des menschlichen Auges. Siehe dazu auch LED-Fading.
Im Gegensatz zum GS8208 steuertder ws2814f dieL LEDs einzeln an.
Da muss man dann nicht unbedingt RGB-LEDsdranhängen, sondern kann auch an jeden Kanal eine weißehängen. Den Beispielschaltungen des GS8208 nach vermute ich, dass das damit nicht geht.
Du kannst die WS2814 Controller auch per Software "aufbohren", wenn die Bildwiederholfrequenz auf Grund weniger kaskadierter Chips hoch genug ist (ein paar Dutzend, statt ein paar Hundert). Dann Helligkeit 0 und 1 bspw. im Verhältnis 3:1 alternierend senden, das das Auge das dann integriert. Schon hast du 2 Bit mehr Helligkeitsumfang ;-)
Der kommt aber vorallem beim faden der
Glühbirnensimulation mit seiner 256 Kanal PWM an seine Grenzen.
Alternierend zwei nebeneinander liegende PWM-Werte senden, schon hat man 512 Stufen. Das Verfahren ist erweiterbar, zwei höhere, einen niedrigeren,usw.
Im Gegensatz zum GS8208 steuertder ws2814f dieL LEDs einzeln an.
Da muss man dann nicht unbedingt RGB-LEDsdranhängen, sondern kann auch
an jeden Kanal eine weißehängen.
Die I²C+Hardware des ATmega328 kann aber eben nicht den schnelle Mode
und die verfügbaren Platinen haben wieder nichts speziell mit Arduino
zutun.
Und das Protokoll der WS... kann er erst gar nicht in Hardware. Da gibt es genau genommen auch Verzögerungen von der ersten zur letzten Led in der Kette. Mehrere Ketten ist auch eher schlecht, da das rausschieben der Bits so schon Assemblercode ist, bei dem die Zeiten der Maschinenbefehle das Timing ergeben.
Wenn damit jedoch flackernde Fackeln simuliert werden sollen ist es eh Mumpe.
Da unsere Augen Helligkeit logarithmisch bewerten, braucht es die hohe Auflösung vor allem bei den düsteren Werten. Wenn man also einen µC auf den LED-Boards nutzen würde, könnte man dort 32-Bit-Timer für die PWM nutzen, aber auf der Schnittstelle zum Board nur 8 Bit für eine Helligkeit übertragen.
Wichtig wäre dann, darauf zu achten, dass beim Ändern der Helligkeit nicht für eine Periode Unfug passiert. Also mal so ein kleiner Blitz zwischen dunkel und noch dunkler aufblitzt.
Irgendetwas ist ja immer. Was ist daran umständlich?
Als Nutzer merkst du davon nur, dass du nicht noch zusätzlich drei Widerstände benötigst. Wieviel Umstände der Chip-Hersteller davon hat, kann dir doch egal sein, solange der Preis passt. Einziger Nachteil könnte sein, dass immer der volle Strom fließt, egal wie die LEDs leuchten.
Und die Nutzung von 8 Bit Daten zur Steuerung der LED-Helligkeit über eine 12 Bit Kennlinie hat doch etwas.
Weil die LED-Verschaltung anders als beim WS281x aussieht.
Wenn ich es richtig in Erinnerung habe, sind bei der WS2815 die LEDs genauso verschaltet wie bei der GS8208.
Genau mit diesem Trick arbeitet sie mit wenig Hardwareaufwand mit 12V, was von der Stromführung wesentlich günstiger ist als die 5V-Variante, wo man bei Stripes alle paar Meter die niedrigere Spannung neu einspeisen muss.
Allerdings hat die WS2815 keine 12-Bit-PWM, sondern nur die allseits bekannte 8-Bit-PWM, die gerade bei niedrigen Werten einfach nur schlecht zu gebrauchen ist.
Wenn ich es richtig in Erinnerung habe, sind bei der WS2815 die LEDs
genauso verschaltet wie bei der GS8208.
Wie soll das gehen, wenn die LEDs bei den WS alle an einem gemeinsamen Pluspol hängen?
Kann man beim GS8208 auch eine der drei LEDs weglassen?
Manche meiner Modellbahnhäuschen (Spur N) brauchen nur eine oder zwei LEDs (mache auch wesentlich mehr).
Genau mit diesem Trick arbeitet sie mit wenig Hardwareaufwand mit 12V,
was von der Stromführung wesentlich günstiger ist als die 5V-Variante,
wo man bei Stripes alle paar Meter die niedrigere Spannung neu
einspeisen muss.
Modellbahnen habe eh meist irgendwelche Ringleitungen, da würde die nicht noch auffallen. Die WS kann man auch mit bis zu 24V betreiben...
Allerdings hat die WS2815 keine 12-Bit-PWM, sondern nur die allseits
bekannte 8-Bit-PWM, die gerade bei niedrigen Werten einfach nur schlecht
zu gebrauchen ist.
Deswegen hatte ich einen UCS-Treiber (genauer "UCS9812SS") vorgeschlagen.
Das ist aber eh alles ziemlich philosophisch; und der TO hat sich eh mal wieder verdünnisiert...
Wenn ich es richtig in Erinnerung habe, sind bei der WS2815 die LEDs
genauso verschaltet wie bei der GS8208.
Wie die intern verschaltet sind, steht IMO nicht im Datenblatt. Als Anwender verschaltest du beim WS2815 jedenfalls gar nichts bei den LEDs. Die sitzen fest auf dem Chip.
Warum denn nicht?
Ob ein MOSFET durchschaltet oder der Strom über einen Jumper/Drahtbrücke
fließt, ist doch egal.
Ich muss sie bei der Programmierung aber beachten (bzw. den MOSFET durchschalten, damit die anderen überhaupt leuchten - mögliche "Fehlerquelle"), was ich mir beim WS sparen kann.
Ich muss sie bei der Programmierung aber beachten (bzw. den MOSFET
durchschalten, damit die anderen überhaupt leuchten
Nein, in dem seriellen Protokoll übergibst du die Helligkeitswerte für die Grundfarben - fertig.
Bei leitendem FET fließt der Strom durch den FET, sonst durch die entsprechende parallele LED. Falls keine LED bestückt ist, musst du entweder einen Jumper/Lötbrücke setzen oder du setzt im Datenstrom den Helligkeitswert auf 0. Das sollte halbwegs fehlerfrei hinzukriegen sein.
mögliche "Fehlerquelle"), was ich mir beim WS sparen kann.
Guck dir das Protokoll noch einmal an. Beim "WS" ist das nicht anders, auch nicht beim WS2815.
Nein, in dem seriellen Protokoll übergibst du die Helligkeitswerte für
die Grundfarben - fertig.
Bei leitendem FET fließt der Strom durch den FET, sonst durch die
entsprechende parallele LED. Falls keine LED bestückt ist, musst du
entweder einen Jumper/Lötbrücke setzen oder du setzt im Datenstrom den
Helligkeitswert auf 0. Das sollte halbwegs fehlerfrei hinzukriegen sein.
Standardmäßig alle auf 0 setzen? Dann leuchtet ja gar nichts.
Oder alle auf einen Wert > 0? Dann leuchtet auch nichts, wenn der Chip nicht komplett beschaltet ist.
Das ist aber nur ein sehr schwacher Grund, weil man schon wissen sollte was man macht.
Lötbrücken und Jumper sind schon wieder Material (-kosten).
mögliche "Fehlerquelle"), was ich mir beim WS sparen kann.
Guck dir das Protokoll noch einmal an. Beim "WS" ist das nicht anders,
auch nicht beim WS2815.
Ich kenne das WS-Protokoll. Da ist es eben egal, ob eine LED bestückt ist oder der Wert 0. Das betrifft die anderen LEDs nicht.
Sagen wir es so: Mein System ist auf die WS281x ausgelegt und funktioniert (bis auf die fehlende 5V-Ringleitung).
Würde ich es neu aufbauen, würde ich mir vermutlich auch andere Treiberchips angucken und eine andere Versorgungsspannung wählen.
Mein System entstand durch den Kauf einer "nackten" RGB-Lichterkette.
Da man den WS2811-Treiber-IC auch lose bzw. auf einer Platine bekommt, wurde die Geschichte nachverfolgt). Eine fertige Ansteuerungssoftware (per Arduino) gibt es ja auch mit der NEOPIXEL-Lib von Adafruit - man ist ja faul.
Wollte der TO nicht ursprünglich irgendwelche Signale betreiben?
Wenn die jetzt schon auf WS-Treiber ausgelegt sind, wäre eine Auflösungserhöhung per Software-Anpassung ratsam (s.o.) statt die Hardware wieder zu ändern.
Das ist aber fast alles nur geraten...
Standardmäßig alle auf 0 setzen? Dann leuchtet ja gar nichts
Anscheinend war meine Vermutung, dass du die Schaltung nicht richtig verstanden hast, doch nicht ganz hergeholt.
Natürlich darfst du nicht alle auf 0 setzen, nur den Kanal, auf dem keine LED bestückt ist.
Wenn der Helligkeitswert für EINEN Farbkanal auf 0 gesetzt wird, ist genau der zugehörige FET leitend, d.h. der Strom für die anderen LEDs kann frei fließen und du kannst die mit beliebiger Helligkeitseinstellung leuchten lassen, egal ob die eine LED bestückt ist, oder eben nicht.
Wollte der TO nicht ursprünglich irgendwelche Signale betreiben?
Wenn die jetzt schon auf WS-Treiber ausgelegt sind, wäre eine
Auflösungserhöhung per Software-Anpassung ratsam (s.o.) statt die
Hardware wieder zu ändern.
Das ist aber fast alles nur geraten...
Ihm reichte die lineare 8 Bit Helligkeitsauflösung nicht, deshalb keine WSxxxx. Ein Dithering auf zusätzliche 4 Bits, insbesondere bei der dafür doch recht niedrigen PWM-Frequenz des WSxxxx, mal eben per Software einzubauen, ohne dass man mit unsauberem Timing und Aliasing Probleme kriegt, ist nicht mal "so eben" umgesetzt.
Der kommt aber vorallem beim faden der Glühbirnensimulation mit seiner
256 Kanal PWM an seine Grenzen. Die Stufen sind vorallem beim auf oder
nachglimmen eindeutig erkennbar. Das ist so nicht akzeptabel.
Wenn ich es richtig in Erinnerung habe, sind bei der WS2815 die LEDs
genauso verschaltet wie bei der GS8208.
Wie soll das gehen, wenn die LEDs bei den WS alle an einem gemeinsamen
Pluspol hängen?
Das stimmt für die WS2812, aber eben für die WS2815 nicht. Messungen ergeben, dass die Stromaufnahme einer WS2815 dem Max-Wert der hellsten LED entspricht und nicht der Summe der Ströme aller 3 LEDs. Das kann man nur mit einer Reihenschaltung erklären.
Bei der WS2812 addieren sich die Stromaufnahmen der 3 internen LEDs. Hier handelt es sich um eine Parallelschaltung.
Würde dann bis zu fünf GS8208 pro Signal erfordern, oder?
TO-Problem...
Da die GS8208 genauso angesteuert werden wie die WS2811, sollte es kein Problem sein, die in einem 12V-System miteinander zu vermischen.
(Ja, ich habe meine Meinung zu den Treiber-ICs geändert - darf man doch, oder?)
Beschaltungstechnisch wäre der GS8206 (der dann auch schon mit 5V liefe) vergleichbar mit dem WS2811...
Der wäre auch für Leute geeignet, die den Treiber direkt mit einem ESP oder einem anderem 3,3V-Controller ansprechen wollen.
Kann aber auch sein, dass ich mal wieder komplett daneben liege.
Beim GS8208 weiß man das nicht so genau oder ich habe irgendetwas
übersehen. Im Datenblatt taucht erstaunlicherweise jedenfalls keine
Spezifikation zu VIH_min auf.
Die 4V sind vermutlich eine Spalte zu weit links verrutscht. Ich denke, das ist die mindest Spannung.
Wenn man auf Seite 4 bei der Tabelle "Electrical Characteristics" in der Titelzeile die Verdoppelung ignoriert und die selbe Titelzeile wie in der nachfolgenden Tabelle nimmt, sieht es schon besser aus.
Der Betrieb der GS8206 mit 12V und nur einer LED an jedem Ausgang hat
den Nachteil, dass man relativ viel Leistung verheizt, oder?
ja, man hätte nur den Vorteil, dass man nicht alle paar Meter eine extra 5V-Einspeisung bräuchte.
Wenn man bedenkt, was die Glühlämpchen früher an Wärme produziert haben, sollte das aber schon eine Verbesserung sein.
ja, man hätte nur den Vorteil, dass man nicht alle paar Meter eine extra
5V-Einspeisung bräuchte.
Nur, weil die LED-Treiber Chips ausreichend Luft zum Regeln ihrer Betriebsspannung bekommen, heißt das doch nicht, dass sich die Stromtragfähigkeit der Leiterbahnen in dem Streifen erhöht. Der (mittlere) Strom würde sich mit der höheren Spannung nur reduzieren, falls die interne Stromquelle die Stromregelung über Taktung realisieren würde. Das Datenblatt des GS8206 sagt leider nichts dazu.