Hallo zusammen,
für die Verwendung meines ESP8266 in Kombination mit diversen
5V-Bauteilen, darunter vor allem Verwendung über I2C (aber evtl. auch
z.B. 5V-Relais schalten), benötige ich einen Level Shifter.
Dazu konnte ich hier allerhand bereits finden, sogar auch konkrete
Empfehlungen für die MOSFETs der Schaltung. Nur leider gibt es die
konkret genannten (z.B. BSS88 und 83) nicht praktikabel zu kaufen (oder
z.B. BSS83 wird mir nur als p-channel angeboten). An anderer Stelle
wurde pauschal die Gruppe 74HCxxx genannt, und dennoch stehe ich im
Online-Shop auf dem Schlauch, obwohl ich eigentlich alle relevanten
Daten haben müsste. Deshalb trage ich erst nochmal kurz die empfohlene
Schaltung und gefundene Infos zusammen:
Diese Schaltung:
https://www.mikrocontroller.net/attachment/246465/I2C-Level-Shifter_NXP_AN10441.png
Auch hier ausführlicher : AppNote97055
https://cdn-shop.adafruit.com/datasheets/an97055.pdf
dort steht:
Type :N-channel enhancement mode MOS-FET.
Gate threshold voltage : VGS(th)min. 0.1Vmax. 2V
On resistance :RDS(on) max. 100 Ohm @ ID= 3mA, VGS= 2.5V
Input capacitance :Cissmax. 100 pF @ VDS= 1V,
VGS = 0V
Switching times :ton toffmax. 50 ns.
Allowed drain current :ID 10 mA or higher.
und als Beispiele:
TYPE VGS(th) RDS(on) Ciss Package
BSN10 min. 0.4V max. 1.8V 25 Ohm 15 pFTO-92
BSN20 min. 0.4V max. 1.8V 25 Ohm 15 pFSOT23
BSS83 min. 0.1V max. 2.0V 70 Ohm 1.5 pF) SOT143
BSS88 min. 0.4V max. 1.2V 15 Ohm 50 pF TO-92
Wenn ich aber diese Werte (also VGS(th), RDS(on), ID, ...) in der
Suchmaske eines Onlineshops eingebe, bekomme ich reichlich angezeigt,
weiß aber trotzdem nicht, worauf ich achten muss. Manche sind z.B. bis
40 V ausgelegt, andere viel höher oder niedriger. Natürlich muss die
Bauform geeignet zum Verlöten in Lochplatine sein. Und eigentlich hoffe
ich ja, dass das Stück 10 Ct kostet und nicht 3 Euro.
Beispiel für so eine Suchmaske im Onlineshop:
https://www.mouser.de/Semiconductors/Discrete-Semiconductors/Transistors/MOSFET/_/N-ax1sf?P=1z0z63xZ1z0y3zr&Rl=ax1sfZgjdhp2Z1y9673jZ1yw78fxSGT
(In dem Link ist bereits ein Suchfilter angewendet. Ggf. muss an "Alle
zurücksetzen" anklicken, um den Filter aufzuheben.)
Wer kann mir hier kurz helfen, oder sind die wirklich so teuer?
Schöne Grüße
Zum Schalten von Relais kannst den einzelne Transistoren (z.B. BC337-40)
oder den ULN2803 verwenden. Die kommen mit 3,3V gut aus.
Bausteine die mit 5V versorgt werden funktionieren in der Regel tadellos
an einem I²C Bus, der 3,3V hat.
Wenn du unbedingt so einen MOSFET Levelshifter bauen willst, kannst du
dafür jeden Kleinleistungs Transistor nehmen, der eine gate-Threshold
Voltage von deutlich weniger als 3V hat. Auf die weiteren Feinheiten
der technischen Daten kommt es nicht an.
Aber diese Methode ist auch nicht ohne Probleme. Zum Beispiel
verschlechtert sie den Low-Pegel von annähernd 0 Volt auf ca. 0,7 Volt.
Ich würde mir das nur antun, wenn es unbedingt sein muss.
Verwende lieber einen PCA9306, den liefert saubere Signalpegel. Du
bekommst ihn bei Reichelt und Conrad.
Hallo Stefanus F. und danke für die Antwort,
diese PCA9306 oder ähnliches habe ich ja durchaus in Betracht gezogen,
aber die Schaltung im Link ist ja an und für sich identisch, oder nicht?
(Natürlich ist das gekaufte Teil nicht einfach zusammengebraten, sondern
vernünftig gefertigt, davon abgesehen). Kosten ja aber jedesmal 3-6 Euro
(je nach Versand, zehnerpack bei solchen Preisen ist nicht so meines nur
auf Verdacht). Wenn es selbstgebraten günstiger ist, vom Platz her wohl
ohnehin, wenn ich eh eine Platine zusammenbrate, wäre das schon schön.
Aktuell brauche ich I2C eigentlich nur für Displays. Da müsste ja
unidirektional reichen. Vorerst könnte ich also wirklich verzichten,
wenn ich Dich richtig verstehe.
BeakerBunsenbrenner schrieb:> diese PCA9306 oder ähnliches habe ich ja durchaus in Betracht gezogen,> aber die Schaltung im Link ist ja an und für sich identisch, oder nicht?
Nein ist sie nicht. In dem IC befindet sich eine kluge Logikschaltung,
die saubere Signalpegel und höhere Frequenzen ermöglicht.
Ich habe so einen Pegelwandler schon einmal verwenden wollen, und zwar
an einem Lego Mindstorms NXT Computer (da steckt ein ARM Controller mit
3,3V drin). Das ist wegen der unsauberen Low Pegel voll in die Hose
gegangen.
Ok. Da habe ich mich dann wohl vorher zu oberflächlich informiert und zu
grob draufgeschaut. Aber wie gesagt, fürs Display und Relais sind die
Levelshifter auch nicht zwingend, sondern wohl eher bei Kommunikation
z.B.?
BeakerBunsenbrenner schrieb:> Ok. Da habe ich mich dann wohl vorher zu oberflächlich informiert> und zu> grob draufgeschaut. Aber wie gesagt, fürs Display und Relais sind die> Levelshifter auch nicht zwingend, sondern wohl eher bei Kommunikation> z.B.?
Schau ins Datenblatt der I²C Chips, dort steht klar drin, welchen pegel
die als "High" erfordern. Und behalt e im Hinterkopf, dass die meisten
mit 3,3V versorgten IC's problemlos ein paar hundert mV mehr vertragen.
Dass heisst, du könntest die Pull-Up Widerstände des I²C Bus auf 3,7V
hängen.
@Wolfgang: In irgendeinem Thread hat den meine ich auch jemand für
diesen Zweck empfohlen. Hatte ich bisher aber auch nicht gefunden. Den
nehme ich dann mal. Ist so schön günstig ;))
@ _Gast: Die Module wurden ja schon angesprochen. Allerdings ist der von
Dir verlinkte Artikel auch fast wirklich ausgesprochen preiswert. Bisher
fand ich die nur erheblich teurer.
@Stefanus: Das wird dann erstmal so gemacht. Aber das hier nochmal
zusammen zu tragen wird sicher nicht für andere Leute wie mich geschadet
haben. Ich denke aber, ich bestelle und bastel mir das trotzdem mal und
schau mal, wie gut das funktioniert.
Damit habe ich ja jetzt eigentlich alle Infos. ALSO DANKE AN ALLE! und
schöne Grüße!
BeakerBunsenbrenner schrieb:> Aktuell brauche ich I2C eigentlich nur für Displays. Da müsste ja> unidirektional reichen.
Nein, I2C braucht prinzipbedingt bidirektionale Treiber. PCA9517 ist ein
brauchbarer Kandidat dafür.
Veit D. schrieb:> Mit open-train wäre TXS010x.
Mit öffentlicher Eisenbahn :-)
In Bastelprojekten setze ich den TXS0108E ein, den gibt es auf
Platinchen billig beim Chinesen.
Ebenfalls vom Chinamann hatte ich ein paar FET-Boards, die Transistoren
haben als Marking "J1". Ein Datenblatt von Taitron hat dieses Marking
für den BS138.
Bei Siemens und Fairchild heißt der BS138 "SS", Diodes nennt ihn "K38".
Schaue ich in die Applikationsschrift AN97055 von Philips, stehen dort
Eckdaten der FETs, die der BSS138 erfüllen dürfte.
Wolfgang schrieb:> wie von NXP/Philips in der AN10441
Ist das eine verpfuschte Neuauflage der AN97055?
Manfred schrieb:> Wolfgang schrieb:>> wie von NXP/Philips in der AN10441>> Ist das eine verpfuschte Neuauflage der AN97055?
Ja, äh, nein, nur ans twitter-Zeitalter angepasst. Der moderne User
fühlt sich von zuviel Information leicht überfordert :(
Bauform B. schrieb:>> Ist das eine verpfuschte Neuauflage der AN97055?> Ja, äh, nein, nur ans twitter-Zeitalter angepasst.
Diese Formulierung gefällt mir, werde ich mir merken :-)
Wolfgang schrieb:> Sooh viel Aufwand sind zwei FETs ... nun auch nicht.
Darum geht es nicht. Es geht um die doppelte Belastung der Treibenden
Seite* und schlechte Low Pegel.
*) Was bei 2x10kΩ noch nicht auffällt, aber die sind ohnehin zu hoch
gewählt. Normalerweise würde man mit maximal 4,7kΩ auf der 5V Seite und
maximal 3,3kΩ auf der 3,3V Seite arbeiten.
Diese zwei-Transistor Schaltung ist ein mieser Kompromiss für
Pfennigfuchser.
Dazu kommt noch, dass man in den allermeistens Fällen gar keine
Levelshifter braucht, sondern den Bus mit 3,3V (oder notfalls 3,7V)
betreiben kann.
Stefanus F. schrieb:> MOSFET Levelshifter ...> verschlechtert den Low-Pegel von annähernd 0 Volt auf ca. 0,7 Volt.
Wie kommst du darauf? Hast du das gemessen?
Wenn am Drain 0 V ist, dann erzeugt die Body-Diode erst mal 0,7 V am
Source, wodurch der MOSFET anschaltet, und am Source dann auch ungefähr
0 V ist.
> Verwende lieber einen PCA9306, den liefert saubere Signalpegel.
Der PCA9306 benutzt auch nur MOSFETs. Details siehe
http://www.ti.com/lit/pdf/slva675.
Clemens L. schrieb:> Wie kommst du darauf? Hast du das gemessen?
Kleiner Hinweis: Der von Dir gerade gezeigte Schaltplan entspricht nicht
dem Levelshifter (mit nur einem Transistor pro Signal), den wir hier
diskutieren.
Ich habe weiter oben beschrieben, dass ich in Kombination mit Lego
Mindstorms NXT auf ein akutes Problem gestossen bin. Und ja, ich habe
mir die Signale auf dem Oszilloskop angeschaut. Der NXT kommuniziert
übrigens mit extra lahmen 9600 Hz an SCL.
Stefanus F. schrieb:> Diese zwei-Transistor Schaltung ist ein mieser Kompromiss für> Pfennigfuchser.
... hängt davon ab, was man machen möchte. Bis 100 kHz hat es bisher gut
funktioniert, darüber war es kritisch.
Stefanus F. schrieb:> Kleiner Hinweis: Der von Dir gerade gezeigte Schaltplan entspricht nicht> dem Levelshifter (mit nur einem Transistor pro Signal), den wir hier> diskutieren.
Es ist der Schaltplan des PCA9306. Der separate MOSFET für die
Gate-Spannung erlaubt es, beim Heruntershiften von B zu A den Pullup an
A wegzulassen, ändert aber nichts an der grundsätzlichen Funktionsweise.
Wie oben beschrieben, gibt es keinen Grund, warum ein 1-MOSFET-Shifter
0,7 V ausgeben sollte.
> Ich habe weiter oben beschrieben, dass ich in Kombination mit Lego> Mindstorms NXT auf ein akutes Problem gestossen bin.
Wenn der 1-MOSFET-Shifter dieses Problem hätte, dann hätte es der
PCA9306 auch.
Ich kann nur vermuten, dass dein Shifter versucht hat, einen 2N7000 mit
3,3 V zu schalten, oder einen anderen Fehler hatte.
Stefanus F. schrieb:> Die Pull-Ups musste ich auch erhöhen, weil der Lego Computer recht hohe> Serien-Widerstände in den beiden Leitungen hat.
Damit baut man einen Spannungsteiler. (0,7 V erhält man mit ca. 1 kΩ.)
Hallo nochmal zusammen,
wollte zwar gestern eigentlich schon bestellen, hatte es aber wegen
Wochenende nicht eilig und auf jetzt gleich verschoben - weshalb ich
gerade hier nachschaue. Und hier hat sich ja noch richtig was getan!
Alle Achtung!
Dann baue ich mir jetzt so einen Phillips-Level-Shifter mal aus Prinzip
und berichte hier, wie gut oder schlecht es für mich als interessierten
Laien und Anfänger geklappt hat. Ich suche mir jetzt aus den gesammelten
Infos die für mich plausibelste Variante raus und bestelle gleich mal
(allerdings nicht in China, dauert mir zu lange). Gut finde ich auch,
dass hier die verschiedene aka-Namen für den BSS138 genannt wurden. Um
das herauszufinden, hätte ich mindestens tagelang suchen und
zusammenreimen müssen, selbst wenn es irgendwo ein Standardwerk gibt,
das ich nicht kenne, wo alle Aliase drinstehen.
Nochmals vielen Dank für so viele gute Rückmeldungen!!!
Witzig, oder auch nicht. Auf jedenfall verrückt. Jetzt suchte ich den
BSS138 als THT-Version zu kaufen, fand ja nur SMDs und finde plötzlich
unter dem Suchbegriff "BSS138 DIP" quasi "eine alte englische Version
dieses Threads". Google hat mir vorher nichts in der Richtung geliefert.
Schaut mal hier, ich hänge das mal an:
https://forum.arduino.cc/index.php?topic=124826.0
Ist ja fast schon ein Deja-Vu ;)
Da es den BSS138 und seine Klone nur als SMD gibt, auch die anderen
netterweise verlinkten alle SMDs sind, würde ich jetzt zu 2N7000
tendieren, wobei Clemens L. hier ja darauf hinwies, dass in Kombination
mit dem Probleme sein könnten?!
Ich bestelle mir genau jetzt trotzdem ein paar und bei der Gelegenheit
auch ein paar Transistoren, wie Stefanus meinte für Relais etc.
BeakerBunsenbrenner schrieb:> ... würde ich jetzt zu 2N7000 tendieren, wobei Clemens L. hier ja darauf> hinwies, dass in Kombination mit dem Probleme sein könnten?!
Bei weniger als 5 V am Gate gibt es keine Garantie mehr, dass er voll
durchschaltet. In der Praxis wird es für kleine Ströme aber meist
funktionieren.
TO-92-MOSFETs mit kleiner Gatespannung gibt es, z.B. ZVNL120A, TN0702.