ich habe ein custom-board mit einem ESP32, der unter anderem WS2812b LEDs ansteuert. Da der ESP ja mit 3,3 V arbeitet, hatte ich eine Pegelwandler-Schaltung mit eingefügt. Schaltplan ist angefügt.
Das seltsame ist jetzt, dass sobald ich die 5V anschließe, funktionieren die Neopixels nicht. Wenn ich aber meinen programmer anschließe (3,3 V) ohne die 5 V funktoniert es aufeinmal.
Hab ich beim Pegelwandler etwas falsch gemacht, oder stimmt etwas anderes nicht?
ich habe ein custom-board mit einem ESP32, der unter anderem WS2812b
LEDs ansteuert. Da der ESP ja mit 3,3 V arbeitet, hatte ich eine
Pegelwandler-Schaltung mit eingefügt.
Die WS2812b ab V5 arbeiten ab 2.7V Ansteuerpegel.
Welche Version benutzt du?
Versuche mal, R19 auf 1kΩ zu verringern und R13 auf 33 Ohm.
Ganz funktioniert es leider noch nicht aber jetzt leuchten, zwar nicht wie sie sollten, immerhin die ersten 3 LEDs, was sie vorher nicht getan haben. villeicht noch weiter verringern ?
Die WS2812b ab V5 arbeiten ab 2.7V Ansteuerpegel.
Welche Version benutzt du?
Die hatte ich auch gesehen. Welche Version ich genau habe, weiß ich nicht, aber die Streifen die ich hier habe sind alle schon einige Jahre alt, also hab ich die V5 wohl eher nicht. Würde auch ungerne neue kaufen, da ich hier noch etliche Meter habe.
Das Problem ist, dass deine Schaltung für I²C gedacht ist, nicht für das hier verwendete Protokoll. Eigentlich müsste sie sowohl beim HIGH Pegel als auch beim LOW Pegel den gleichen Ausgangswiderstand von ca 100 Ohm (entsprechenden deinen Leitungen) haben, aber das ist bei dieser Schaltung leider nicht einmal ansatzweise umsetzbar.
Kann sein, dass du mit 470 Ohm Erfolg hast. Kann aber auch sein, dass der nur bis zur nächsten Mondphase anhält, weil das immer noch sehr weit vom Soll entfernt ist. Und 100 Ohm als Pull-Up kannst du vergessen, denn durch diesen würden 50 mA fließen, das schafft der ESP nicht.
Das seltsame ist jetzt, dass sobald ich die 5V anschließe, funktionieren
die Neopixels nicht.
In so einem Fall nimmt man ein Oszi und misst am Eingang(!) des nachgeschlteten Empfängers einfach mal, wie die Pegel und Flanken aussehen.
Und dann findet man schnell heraus, dass dieser passive Pegelwandler eben nur die H-L-Flanke gut hinbekommt und die L-H-Flanke viel zu langsam ansteigt und deshalb das Tastverhältnis nicht mehr stimmt.
Für schnelle Signale nimmt man dann einfach richtige aktive Pegelwandler und setzt eine passende Serienterminierung direkt an den Ausgang. Dann bekommt der nachgeschaltete Eingang die richtigen Pegel mit knackigen Flanken.
Wenn eine nicht funktionierende Ansteuerung für die WS2812b eine Option ist und du den Chip nicht von Hand verdrahtet auf die Platine bauen willst, kannst du das Layout natürlich so lassen.
Notfalls auf einen TXS0102 setzen. Der ist schnell genug.
Wozu ein bidirektionaler Wandler an dieser Stelle nötig sein soll, ist allerdings nicht klar. Ein Single Gate HCT-Gatter sollte für die WS2812b völlig reichen, z.B. ein 74HCT1G125GW oder, wenn man das Signal am µC invertiert ausgibt, ein 74HCT1G04GW.
Ja, zusammen mit den parasitären Kapazitätenvon Eingang, Leitung, usw...
(kleiner Einwurf in Klammern: es ist dann ein "hoher Widerstand", wenn er z.B. ganz oben im Regal liegt. Hier kommt das Problem aber eher davon, dass es ein hochohmiger Widerstand ist. Selbiges gilt z.B. auch für "kleine Widerstände", die eigentlich nur "niederohmig" sind)
dann brauch ich zur nächsten Mondphase wohl den TXS0102
Wenn du dir das Datenblatt des ICs mal näher anschaust: der ist im Prinzip genau so passiv (mit Pullup) aufgebaut wie deine obige langsame Schaltung. Nur hat er einen "One Shot Accelerator" hinzugebastelt bekommen, der die Flanken steiler macht.
z.B. ein 74HCT1G125GW
Die hab ich jetzt nur als IC gefunden. Wenn bräuchte ich ein Modul
Probier doch mal den Einstieg in die Elektronik, statt nur aus irgendwelchen Modulen irgendwas zusammenzufrickeln: kauf dir einfach ein Stück Lochrasterplatine und mach dir selber so ein Modul. Siehe z.B. im Artikel Pegelwandler
Die eigentlich relevante Passage darin lautet: "3,3 V auf echte 5 V (CMOS) geht am einfachsten mit einem Baustein der HCT-Familie (NICHT HC!). Diese haben TTL-kompatible Eingänge und echte CMOS-Ausgänge". Also nimm irgendeinen 74HCTxxx Buffer, den du zu deinem Modul verarbeiten kannst:
https://www.mouser.de/c/semiconductors/logic-ics/buffers-line-drivers/?logic%20family=74HCT
Kleiner Tipp für selbstgebaute "Module": immer einen 100nF Kondensator direkt zwischen Vcc und GND an die ICs löten.
dann brauch ich zur nächsten Mondphase wohl den TXS0102
Wenn du dir das Datenblatt des ICs mal näher anschaust: der ist im
Prinzip genau so passiv (mit Pullup) aufgebaut wie deine obige langsame
Schaltung. Nur hat er einen "One Shot Accelerator" hinzugebastelt
bekommen, der die Flanken steiler macht.
Ich verbaue TXS0108E, weil es ihn beim Ali auf lochrasterfreundlichem Platinchen billig gab. Ist natürlich doof, wenn man nur zwei Leitungen braucht. Der hat Push-Pull Ausgänge und ich bin erstaunt, dass TI das bei den kleineren 0104 / 0102 nicht auch gemacht hat.
Die hab ich jetzt nur als IC gefunden. Wenn bräuchte ich ein Modul
Entsprechende "SMD Adapterplatinen" sind handelsüblich. Aber mal ehrlich: Du wirst es doch wohl schaffen, 4 Drähte direkt an das IC anzulöten, oder? Dann passt es auch irgendwie als Rettung auf deine Platine.
Ich verbaue TXS0108E ... Der hat Push-Pull Ausgänge
Auch der ist in der Struktur gleich wie die kleineren Varianten. Die PushPull Mosfets werden nur kurz für knackige Flanken eingeschaltet. Den Rest muss der Pullup machen.
Schnelle Pegelwandlung wurde ja schon gesagt, diverse Levelshifter wurden auch genannt.
Einen WS2812 Pixel als "Pegelwandler für Arme", indem du dem einen Pixel eine normale Si-Diode in die +5V Leitung baust. Der sieht dann nur 4,3V und ist mit dem 3,3V Pegel zufrieden und kann seinerseits dann 4,3V liefern, mit dem der 5V Stripe dann wieder glücklich ist.
Oder du missbrauchst RS485 Transciver als Levelshifter und nutzt den differentiellen Bus als willkommenes Goodi, weil Stripe und Ansteuerung zig Meter auseinander sein dürfen. Am ESP einen xx3485 und am Stripe eine 5V Version. Du mußt bei den Transcivern nur aufpassen, es gibt vereinzelt auch schnarchlangsame Varianten. Die mit 2,5 MHz langen völlig.
Ich nutze immer diese Schaltung am ESP. Funktioniert wunderbar.
Die Widerstände kann man auch beide mit 4K7 ersetzen, als NPN verwende ich meistens nen BC337 und fertig. Bisher habe ich damit noch jeden WS2812-kompatiblen Strip angesteuert bekommen - und zwar ohne Aussetzer.
Ich nutze immer diese Schaltung am ESP. Funktioniert wunderbar.
Glaube ich dir, hat bei mir auch an funktioniert. Doch sie wurde hier im Forum kritisiert. Die berechtigte Kritik wurde mit Oszilloskop-Bildern untermauert.
Bei der Schaltung tut es nicht jeder Kleinleistungs-NPN.
Doch, weil das eine Basisschaltung ist, wenn die Basis direkt an den 3V3. Da ist jeder übliche Kleinsignaltransistor schnell. Dass die steigende Flanke dann wieder nur vom Pullup und den Leitungskapazitäten definiert wird, dürfte klar sein.
Doch, weil das eine Basisschaltung ist, wenn die Basis direkt an den
3V3. Da ist jeder übliche Kleinsignaltransistor schnell.
Hätte ich auch so gedacht, aber zumindest LTSpice sagt etwas anderes.
Vielleicht ist irgendetwas mit den mitgelieferten Modellen von BC337/546/547/817 und 2N2219A (mehr habe ich nicht probiert).
Oder wo steckt der Fehler in der Simulation?
Edit
Zeitdiagramm mit 2N2219A hat andere Y-Skalierung, sorry
Nein, ich stehe im Abseits und behaupte das Gegenteil: wegen des R1 ist das natürlich keine Basisschaltung. Und der Sperrverzug kommt von dem voll aufgesteuerten Transistor. Schnell wäre der Transistor nur, wenn er nicht als Schalter übersteuert würde.
Also: ein Single-Gate-Treiber, dahinter eine Serienterminierung und fertig ist die Schnitte.