Forum: Mikrocontroller und Digitale Elektronik Level Shifter selbst bauen, ESP8266, I2C, Bi-Direktional - Welcher MOSFET?


von BeakerBunsenbrenner (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

BeakerBunsenbrenner schrieb:
> Beispiel für so eine Suchmaske im Onlineshop:
> 
https://www.mouser.de/Semiconductors/Discrete-Semiconductors/Transistors/MOSFET/_/N-ax1sf?P=1z0z63xZ1z0y3zr&Rl=ax1sfZgjdhp2Z1y9673jZ1yw78fxSGT

Für I2C oder ein kleines Relais brauchst du sicher keinen 200A-Boliden 
und wenn der FET über DS bis 4V verträgt, sollte das auch ausreichen.

Bei anderen Händlern siehst du auch oft den Lagerbestand (z.B. Digikey), 
was einen Hinweis auf die Beliebtheit gibt.

von BeakerBunsenbrenner (Gast)


Lesenswert?

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.

von BeakerBunsenbrenner (Gast)


Lesenswert?

Hallo auch Wolfgang und Danke!

Also könnte ich z.B. (relativ spontan gegriffen) den hier 
https://www.mouser.de/ProductDetail/Microchip-Technology/2N7000-G?qs=sGAEpiMZZMshyDBzk1%2fWiygxfhfETTT5uuxcYWuVdmw%3d 
nehmen?

von Stefan F. (Gast)


Lesenswert?

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.

von BeakerBunsenbrenner (Gast)


Lesenswert?

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.?

von Stefan F. (Gast)


Lesenswert?

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.

von _Gast (Gast)


Lesenswert?

Warum nicht fertige Module nehmen bzw. die MOSFETs davon?

z.B.
https://www.ebay.com/itm/311523844016

von Wolfgang (Gast)


Lesenswert?

BeakerBunsenbrenner schrieb:
> 
https://www.mouser.de/ProductDetail/Microchip-Technology/2N7000-G?qs=sGAEpiMZZMshyDBzk1%2fWiygxfhfETTT5uuxcYWuVdmw%3d

Im ungünstigsten Fall macht der bereits bei 3.0V V_GS ganz dicht. Da 
wird es mit 3.3V Ansteuerung arg knapp.

Der BSS138 kostet bei R. gerade mal 4ct. Ob der auch für deine Relais 
reicht müsstest du mal prüfen.

von BeakerBunsenbrenner (Gast)


Lesenswert?

@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!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

als Levelshifter kann ich den TXB010x empfehlen.
Simple Beschaltung und robust.
Mit open-train wäre TXS010x.

Falls du mit 3,3V Mosfets ansteuern möchtest, schau dich hier um.
Die sind alle für 2,5V spezifiziert, damit besser als benötigt.

https://www.vishay.com/mosfets/25-rated-on-res/

Beitrag "Re: Logic Level Mosfet und 7A Strom bei sehr geringem R_ds ?"

von Wolfgang (Gast)


Lesenswert?

Veit D. schrieb:
> als Levelshifter kann ich den TXB010x empfehlen.
> Simple Beschaltung und robust.

Sooh viel Aufwand sind zwei FETs, wie von NXP/Philips in der AN10441 
(Level shifting techniques in I2C-bus design) nun auch nicht.
http://www.nxp.com/documents/application_note/AN10441.pdf

von Manfred (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Bauform B. (bauformb)


Angehängte Dateien:

Lesenswert?

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 :(

von Manfred (Gast)


Lesenswert?

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 :-)

von Stefan F. (Gast)


Lesenswert?

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.

von Clemens L. (c_l)


Angehängte Dateien:

Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Ralph S. (jjflash)


Lesenswert?

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.

von Clemens L. (c_l)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Clemens L. schrieb:
> Ich kann nur vermuten, dass dein Shifter versucht hat, einen 2N7000 mit
> 3,3 V zu schalten, oder einen anderen Fehler hatte.

Es war dieses Produkt: 
https://www.elv.de/3-achsen-beschleunigungssensor-3d-bs-komplettbausatz.html?refid=SEM_30003?Gads_Shopping&gclid=EAIaIQobChMI05GX2M7C4AIVB853Ch1xyQLLEAQYASABEgLAd_D_BwE

Leider fehlt dort die Angabe, welche Transistoren ELV verwendet hat. Die 
Pull-Ups musste ich auch erhöhen, weil der Lego Computer recht hohe 
Serien-Widerstände in den beiden Leitungen hat. Vielleicht spielten die 
bei meinem Problem mit dem LOW Pegel auch eine Rolle, da bin ich nicht 
sicher.

von Wolfgang (Gast)


Lesenswert?

Stefanus F. schrieb:
> Leider fehlt dort die Angabe, welche Transistoren ELV verwendet hat.

Du könntest in den Schaltplan gucken. Da steht etwas von IRLML2402
https://www.mikrocontroller.net/attachment/306648/3D-BS_KM_G_100316.pdf

von Clemens L. (c_l)


Lesenswert?

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Ω.)

von BeakerBunsenbrenner (Gast)


Lesenswert?

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!!!

von BeakerBunsenbrenner (Gast)


Lesenswert?

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.

von Clemens L. (c_l)


Lesenswert?

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.

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
Noch kein Account? Hier anmelden.