WS2814 RGBW LED-strip an RPI4B - 3.3V GPIO

  • Hallo Forum,

    ich versuche seit geraumer Zeit einen 24V LED-strip WS2814 am RPI 4B ordentlich ans laufen zu bekommen. Ich nutze die rpi_ws281x-Bibliothek in Python - das ist auch nicht das Problem ... das Programm läuft. Die einzelnen LEDs lassen sich auch separat ansprechen - jedoch wenn ich die Helligkeit unterhalb von ca. 10 / 30 % setze (es ist immer unterschiedlich), oder wenn in einem programmierten Effekt die LEDs zu dunkel werden, flackern die LEDs nur noch, blitzen plötzlich auf oder einige bleiben auch einfach aus. ... immer unterschiedlich

    Der Stripe verlangt eine Versorgungsspannung von 24 V und eine (TTL) Steuerspannung von 5 V. Gesteuert wird der Stripe über einen PIN (PIN 18) mittels moduliertem PWM-Signal mit 800 kHz.
    An einem Arduino UNO / Mega mit 5V GPIO laufen die Programme (ich habe einige Tests nach c portiert (da gibts auch Bibliotheken für den WS281x) und getestet) einwandfrei.
    Ich möchte nun kurz meine bisherigen Versuche beschreiben:

    GND vom 24 V Netzteil, dem Stripe und dem GND-Anschluss am RPI sind verbunden.

    - 4 Kanal Pegelwandlermodul 3.3 -> 5V : die Steuerung eines Licht-Effekts ist nicht möglich - alle LEDs flackern sporadisch. Eine Beeinflussung durch Änderung der Effekte ist nicht erkennbar.

    - diverse Transistorschaltungen mit BC337, 2N222 als Pegelverstärker (mit nur einem Transistor oder in Darlington-Schaltung) : das Gleiche Ergebnis wie beim Pegelwandler... funktioniert überhaupt nicht... jeweils auch mit PullUp/Pulldown - Widerständen... irgendwas habe ich da falsch gemacht.

    - PIN 18 an 330 Ohm, an 4 Eingänge eines 7421 (4-Fach AND Gate) - von dessen Ausgang über einen weiteren 330 Ohm an die Signalleitung des Stripes sowie einem 10 kOhm als PullUp gegen VCC : so funktioniert es einwandfrei - solange ich die Helligkeit hoch genug lasse.

    Wie genau die Chips des WS2814 von der Bibliothek angesprochen werden - also wie genau das Signal moduliert wird, weiß ich nicht - so tief bin ich nicht in die Materie vorgedrungen - aber ich vermute, dass die Schaltverzögerungen, welche der 7421 hat, hier der störende Faktor sind.

    Nun meine Frage an euch : kennt jemand eine Transistorschaltung, welche hier Abhilfe schafft - oder kennt jemand einen zuverlässigen Pegelwandler, welcher mit 800 kHz klar kommt ? Ich habe im Internet viel dazu gefunden - allerdings hätten das die Pegelwandlermodule, welche ich bestellt und getestet habe, auch schaffen sollen und müssen (mmtrade | 4-Kanal Pegelwandler Logic Level Converter Shifter 4 Kanal Pegelwandler BiDirektional) ... Bevor ich nun wild Sachen im Internet bestelle, die gehen könnten, wollte ich hier im Forum um Rat bitten. Es muss doch irgendwie mit einer Transistorschaltung gehen - vermute ich... :P

    Danke und LG
    HeWo:)

  • Moinsen,

    Pegelwandler nach dem Modell I²C jedoch mit einem 2N7000 / 2N7002 MOSFET arbeiten sehr sehr zuverlässig bis über 1,2 MHz.

    Allerdings darf die Stromforderung nicht sehr hoch sein.
    Ich denke das ist bei dir das Problem, weil der Strip doch etwas länger ist.

    Normal sollte ein OPV als Comparator mit einer Vc von 5 Volt und einer Referenzspannung von 2,8 Volt ausreichend sein, um sicher 20 mA durch den Datenstrang zu schicken.

    Franky

  • Hallo Franky07,

    Danke… das ging schnell :). …nein, die Länge des Stripes ist zumindest für die Datenleitung egal. Das Signal steuert nur den ersten Chip, der gibt das dann an den nächsten Chip usw... Ein Stripe ist 5 Meter. Mit 24 Volt Stromeinspeisung nach jedem 2ten Stripe kann man etliche Stripes hintereinander schalten. Begrenzt wird das ganze nur durch den Arbeitsspeicher des Pi‘s. Ist ne coole Technik…

    Ich schau mir mal die Datenblätter der 2N7xxx teile an. Danke dir:thumbup:

  • Moinsen,

    Das Problem hatte ich auch schon einmal. Obwohl man sagt, das auf dieser Länge nichts von dem Pegel des Datensignals verloren gehen sollte, es passiert trotzdem. Bei mir war es auch der zu geringe Strom auf dem DATA Kanal.
    Erst als ich eine Strompumpe verwendet hatte, also den Pegel mittels eines höheren möglichen Ausgangsstrom verstärkt hatte machten dann auch die letzten der LEDs das was sie sollten.
    Du musst bedenken, das in dieser Schaltung BSS138 ersetzt durch den 2N7000/2N7002 nur maximal 3 mA entnommen werden können. Wenn dann noch eine Lötstelle sauer ist, der Übergangswiderstand etwas höher ist, und der Pegel unter 4,82 Volt fällt ( Oszi notwendig ) dann tun die letzten LEDs in der Kette unbeteiligt.

    Franky

  • Moinsen,

    Du kannst gerne diese Variante ausprobieren


    Ich kann dir aber auch aus eigener Erfahrung sagen bis ca 50 St. dieser WS28xx funktioniert diese Schaltung noch, dann gab es zumindest bei mir wiederholt, auch bei gleich gearteten Projekten, Probleme. So das ich auf die OPV Variante umgeschwenkt bin. Allerdings sollte der OPV diese Frequenz ( 2 x 800 kHz - nach deinen Angaben ) auch schaffen, und es muss zwanghaft einen Rail-to-Rail Typ sein.

    Franky

  • Huh, klingt spannend. Kannst du bitte eine Schaltung mit dem OPV posten, welche bei dir gut funktioniert hat ? Klingt ja wie die Lösung meines Problems ☺️

    Ich bin mehr der Programmierer und wurschtel mir mit der Hardware , benötigte Widerstände, Kondensatoren etc. solcher Schaltungen immer durch „try it einfach“ durch… überlege kurz, ob dem pi dabei was passieren kann und schließ es an… so bin ich auch auf den 7421 gekommen - ich wußte dass ich den mit dem pi schalten kann und dass der TTL Pegel hat… im Prinzip funktioniert es ja auch bis das PWM Signal zu kurz wird.

  • Hallo Franky,

    ich weiß nicht wieso - aber die Schaltung funktioniert bei dem LED-Stripe nicht...

    1. Test : ich habe den Spannungsteiler je mittels Reihenschaltung Widerstände + Präzisionspotis sehr genau auf 22,1k und 28k gestellt, alles so angeschlossen wie im Schaltbild - auch den C 100nF zwischen die Versorgungsspannung und die 5 + 6 entsprechend mit GNDund VC verbunden, so dass alles schön definiert ist. Der Stripe macht garnix.
    Am Ausgang des OPV messe ich 0,0 V (hab leider nur n Multimeter - kein Oszi)

    2.Test : über den Spannungsteiler am PIN 2 langsam andere Spannungen eingestellt, während auf dem PI ein Pythonprogramm läuft, das ständig ändernde Lichteffekte an den OPV sendet.

    3. Test _ Stripe ab, Multimeter an Pin 1 des OPV, Spannungsteiler am OPV PIN 2 auf 2,8 V gestellt, in Python ein Blinkprogramm geschrieben (schalte Pin 18 alle 2 Sekunden um) - das Funktioniert, 0V - 5V - 0V - 5V... Also die Schaltung an sich arbeitet so wie sie soll.

    Ich hab leider kein Oszi... Hast du noch eine Idee ?


    LG HeWo

  • Moinsen,

    Dann schicke doch mal eine reines GPIO HIFG Signal auf den EINGANG des OPVs. Der muss am Ausgang eine HIGH Spannung von 5,0 Volt liefern.

    Überholt. Sorry. Aslo wenn die Schaltung funktioniert. und hinten ganz saubere 5,0 Volt rauskommen, dann muss das Signal auch durchgehen. Denn diese Schaltung arbeite nach dem Comparator Prinzip.
    Bei 800 kHz wirst du mit dem normalen Multimeter nichts messen können.

    Franky

  • Die Schaltung schalten den Ausgang nur auf HIGH, wenn die Spannung am Eingang VIN+ höher ist als die Spannung des Spannungsteilers.

    Du kannst ja mal versuchen die Spannung über den Spannungsteiler am VIN- soweit zu reduzieren, auf z.B. 1,8 Volt

    Nicht das dem PI der Saft ausgeht !?

    Franky

  • Du kannst auch noch den DATA IN Mit einem 47k gegen Masse ziehen. ( Pulldown ) und dann die Spannung am Eingang des VIN- auf knapp über 0,8 Volt runterdrehen. Dabei musst du beachten das der Gesamtwiderstand aus R11 und R12 nicht unter 20 K Ohm fällt.

    Franky

  • Moinsen,

    Dann schicke doch mal eine reines GPIO HIFG Signal auf den EINGANG des OPVs. Der muss am Ausgang eine HIGH Spannung von 5,0 Volt liefern.

    Überholt. Sorry. Aslo wenn die Schaltung funktioniert. und hinten ganz saubere 5,0 Volt rauskommen, dann muss das Signal auch durchgehen. Denn diese Schaltung arbeite nach dem Comparator Prinzip.
    Bei 800 kHz wirst du mit dem normalen Multimeter nichts messen können.

    Hab es trotzdem probiert - bei 1 kHz messe ich mit dem Multimeter 2.6 V, bei 100 kHz noch 1,8, bei 1 MHz 1,4 Volt

  • Hast du mal versucht die Eigangsspannung aus dem Spannungsteiler auf 0,9 Volt zu reduzieren ? Das ist dann die Schaltspannung bei dem der OPV auf HIGH schaltet.
    Damit müsste sobald der Impuls kommt, am Ausgang fast sofort die 5,0 Volt anliegen. Also das Signal durchgehen.


    Franky

  • Ja, ich hab jetzt versucht :

    Spannung OPV Pin 2 auf 0,6 - 2,1 Volt ganz langsam hochgedreht (Reihenschaltung Widerstände + Präzissionstrimmer - dabei R11+R12 > 20k)

    und 47k Pulldown parallel zum PI am Eingang 3 am OPV

    Die LEDs machen nix :( ... Ich verstehe das nicht - wenn ich per Software ein 1 MHz - Signal auf den Eingang des OPV gebe, bekomme ich ein wenig Spannung an OPV Pin1 (mit Multimeter gemessen .... ich weiß, das man das nicht mit dem Multimeter messen kann - habs trotzdem gemacht und er zeigt mir 1,4 Volt an)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!