PL9823 RGB-LED mit 3,3V des ESP32 ansteuern

In dem Tutorial
"#81 PL9823 Round Neopixels as an alternative/replacement for LEDs on GPIOs with small currents"
von Andreas Spiess verwendet er die LEDs zusammen mit einem ESP32, wobei er sagt, dass das nur möglich ist, wenn man einen kleinen Kondensator (in dem Fall 220pF) zwischen dem Daten-Eingang der ersten LED und GND verbaut.

Jetzt habe ich nach langem Herumprobieren mit vielen Fehlschlägen gemerkt, dass es bei meinem Aufbau (mit 7 LEDs) unter Verwendung eines 200pF-Kondensator nur dann funktioniert, wenn ich die Spannung an den RGB-LEDs zwischen 3,3V und 4,9V einstelle (niedriger als 3,3V habe ich nicht getestet). Sobald ich auf 5V gehe, schalten sich die Lampen ab oder sie zeigen scheinbar zufällige Farben an.

Am liebsten wäre es mir, wenn ich verstehen würde, woran das liegt, bzw. welche Bedeutung dieser Kondensator überhaupt hat, da ich die Spannung gerne auf 5V einstellen würde. Laut Datasheet soll man die LEDs übrigens mit 4,5 bis 6 V betreiben.

Ist das Problem wirklich, dass ich 200 statt 220 pF verwende (habe keinen passenden vorrätig)?

(Bei 2:18 bis 2:37 redet er vom Kondensator)

Ich habe mir das Video nicht angeschaut und halte den Kondensator für Unfug.

Meist wird 0,7 * Vcc als HIGH erkannt (Bei den RGB-LED eigentlich immer - was mir bisher begegnet ist). 5V * 0,7 b= 3,5V und das bringt der ESP nicht. Du musst also mindestens die 1. LED mit ca. 4,4 V betreiben (z.B. durch eine Diode in deren 5V-Leitung). Damit kommt die ca. auf 4,3V und regeneriert das Signal für die nachfolgenden LED.
Oder Du betreibst alle LED mit etwas geringerer Spannung.

Gruß Tommy

Sagamihara:
Ist das Problem wirklich, dass ich 200 statt 220 pF verwende (habe keinen passenden vorrätig)?

Warum glaubst du einem x-beliebigem Video mehr als den Datenblättern ?
Bastel nicht ohne Hintergrundwissen rum, sonder schließe deine Baugruppen entsprechend der Vorgaben bzw. Datenblättern an.
Soll heißen, verwende einen Levelshifter zwischen den Baugruppen mit 3,3V und 5V, dann klappt das auch.

Hot-Systems, wenn es ein halbwegs brauchbares Datenblatt geben würde ...

Mir erschließt sich der Sinn des Kondensators auf der Datenleitung nicht.

Es kann sein wie Tommy56 meint daß 3,3V vom ESP zu niedrig sind um vom PL9823 als HIGH erkannt zu werden.

Darum muß man einen Level Shifter nehmen um die Signalspannung zu erhöhen.

Grüße Uwe

uwefed:
Hot-Systems, wenn es ein halbwegs brauchbares Datenblatt geben würde ...

Ok, ich habe nicht gesucht, da es die Sache des TO sein sollte.
Wenn es das nicht gibt, kaufe ich mir solch Teil nicht. Da hat der TO leichtsinnig gehandelt.

Alles ander wurde schon geschrieben.

Wenn ich das richtig verstehe müsste es also auch gehen, wenn ich am Labornetzteil direkt 4,4V einstelle?

Ich habe jetzt sowohl den Arduino-Klon als auch den ESP32 mit demselben Sketch versehen um direkt vergleichen zu können, und dann mit verschiedenen Spannungen an den LEDs laufen gelassen. Dabei werden zuerst nacheinander alle Grundfarben angezeigt, anschließend eine Animation bei der die LEDs nacheinander die Farbe wechseln.
Beim Arduino-Klon läuft alles perfekt, von 2 bis 5 V leuchten alle LEDs mit gleichmäßiger Farbe, auch wenn bei sehr niedrigen Spannungen natürlich die Farben nicht mehr stimmen (rot leuchtet heller als z.B. blau).

Beim ESP32 treten aber bei allen Spannungen Fehler auf: Wenn ein dunkles "Weiß" mit den RGB-Werten 10,10,10 dargestellt wird, ist die LED nur rot. In dem Moment wenn alle LEDs rot (255,0,0) anzeigen stimmt das bei allen außer der letzten (Nummer 40 - ich habe noch ein paar LEDs hinzugefügt), die dann violett ist.
Bei der Lauflicht-Animation kommt es zu einem Flackern, wenn alle LEDs hell erleuchtet sind.

