Ich möchte ein 3,3-V-Gerät mit einem 5-V-Gerät verbinden. Dies erfordert das Verschieben der Logikpegel zwischen den beiden Geräten.
Dies in eine Richtung zu tun ist eine triviale Angelegenheit, aber ich muss es in beide Richtungen tun (Lesen und Schreiben - es ist ein Datenbus).
Ich weiß, dass es Busfahrer gibt, die das können, aber ich bin ein Geizhals, also versuche ich zu sehen, ob ich es mit den diskreten Mitteln tun kann, die ich zur Verfügung habe.
Ich bin auf diese Schaltung gekommen:
Ich weiß nicht, ob es tatsächlich das tut, was ich will, aber aus dem Lesen anderer Quellen (einschließlich Ist es möglich, TTL-Eingänge von einem 3,3-V-Mikrocontroller und bidirektionalem Step-up und Step-down (3,3 V <-> 5 usw.) ) [Letzteres erwähnt ein Sparkfun-Tutorial, das nicht mehr existiert]) es könnte.
Mein Gedanke ist, dass Daten von 5 V bis 3,3 V durch D2 und den Vorwiderstand R2 gehen, um die Spannung zu senken. Daten von 3,3 V bis 5 V gehen durch D1 und werden von R1 hochgezogen.
Würde das funktionieren? Ist es komplettes Kauderwelsch?
Aktualisieren
Ok, wir sind uns also einig, dass Circuit totales Kauderwelsch ist.
Ich habe einige Anpassungen vorgenommen und bin auf folgendes gekommen:
Wenn ich mit meinem Oszilloskop herumspiele, bekomme ich Pegel von etwa 1 V bis 4 V auf der +5-V-Seite und 0 V bis 3 V auf der 3,3-V-Seite. Beide Seiten sind standardmäßig auf High-Pegel und das Verbinden mit Masse auf einer Seite verursacht einen Low-Pegel auf der anderen Seite.
Die Widerstände haben alle 10 kΩ, und ich habe beide Enden durch 100 kΩ-Widerstände geführt, um eine Art Last zu simulieren. Die Dioden sind alle Schottky.
Gedanken?
Ich denke, die einfachste Schaltung, die das tut, was Sie wollen, würde einen N-Kanal-MOSFET wie den bss138 und zwei Pull-ups verwenden, die auf folgende Weise angeschlossen sind:
Sagen Sie mir, wenn es Ihren Bedürfnissen nicht entspricht und warum.
Trotzdem muss ich Ihnen empfehlen, einen Blick auf die Pegelwandler der MAX3000-Serie zu werfen. Ich habe sie schon einmal verwendet und sie sind großartige bidirektionale Konverter, die "einfach funktionieren" (in Apple-Begriffen).
Ich hoffe es hilft.
Bearbeiten: Es scheint, als ob das Bild bei einigen Browsern fehlerhaft erscheint, Sie können es hier sehen
Ich wähle Kauderwelsch :-).
Sie werden nicht viel Spannungsabfall über R2 bekommen, da es kaum Strom gibt und daher die Diode auch nicht viel Spannung abfallen lässt. Wenn Ihr 3,3-V-Gerät nicht 5-V-E/A-kompatibel ist, können Sie es auf diese Weise braten.
Auch wenn das 3,3-V-Gerät einen niedrigen Pegel ausgibt, können wir D1 ignorieren, und der Pegel am 5-V-Eingang wird durch R1, D2 und R2 bestimmt. R1 + R2 heben den niedrigen Pegel auf einen bestimmten Pegel an, und die Diode fügt weitere 0,7 V hinzu, sodass der auf der 5-V-Seite gesehene Pegel möglicherweise überhaupt nicht niedrig ist.
Zurück zum Zeichenbrett?
Bearbeiten
Sehen Sie sich diese NXP-Appnote an . Sehr elegante Lösung, ohne speziellen Level-Shifter-IC.
Dieser Stromkreis ist unterbrochen. Betrachten Sie zum Beispiel den Fall, dass die linke Seite 5 V und die rechte Seite eine hohe Impedanz ansteuert. Die rechte Seite geht auf 5 V minus dem Diodenabfall. Es ist auch für andere Fälle kaputt. Gehen Sie alle 4 möglichen Fälle durch, Sie werden sehen, dass das Ergebnis nicht das ist, was Sie beabsichtigt haben.
Sie verschwenden Zeit damit, Spiele mit Level-Shifting zu spielen. Wenn Sie es wirklich selbst machen wollen, sollten Sie nicht mit Strandsand beginnen und Ihr eigenes Silizium veredeln? Im besten Fall erhalten Sie etwas, das größer und klobiger ist als ein absichtlicher Level-Shift-IC.
Single-Line-Pegelumsetzer werden in SOT-23-Gehäusen geliefert und enthalten eine Richtungsleitung und daraus resultierende hochohmige Zustände je nach Richtung. Wenn Sie mehrere parallele Leitungen mit demselben Richtungssignal übersetzen müssen, ist die integrierte Lösung sogar noch kleiner pro Leitung.
Der beste Weg, damit umzugehen, besteht jedoch darin, das System so zu konzipieren, dass es so wenige Pegelverschiebungen wie möglich benötigt. Manchmal ist das unmöglich oder unpraktisch, aber ein ganzer Bus, der Pegelverschiebungen erfordert, ist ein bisschen wie eine rote Fahne. Beachten Sie auch, dass 5-V-Eingänge mit TTL-Pegeln (wie zum Beispiel 74HCTxxx-Chips) direkt von 3,3-V-Ausgängen funktionieren, da 3,3 V über der garantierten hohen Eingangsschwelle liegen.
Ich sehe, Sie haben eine überarbeitete Schaltung gepostet, aber es gibt immer noch Probleme. Wenn die 5-V-Seite niedrig ist, kann sie die 3,3-V-Seite nur auf 2 Diodenabfälle über Masse bringen. Das ist für einige Logiktypen zu hoch. Beispielsweise haben viele PIC-Mikrocontroller Schmitt-Trigger-Eingänge, die von 0,2 Vdd bis 0,8 Vdd arbeiten. 0,2 Vdd wären nur 660 mV bei einer 3,3-V-Versorgung, sodass zwei Diodenabfälle zu hoch sind, um ein logisches Low zu garantieren.
Das wird albern. Selbst wenn Ihre Schaltung funktionieren würde, würde dies nur zeigen, dass Sie mit genügend Kaugummi, Klebeband und 6 Teilen etwas herstellen können, das nicht ganz so gut ist wie ein einzelner billiger IC in einem SOT-23-Paket.
Adam Lawrence
Optimaler Zyniker
stevenvh
stevenvh
Kevin Vermeer
Majenko