Ist es möglich, eine einfache Diode und einen Pullup-Widerstand zu verwenden, um den Pegel in eine Richtung nach unten zu verschieben?

Ich arbeite an einer Schaltung, die eine Schnittstelle mit einem 3,3-V-Mikrocontroller (ESP8266) beinhaltet, und ich möchte sie mit meinem vorhandenen FTDI programmieren können, der mit 5 V arbeitet. Ich bin neu im Level-Shifting und wenn ich mich umschaue, sehe ich, dass es verschiedene Ansätze gibt. Meine Frage bezieht sich auf einen Schaltplan, den ich für den ESP8266-Breakout von Adafruit gefunden habe, der hier zu sehen ist: https://cdn-learn.adafruit.com/assets/assets/000/024/745/original/adafruit_products_schem.png .

Zur Pegelverschiebung der RST- und RX-Signale von 5 V auf 3,3 V verwenden sie einfach eine Diode, die "rückwärts" orientiert ist, und lassen den internen Pullup den Rest erledigen. Es scheint so zu funktionieren:

Geben Sie hier die Bildbeschreibung ein

Meine Frage ist also, ist dies ein gültiger Ansatz für eine unidirektionale Pegelverschiebung? Gibt es irgendwelche Fallstricke, dies auf diese Weise zu tun? Ich konnte bei meinen Suchen keine anderen Beispiele für diesen Ansatz finden, daher bin ich mir nicht sicher, ob dies nur eine "schnelle und schmutzige" Methode ist oder ob es aus irgendeinem Grund nur in diesem Szenario funktioniert.

Antworten (1)

Wenn das Signal von links nach rechts wandert, 5 V FTDI-Ausgang zu 3,3 V ESP8266-Eingang, dann wird, wenn der FTDI-Ausgang LOW ist, der Eingang zum Mikro einen Diodenabfall haben, der zur FTDI LOW-Ausgangsspannung hinzugefügt wird. Wenn der FTDI LOW auf ist 100 M v , dann erwarten Sie vielleicht, einen weiteren hinzuzufügen 600 M v 700 M v dazu. Sie müssen Ihre ESP8266-Eingangsspezifikationen überprüfen, um festzustellen, ob der schlimmste Fall vorliegt 800 M v immer noch als LOW-Eingang qualifiziert. Wenn ich sie anschaue, sehe ich, dass das Maximum ist 0,25 v C C = 825 M v . Was für viel Komfort zu nah ist. Die Diode selbst kann sich jedoch möglicherweise am unteren Ende befinden. Da ist vielleicht noch ein kleiner Spielraum. Es ist aber nicht viel.

BEARBEITEN: Da Sie in die Richtung des BSS138 gegangen sind, lassen Sie uns einen Schaltplan dafür einfügen und es ein wenig erklären:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich habe hier drei Schaltpläne mit dem BSS138 hinzugefügt und von dem genommen, was Sie auf Google-Bildern finden, aber wo ich die Spannungszuweisungen umgekehrt habe, damit es geht 5 v Zu 3.3 v . Ich habe die NMOS-Body-Diode hinzugefügt, weil sie wichtig ist. (Diese Schaltungen sind wirklich so ausgelegt, dass sie von 3,3 V bis 5 V funktionieren!) Das obere Schema ist die modifizierte Version. Die unteren beiden darunter zeigen, was passiert, wenn der FTDI-Fahrer fährt 0 v zunächst (links schematisch) und fährt 5 v im zweiten Fall (rechts schematisch.) Beachten Sie, dass es ein kleines Problem gibt?

Die meisten 3,3-V-Eingänge (und ich schätze, das trifft auf den ESP8266 zu) haben Schutzdioden, die wie im Diagramm ganz rechts oben gezeigt erscheinen. Eine Lösung wäre also, einen Vorwiderstand vom NMOS-Drain zum Eingangspin zu legen. Dieser Widerstand müsste groß genug sein, um den Strom in die Schutzdioden zu begrenzen, um die Spezifikationen zu erfüllen (die fast immer sind 2 M A .) In diesem Fall können Sie wählen 4.4 v 3.3 v 600 M v 500 μ A = 1 k Ω .