Ich werde das mit dem Levelshifter versuchen. Habe sowas noch nicht verwendet, aber ich meine sowas müsste hier irgendwo rumliegen.

Bei 40 LED solltest Du GND und Vcc beidseits einspeisen.

Gruß Tommy

Zwei Tipps:

  • Gute Erfahrungen habe ich mit dem Adafruit NeoPixel Überguide gemacht. Zwischen Arduino-Pin und DIN gehört ein Widerstand größer 220 Ohm, Adafruit empfiehlt 470 Ohm, um DIN zu schützen.
  • Mir scheint die Bibliothek FastLED im Zusammenhang mit ESP32 bessere Ergebnisse zu liefern.

Also ich habe den Levelshifter eingebaut und er scheint zu funktionieren, am Eingangspin der LEDs habe ich tatsächlich 5V gemessen. Aber: Das hat das Problem nicht behoben, alle beschriebenen Nachteile der ESP32-Version gegenüber der mit der Arduino-Klon sind bestehen geblieben.

Ich kann die Spannung dann auch bis auf ca. 2,5V runterdrehen (was dann sowohl die Versorgungsspannung der LEDs als auch der Signalleitung betrifft) und es funktioniert weiterhin. Allerdings geht es nicht, sobald ich knapp über 4 V gehe. Das ist für mich völlig unverständlich, da der Arduino-Klon doch ebenfalls eine höhere Spannung ausgibt.

Wäre es denkbar, dass es überhaupt nicht an den 3,3V des ESP32 liegt?

Was die Einspeisung der 40 LEDs angeht, so habe ich die mehrseitig ausgelegt.

PS: Den Widerstand vor DIN habe ich auch, ist bei mir 330 Ohm. Die Bibliothek werde ich mir gleich ansehen. Benutzt du bei deinem ESP32 denn einen Levelshifter?

Die FastLED habe ich eben getestet. Die Demo mit dem "First Light" funktioniert, aber ich werde es heute nicht mehr schaffen zu verstehen, wie ich etwas komplexeres programmieren kann. Merkwürdigerweise hat es mit dem Levelshifter aber nicht geklappt, habe den wieder rückgebaut. Wie zuvor funktioniert es jetzt wieder bis zu einer eingestellten LED-Spannung von 4,9V, ab 5V friert das umherwandelnde Licht an der aktuellen Position ein.

Sagamihara:
Die FastLED habe ich eben getestet. Die Demo mit dem "First Light" funktioniert, aber ich werde es heute nicht mehr schaffen zu verstehen, wie ich etwas komplexeres programmieren kann. Merkwürdigerweise hat es mit dem Levelshifter aber nicht geklappt, habe den wieder rückgebaut. Wie zuvor funktioniert es jetzt wieder bis zu einer eingestellten LED-Spannung von 4,9V, ab 5V friert das umherwandelnde Licht an der aktuellen Position ein.

Dann hast du den Levelshifter nicht korrekt eingebaut. Welchen Levelshifter verwendest du ?
Der bringt nur die 3,3V Steuerspannung auf die nötige 5V Steuerspannung.

Zeige auch mal ein Schaltbild.

Sagamihara:
… aber ich werde es heute nicht mehr schaffen zu verstehen, wie ich etwas komplexeres programmieren kann.

Das wäre auch eine falsche Erwartung, die FastLED steuert die LEDs aber m. W. etwas anders an, daher der Versuch.

Sagamihara:
Merkwürdigerweise hat es mit dem Levelshifter aber nicht geklappt, …

Welchen verwendest Du? Die für I2C beispielsweise funktionieren nicht!

Tatsächlich kann man die FastLED-Bibliothek fast genau so verwenden, wie die von Adafruit. Anfangs habe ich gedacht, man müsste die gewünschte Farbe als Text eingeben (Web Colors?), weil das im Beispiel so war, aber das ist nicht der Fall.

Also ich habe den Sketch jetzt umgeändert und kann sagen, dass jetzt praktisch alle geht. Sowohl die Farbdarstellung ist korrekt als auch kann ich die Spannung auf >5V einstellen ohne dass die Lichter ausgehen. Das Flackern war zwar teilweise noch da, aber nachdem ich einen Stützkondensator angeklemmt habe, war das auch fast weg. Ich nehme an, das wird dann kein Problem mehr machen.

Wie die Bezeichnung des Levelshifter ist kann ich garnicht sagen, es steht nichts auf der Platine. Habe bei ebay einen augenscheinlich identischen gefunden, der hat die Bezeichnung "8 Kanal Logic Level Converter Bi Direktional Shifter Modul 5 V to 3,3 V TTL"

Ich melde mich dann vielleicht wieder, wenn das Gerät fertig ist und möchte schonmal allen danken, die mir geholfen haben!