mahlzeit, ich habe vor mit einen atmega, welcher mit 3,3V versorgt wird ein led-streifen (ws2812) (5V) zu betreiben. Meine versorgungsspannung sind 5V. da ich auch für andere module 3,3V brauche, wollte ich die 5V mit einem regler auf 3,3V bringen und die anderen Module ebenfalls versorgen. Der LED-streifen wird weiterhin mit den 5V versorgt. Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, funktioniert das? Also der LED-Streifen mit 5V und das Signal nur 3,3V? Da ich die sachen noch nicht hier habe, wollte ich vorerst mal fragen. dementsprechend würde ich dann bestellen
Für solche Zwecke gibts Bausteine wie den 74LVC1T45. 5V an VCCA(1), 3.3V an VCCB(6), GND an GND(2), AVR Signal an B(4) rein, mit 5V Pegel an A(3) raus, DIR(5) auf GND. http://www.ti.com/lit/ds/symlink/sn74lvc1t45.pdf fchk
Marcel schrieb: > Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, > funktioniert das? Nein, das funktioniert nicht zuverlässig. Du brauchst einen Pegelwandler oder musst auf 4V erhöhen.
none schrieb: > uln2003a Das ist ein Leistungstreiber mit Open-Kollktor-Darlington Ausgängen. Außerdem invertiert er das Signal. Der ist völlig ungeeignet.
Direkt vom MC wirst du wohl den Streifen nicht steuern wollen. Also hängst du einen Transistor oder Treiber Baustein dazwischen. Schau mal hier: "Schaltplan für RGB-LED-Steuerung".
Marcel schrieb: > Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, > funktioniert das? Nicht zuverlässig. Beitrag "Re: Pegelwandler für WS2812 LED-Streifen"
Marcel schrieb: > Der LED-streifen wird weiterhin mit den 5V versorgt. > > Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, > funktioniert das? Versorgungsspannung des LED-Streifens und Ansteuersignal sind nicht voneinander abhängig. Zwischen ATmega und LEDs muss normalerweise irgendein Treiber sitzen, da so ein LED-Streifen gewöhnlich mehr Strom benötigt, als ein ATmega an seinem Pin liefern kann. Von der Spezifikation dieses Treibers hängt es ab, ob du den direkt mit den 3.3V des ATmega ansteuern kannst. Ohne ein paar mehr Fakten zu deinem LED-Streifen und dessen Treiber ist das hier reine Kaffeesatzleserei.
sorry, habe den WS2812 überlesen. Im Datenblatt sind die Pegelanforderungen für das Eingangssignal angegeben: Input voltage level V_IH > 0.7 VDD (=0.7 * 5V) V_IL < 0.3 VDD (=0.3 * 5V) Marcel schrieb: > Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, > funktioniert das? Deine Frage muss besser heißen: Steht der Hersteller dafür gerade, dass es unter allen Betriebbedingungen funktioniert? Und da 0.7 * 5V = 3.5V < 3.3V lautet die Antwort NEIN. Du kannst Glück haben, dass es eventuell manchmal noch geht, aber mehr nicht.
tja da haben wir wieder die Thematik Theorie/Datenblatt und Realität. Bei mir laufen 12m SK6812 mit einem ESP8266 als Signslgeber während die Stripes und der ESP direkt am 5V Netzteil hängen und das Steuersignal eben vom ESP kommt. Läuft seit 2 Jahren störungsfrei und vollkommen normal.
Da ist halt die Frage, wie zuverlässig und für wen es sein soll. Nur für dich, Wohnzimmerbeleuchtung? Hänge die 3.3V dran und probiere es. Wird schon laufen. Ansonsten halt gleich mit Pegelwandler richtig machen.
:
Bearbeitet durch User
Moin, Alopecosa schrieb: > Läuft seit 2 Jahren störungsfrei und vollkommen normal. Das mag ja sein, aber wem hilft das weiter, wenns halt mal nicht funktioniert? Und soll man deshalb einfach die Werte aus den Datenblaettern ignorieren? Gruss WK
Das war schon x-mal ein Thema hier im Forum, mit vielfältigen Lösungsvorschlägen. Einer z.B. ist, eine einzelne WS2812 vor den Strang zu schalten, die aber von den 5V über eine Diode zu versorgen, so dass sie statt 5V nur mit 4.3V versorgt wird. Es kann auch die erste im Strang sein, deren VCC man vom Rest abtrennt und die Diode in die VCC-Leitung von der zweiten zur ersten LED legt. 5V VCC wird dann an der zweiten LED eingespeist. Die kommt dann mit dem 3.3V Logiksignal klar und liefert selber 4.3V Logikpegel ab. Das wiederum reicht der zweiten LED und die liefert dann eh die 5V Pegel ab. (Auch wenn dann die erste außerhalb der Spec betrieben wird: ein Versuch zeigte, dass so ein Strang auch noch unterhalb von 3V VCC funktioniert.)
HildeK schrieb: > Das war schon x-mal ein Thema hier im Forum, mit vielfältigen > Lösungsvorschlägen. > Einer z.B. ist, eine einzelne WS2812 vor den Strang zu schalten, die > aber von den 5V über eine Diode zu versorgen, so dass sie statt 5V nur > mit 4.3V versorgt wird. Es kann auch die erste im Strang sein, deren VCC > man vom Rest abtrennt und die Diode in die VCC-Leitung von der zweiten > zur ersten LED legt. 5V VCC wird dann an der zweiten LED eingespeist. > Die kommt dann mit dem 3.3V Logiksignal klar und liefert selber 4.3V > Logikpegel ab. Das wiederum reicht der zweiten LED und die liefert dann > eh die 5V Pegel ab. Genau so habe ich das bei mehreren LED-Strip-Controller-Platinen mit ESP-Mikrocontrollern gemacht. Funktioniert einwandfrei, man ist auf der sicheren Seite, weil man die Spezifikation einhält, die dafür nötige WS281x-LED hat man durch den LED-Strip ja eh, man benötigt also eigentlich nur eine einzige Diode (und optional noch einen 100nF-Kondensator). Die bei dieser Lösung vor den eigentlichen LED-Strip geschaltete RGB-LED agiert dann einerseits als Treiber, und kann andererseits z.B. als vom LED-Streifen unabhängige Status-LED verwendet werden, für die man nicht mal einen einzigen zusätzlichen GPIO-Pin benötigt. Früher habe ich die LED-Streifen direkt mit 3.3V-Signalen vom Mikrocontroller angesteuert, also streng genommen ausserhalb der Spezifikation. In der Praxis hat das meistens auch funktioniert - aber nicht immer. Da kam es dann schon mal zu Störungen oder es hat nicht mehr zuverlässig funktioniert, wenn das Anschlusskabel am LED-Streifen einfach nur minimal länger war. Das kann funktionieren, aber es ist irgendwo ein Glücksspiel.
Frank K. schrieb: > Für solche Zwecke gibts Bausteine wie den 74LVC1T45. 5V an > VCCA(1), 3.3V > an VCCB(6), GND an GND(2), AVR Signal an B(4) rein, mit 5V Pegel an A(3) > raus, DIR(5) auf GND. > > http://www.ti.com/lit/ds/symlink/sn74lvc1t45.pdf > > fchk Korrekt, aber es geht in diesem Fall einfacher, ein beliebiges 75HCT... Gatter reicht (nicht 74HC!). Grund: Die erkennen ab 2V HIGH auch bei 5V, damit kann man auch bei 5V-Versorgung mit 3V3 hineinfahren. Möglich wäre ein 74HCT1G125: http://www.farnell.com/datasheets/1245564.pdf HildeK schrieb: > Das war schon x-mal ein Thema hier im Forum, mit vielfältigen > Lösungsvorschlägen. > Einer z.B. ist, eine einzelne WS2812 vor den Strang zu schalten, die > aber von den 5V über eine Diode zu versorgen, so dass sie statt 5V nur > mit 4.3V versorgt wird. Es kann auch die erste im Strang sein, deren VCC > man vom Rest abtrennt und die Diode in die VCC-Leitung von der zweiten > zur ersten LED legt. 5V VCC wird dann an der zweiten LED eingespeist. > Die kommt dann mit dem 3.3V Logiksignal klar und liefert selber 4.3V > Logikpegel ab. Das wiederum reicht der zweiten LED und die liefert dann > eh die 5V Pegel ab. > > (Auch wenn dann die erste außerhalb der Spec betrieben wird: ein Versuch > zeigte, dass so ein Strang auch noch unterhalb von 3V VCC funktioniert.) Oida... Wer sowas baut, ist ein Makerpfuscher und hat keine Ahnung von Elektronik.
Marcel schrieb: > Wenn jetzt aus dem atmega-pin das LED-Signal auch nur 3,3V beträgt, > funktioniert das? Nein, wegen Wolfgang schrieb: > Und da 0.7 * 5V = 3.5V < 3.3V lautet die Antwort NEIN. aber: Du kannst das Ausgangssignal des ATmega mit einem Widerstand (z.B. 4k7 an 5V)
1 | +5V |
2 | | |
3 | 4k7 |
4 | | |
5 | ATmega--+--WS2812 |
von 3.3V auf 4V hochziehen. Höher geht die Ausgangsspannung zwar nicht wegen der Schutzdioden, aber 4V sind ausreichend für die Schaltschwelle der WS2812. Das erspart echte Pegelwandler, die auch noch schnell sein müssten. Damit erspart man sich: Joachim S. schrieb: > Früher habe ich die LED-Streifen direkt mit 3.3V-Signalen vom > Mikrocontroller angesteuert, also streng genommen ausserhalb der > Spezifikation. In der Praxis hat das meistens auch funktioniert - aber > nicht immer.
:
Bearbeitet durch User
Name: schrieb: > Wer sowas baut, ist ein Makerpfuscher und hat keine Ahnung von > Elektronik. Das habe ich sinngemäss schon mehrfach gelesen. Leider aber noch nie gepaart mit einer guten Begründung.
Michael B. schrieb: > Du kannst das Ausgangssignal des ATmega mit einem Widerstand (z.B. 4k7) > von 3.3V auf 4V hochziehen. Ganz toll, damit betreibt man den Mikrocontroller außerhalb seiner Spezifikation. Er darf dabei so kaputt gehen, ohne dass du dich beschweren kannst. Außerdem erwarte ich schlechte Flanken. Für solche schäbigen Workarounds ist die Übertragungsrate viel zu hoch.
Name: schrieb: > Oida... > Wer sowas baut, ist ein Makerpfuscher und hat keine Ahnung von > Elektronik. Wenn du namenloser Gast das sagst, dann wird es schon stimmen ...
Michael B. schrieb: > aber: > Du kannst das Ausgangssignal des ATmega mit einem Widerstand (z.B. 4k7 > ... > von 3.3V auf 4V hochziehen. Das ist sicher eine sehr bequeme Möglichkeit, den Signalpegel in den spezifizierten Bereich zu ziehen ?
Joachim S. schrieb: > man ist auf der sicheren Seite, weil man die > Spezifikation einhält, Ja, du hasst recht: ich hatte für die untere Grenze für VCC 4.5V im Hinterkopf, tatsächlich sind es aber nur 3.5V. Also, alles grün, man ist in Spec und die Variante ist die Einfachste!
Stefan ⛄ F. schrieb: > Ganz toll, damit betreibt man den Mikrocontroller außerhalb seiner > Spezifikation. Er darf dabei so kaputt gehen, ohne dass du dich > beschweren kannst. Wegen 250µA durch die Schutzdiode geht da gar nichts kaputt. Wer die Innenschaltung des GPIO vom µC verstanden hat, der darf das. Selbst Atmel schlägt das in einer AppNote vor - ich such sich jetzt aber nicht raus.
Wolfgang schrieb: > Wegen 250µA durch die Schutzdiode geht da gar nichts kaputt. Sehr wahrscheinlich nicht, insofern hast du Recht. Es ist halt nur leider nicht spezifiziert... > Selbst Atmel schlägt das in einer AppNote vor - ich such sich jetzt aber > nicht raus. Mach' mal bitte... Ich hantiere jetzt nämlich seit 15 Jahren mit den Teilen. Ich habe in der ganzen Zeit NICHTS gefunden, wo Atmel irgendwas zur Strombelastbarkeit der Schutzdioden garantiert, dafür aber in JEDEM DB Spannungsbegrenzungen, die nahelegen, dass man die Schutzdioden wohl möglichst nicht in den leitenden Zustand bringen sollte, zumindest jedenfalls nicht dauerhaft...
c-hater schrieb: > Mach' mal bitte... Das ist die AppNote "AVR182: Zero Cross Detector" Da schicken sie allerdings Netzspannung über einen Widerstand auf den GPIO http://ww1.microchip.com/downloads/en/Appnotes/Atmel-2508-Zero-Cross-Detector_ApplicationNote_AVR182.pdf
HildeK schrieb: > Wenn du namenloser Gast das sagst, dann wird es schon stimmen ... Ganz unrecht hat er nicht. Ich bin bei dem Thread hier immer wieder erstaunt wie viel Energie in halbgare Lösungen investiert wird. Obwohl es doch so schöne fertige und preiswerte Lösungen wie die 74LVC.. gibt!
Andre schrieb: > Ich bin bei dem Thread hier immer wieder > erstaunt wie viel Energie in halbgare Lösungen investiert wird. Was ist an eine (Schutz)-Diode und einem Pull-up Widerstand halbgar? Ok, das hat jetzt mit Mikrocontroller oder digitaler Elektronik nicht direkt etwas zu tun, aber ein bisschen Kennnisse in Analogelektronik können manch aufwändigeres Transistorgrab (74LVC..) als übertrieben erscheinen lassen.
c-hater schrieb: > Ich habe in > der ganzen Zeit NICHTS gefunden, wo Atmel irgendwas zur > Strombelastbarkeit der Schutzdioden garantiert, dafür aber in JEDEM DB > Spannungsbegrenzungen, die nahelegen, dass man die Schutzdioden wohl > möglichst nicht in den leitenden Zustand bringen sollte, zumindest > jedenfalls nicht dauerhaft... Für eine *Spannu#ng* ist das klar, einen Strom konnte man angeben und einen Maximalwert wäre auch feststellbar von denen. Xilinx (klar, ist hier nicht in der Diskussion) hat mal für den Betrieb eines 1.8V-Eingangs an 3.3V eine Beispielschaltung angegeben. Der Strom war ca. 10mA ...
Wolfgang schrieb: > http://ww1.microchip.com/downloads/en/Appnotes/Atmel-2508-Zero-Cross-Detector_ApplicationNote_AVR182.pdf Danke, da steht doch tatsächlich ein ganzer Satz drin, wo sie irgendwas spezifizieren: > The series resistor can also be modified to make the detection closer but > note that the maximum current > through the AVR’s clamping diode should not be higher than 1mA. Ich frage mich, warum dieser Wert dann nicht einfach auch in den Datenblättern steht. Das ist doch was, worauf man in vielen Anwendungen aufbauen könnte. Das sollte also im DB stehen.
c-hater schrieb: > Ich frage mich, warum dieser Wert dann nicht einfach auch in den > Datenblättern steht. Das ist doch was, worauf man in vielen Anwendungen > aufbauen könnte. Ja ist schade. Vielleicht wollen sie sich dort künftige Änderungen offen halten.
c-hater schrieb: > Das sollte also im DB stehen. Sehe ich auch so. Stefan ⛄ F. schrieb: > Vielleicht wollen sie sich dort künftige Änderungen offen halten. Mit der Angabe eines garantierten, offiziell zulässigen Maximalwertes von z.B. 1mA würden sie sich IMHO nicht weh tun.
Joachim S. schrieb: > Name: schrieb: >> Wer sowas baut, ist ein Makerpfuscher und hat keine Ahnung von >> Elektronik. > > Das habe ich sinngemäss schon mehrfach gelesen. Leider aber noch nie > gepaart mit einer guten Begründung. Man verheizt viele Watt in einer Diode, wenn man auch einen Pegelshiftern nehmen kann, der mit wenigen µW zurechtkommt? Bei längeren Stripes kommt da schon einiges zusammen an Verlusten. Wenn du 5A hast, sind das mindestens 3,5W. Allein der Kühler für die Diode ist teurer als ein Pegelshifter. Dazu verbrennt man Spannung, die man speziell bei längeren Stripes schon mal gebrauchen kann. Die LED ganz hinten bekommen nämlich durch den Spannungsabfall weniger Spannung ab als die vorn, und umso weniger man hineinlässt, umso eher bekommt man hinten raus Probleme.
Blumpf schrieb: > Bei längeren Stripes kommt da schon einiges zusammen an Verlusten. Wenn > du 5A hast, sind das mindestens 3,5W. > Allein der Kühler für die Diode ist teurer als ein Pegelshifter. Warum sollte eine einzige WS2812 einer zum Absenken der VDD vorgeschalteten Diode einen Strom von 5A ab verlagen. Du hast das Prinzip noch nicht verstanden.
Blumpf schrieb: > Bei längeren Stripes kommt da schon einiges zusammen an Verlusten. Nein. Die ERSTE Lampe wird durch die Diode versorgt. Die erste LED hat eine Versorgungsspannung von 4.3V. Der 3.3V-Logikpegel vom Controller ist damit innerhalb der Spec. Alle weiteren LEDs haben eine Versorgungsspannung von 5V. Der 4.3V-Logikpegel(!) der ersten LED damit innerhalb der Spec. Man muss andere Menschen nicht grundsätzlich für vollkommen bescheuert halten.
Michael B. (laberkopp) schrieb: >Du kannst das Ausgangssignal des ATmega mit einem Widerstand (z.B. 4k7 >an 5V) > > +5V > | > 4k7 > | >ATmega--+--WS2812 > >von 3.3V auf 4V hochziehen. Und ich dachte, CMOS-Gegentaktendstufen (welche es ja sicherlich beim ATmega sind) lassen sich nicht einfach durch einen hochohmigen Pullup verscheißern. Da würde ich noch eine Diode direkt in die Ausgangsleitung schalten, um den Grundpegel generell zu erhöhen. Hier mal noch eine schmutzige Variante: Schalte einfach eine Diode in Durchflußrichtung in die Masseleitung zw. LED-Streifen und ATMega (inkl. seinem 3,3V-Regler). Die 5V-Spannungsquelle muß dann an die LED-seitige Masse. Damit wird der Grundpegel bzw. dessen Logiksignale um irgendwas um die 0,6V nach oben verschoben, und man liegt voll im erlaubten Bereich für L und H. Man sollte sich halt nur bewußt sein, daß ATMega-Masse und LED-Masse nicht mehr so ganz daselbe ist, wenn man da noch anderen Krimskrams mit anschalten will.
Blumpf schrieb: > Bei längeren Stripes kommt da schon einiges zusammen an Verlusten. Wenn > du 5A hast, sind das mindestens 3,5W. Wenn du 5A hast, ja. Eine WS2812 hat aber maximal 60mA, mit 0.7V Flussspannung sind das gerade mal 42mW. Und du musst ja nur die erste LED in der Kette mit etwas weniger Spannung versorgen. Das ist verkraftbar, spezielle wenn man den minimalen Aufwand dafür in Betracht zieht.
HildeK schrieb: > Eine WS2812 hat aber maximal 60mA die müssen aber erst mal fliessen, evtl. eine Grundlast hinter der Diode setzen, auch 60mA Grundlast + 60mA für die WS bei voller Helligkeit überlastet keine Diode.
Jens G. schrieb: > Und ich dachte, CMOS-Gegentaktendstufen (welche es ja sicherlich beim > ATmega sind) lassen sich nicht einfach durch einen hochohmigen Pullup > verscheißern. Naja, es sind im Prinzip natürlich PushPull-Ausgänge, man kann sie aber auch als OpenDrain verwenden. Der Trick ist einfach: statt auf "aktiv High" schaltet man sie auf "Eingang". Der OpenDrain-Ausgang wird also insgesamt so realisiert: PORTXn auf Low initialisieren (nach Reset nichtmal nötig, da das der default-Wert ist) und dann nur noch mit DDXn hantieren. 1="Aktiv low"; 0="high Z". Es ist im zweiten Fall also nur noch der (externe) Pullup wirksam. Dass die Sache bezogen auf das DDXn-Bit invertiert ist, ist kein Problem, muss man halt bloß dran denken und entsprechend programmieren. Blöd ist eher, dass viele Peripherie-Einheiten zwar PORTXn "übernehmen" können, um ihre Ausgaben zu tätigen, aber nicht DDXn. Sprich: Dieser Trick geht nur für Bit-Banging. Einige wenige Peripherie-Einheiten haben allerdings auch direkte Unterstützung für OpenDrain-Funktionalität eingebaut. TWI und USI (im TWI-Mode).
Die Open drain Pins findet man wenn man einen Taster anschließt und sich wundert warum der nicht funktioniert:)
Wolfgang schrieb: > Was ist an eine (Schutz)-Diode und einem Pull-up Widerstand halbgar? Spontan fallen mir zwei Dinge ein: Man muss es im Programm berücksichtigen und den Pin statt auf High, auf Eingang konfigurieren. Damit funktionieren alle "schönen" Ansteuerungen über DMA & Timer nicht mehr. Außerdem versaust du dir mit einem Pull-Up die Anstiegszeit. Das mag funktionieren, aber wenn zwischen Controller & LEDs mal 30cm Kabel liegen kann es dir auf die Füße fallen. Wie gesagt, ich empfinde das als halbgar. Auch als Hobbyist kann man solide designen. Also im Fall LED Controller, einen sauberen Datenausgang mit Pegelwandler bauen. Gerne mit kleinem Serienwiderstand gegen Reflektionen und ner simplen Schutzdiode. Das kostet in den Bastler-Stückzahlen "nichts" und man bekommt ein Produkt dass sogar langlebiger als kommerzieller Kram ist. Aber vielleicht habe ich ans "basteln" auch einfach andere Ansprüche.
c-hater (Gast) schrieb: >Jens G. schrieb: > >> Und ich dachte, CMOS-Gegentaktendstufen (welche es ja sicherlich beim >> ATmega sind) lassen sich nicht einfach durch einen hochohmigen Pullup >> verscheißern. > >Naja, es sind im Prinzip natürlich PushPull-Ausgänge, man kann sie aber >auch als OpenDrain verwenden. Der Trick ist einfach: statt auf "aktiv >High" schaltet man sie auf "Eingang". > >Der OpenDrain-Ausgang wird also insgesamt so realisiert: Ja, kann man machen. Ich glaube aber nicht, daß der TO das so macht, und er wurde ja auch nicht darauf hingewiesen.
Andre schrieb: > Damit funktionieren alle "schönen" Ansteuerungen über DMA & Timer nicht > mehr. Die Einschränkung auf Grund von nicht funktionierender Ansteuerung per DMA kann ein ATmega verschmerzen ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.