Aber dann ist die Frage ... warum nicht einfach den Widerstand verwenden und sich auf Ihre Schutzdioden verlassen?

Nun, dies geschieht oft beim Abgang 5 v Zu 3.3 v . Sie lesen das Datenblatt, finden die Schutzdiodengrenzen heraus (ich konnte sie dort nicht finden) und berechnen dann einen geeigneten Widerstand. In diesem Fall würde ich wahrscheinlich davon ausgehen 500 μ A ist das Beste, was ich bereit wäre zu versuchen, wenn ich keine Daten habe, und mich wahrscheinlich auf einen Testwert von einigen würde 200 μ A um zu sehen, wie gut es funktioniert. In diesem Fall würde ich einfach einen Widerstandswert von versuchen 5 v 3.3 v 600 M v 200 μ A = 5.5 k Ω und entscheide dich für a 4.7 k Ω oder ein 5.6 k Ω für den 3,3-V-Eingang zum Mikro, je nachdem, ob die Schutzdioden ihre Arbeit erledigen.

Oder, wenn Sie möchten, könnten Sie sich einen BAV99 besorgen und diesen extern verwenden - mit der Idee, dass Sie sich nicht auf die internen Schutzdioden verlassen wollen. Wenn Sie dies tun, können Sie die letzte Schaltung in der unteren rechten Ecke der obigen Schaltpläne ausprobieren.

Sie könnten dort eine Schottky-Diode verwenden, um den Spielraum zu verbessern. Ein weiteres Problem ist, dass bei solch großen Klimmzügen die Anstiegszeit langsam ist. Kann in einigen Anwendungen nicht wichtig sein, in anderen kann es jedoch kritisch sein.
@JohnD: Ich habe darüber nachgedacht, einen Kommentar zu Schottky-Dioden hinzuzufügen. Ich bin froh, dass Sie es getan haben. Sie lecken viel, aber wahrscheinlich nicht genug, um ein Problem mit dem 10k-Widerstand zu verursachen. Einig auch über die möglichen Probleme mit der Anstiegszeit. Aber das erfordert mehr Nachdenken, um Mengen zu nennen, also habe ich das weggelassen.
Das ist ein guter Punkt. Dies schien mir bereits eine weniger als ideale Lösung zu sein, aber ich habe nicht einmal über die Wirkung des Diodenabfalls nachgedacht. Merkwürdig, dass Adafruit sich entschieden hat, es so zu machen. Was würdest du stattdessen empfehlen? Nur ein einfacher Spannungsteiler?
@kcarbone: Interessiert es Sie, ob das Signal invertiert ist? Bevorzugen Sie Mosfets gegenüber BJTs oder umgekehrt? Welche Stromkonformität unterstützt der FTDI-Chip für seine E/A?
@jonk: Ich würde es vorziehen, das Signal nicht zu invertieren, da es zum Programmieren des ESP8266 verwendet wird. Ich neige dazu, Mosfets zu verwenden, wenn ich kann. Was den aktuell unterstützten betrifft, weiß ich es ehrlich gesagt nicht. Es ist ein älterer FTDI, den ich normalerweise zum Programmieren von 5-V-Atmega-Chips verwende. Ich könnte gerade einen 3,3-V-FTDI bekommen, aber ich war neugierig, wie schwierig es sein würde, von 5 V auf den Pegel zu wechseln.
@kcarbone: dann benutze einen Mosfet. Es ist großartig. Haben Sie nach "Level Shifter 3.3 5" gegoogelt und dann das Google-Bilder-Ding ausgewählt? Dort finden Sie viele Schaltpläne. Wenn Sie der Meinung sind, dass sie in Ordnung sind, werde ich meine Antwort so ändern, dass sie ein bestimmtes Design enthält, das hier in Ordnung sein sollte.
@jonk: Ja, ich sehe den bss138 oft herumgeworfen, also werde ich es wahrscheinlich mit einem davon versuchen. Danke für all eure Hilfe und Infos!
@kcarbone: Siehe dann meine erweiterte Diskussion. Ich habe viel hinzugefügt, damit Sie darüber nachdenken können.