Forum: Mikrocontroller und Digitale Elektronik ESP 1-wire PullUp's auf beiden Seiten des LevelShifters 3.3V<>5V?


von Achim A. (achim_a)


Angehängte Dateien:

Lesenswert?

Hallo

ich habe hier verschieden Temp und auch Temp/Feuchte Sensoren wie 
DS18B20 und DHT Sensoren.

Damit beide stabil laufen sollte man diese mit 5V betreiben.
Da ich einen 3.3V ESP nutze den man auch auf der Datenleitung nur mit 
max 3.3V anfahren sollte, nutze dafür LevelShifter von 3.3V auf 5V.

auf dem Schema von Texas Instruments sah ich das zumindest beim I2C Bus 
auf beiden Seiten ein Pullup empfohlen wird

Ist das bei einem bi-direktionalen LevelShifter von  3.3V auf 5V auch so 
dass man auf der 3.3V Seite und auf der 5V Seite einen Pullup setzen 
sollte?

edit: suche ich hier unter google so gibt mir die KI aus, dass man den 
PulLUp nur auf der 5V Seite benötigt. Stimmt das?

: Bearbeitet durch User
von Andreas G. (andy1024)


Lesenswert?

Hallo Achim,

ich würde einen IIC Levelshifter einsetzen z.B. TCA9517. Du brauchst auf 
beiden Seiten PullUp Widerstände. Auf der 5V Seite würde ich 4K7 nehmen 
und auf der 3V3 Seite 3K3.
Einen Switch brauchst du meines Erachtens nicht, den brauchst du nur 
wenn du die Slave Adresse nicht ändern kannst.

Gruß
Andreas

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Achim A. schrieb:
> edit: suche ich hier unter google so gibt mir die KI aus, dass man den
> PulLUp nur auf der 5V Seite benötigt. Stimmt das?

Wie immer:
Auf keinem Fall einer Dokumentation glauben schenken, die vom Hersteller 
kommt!

Lieber einer Ahnungslosen Lügenmaschine trauen.

Merke:
Je größer die Lüge, desto glaubwürdiger sie ist.

von Falk B. (falk)


Lesenswert?

Achim A. schrieb:
> edit: suche ich hier unter google so gibt mir die KI aus, dass man den
> PulLUp nur auf der 5V Seite benötigt. Stimmt das?

Nö. Der Klassiker aus 2 MOSFETs, der auch in sehr ähnlicher Form in 
vielen integrierten Pegelwandlern stecket, braucht auf jeder Seite einen 
Pull-Up. Die integrierten haben sie teilweise schon eingebaut, Nomen est 
Omen!.

Ergo. Zeig mal einen Schaltplan mit konkreten Beuteilen.

von Jens M. (schuchkleisser)


Lesenswert?

Die DS18B20 tun es ganz hervorragend auch mit 3,3V VCC.

Das Texasdings ist ein Multiplexer und da es da auch die Möglichkeit 
gibt das keiner der Busse genutzt wird brauchts da an beiden Enden 
Pullups.

Die normalen Levelshifter für I²C brauchen ebenfalls an beiden Seiten 
einen.
Ob man SHT und DS18B mit einem I²C-Shifter betreiben kann weiß ich nicht 
nehme es aber an.

von Rainer W. (rawi)


Lesenswert?

Achim A. schrieb:
> Ist das bei einem bi-direktionalen LevelShifter von  3.3V auf 5V auch so
> dass man auf der 3.3V Seite und auf der 5V Seite einen Pullup setzen
> sollte?

Das hat nichts mit "sollte" zu tun.

Hast du dich schon einmal mit den Grundlagen vom I2C-Bus beschäftigt?
Woher soll bei einem Bus-System mit rezessivem High-Pegel der High-Level 
kommen, wenn nicht durch einen Pull-Up (oder eine Stromquelle)?

p.s.
Was hat das "1-wire" im Titel mit dem I2C-Bus zu tun?

von Jens M. (schuchkleisser)


Lesenswert?

Rainer W. schrieb:
> Woher soll bei einem Bus-System mit rezessivem High-Pegel der High-Level
> kommen

Da dürfte die Vermutung eines nicht-ganz-so-tiefen-Technikers sein, das 
der Levelshifter evtl. "durchsichtig" ist?

Rainer W. schrieb:
> Was hat das "1-wire" im Titel mit dem I2C-Bus zu tun?

Sowohl der DS18B20 als auch die DHT-Sensoren nutzen ein einstrippiges 
Protokoll, und der verwendete Levelshifter ist nicht 
I²C-Protokollspezifisch, wird aber oft so bezeichnet weil er halt 2 
Kanäle hat.

von Achim A. (achim_a)


Lesenswert?

Andreas G. schrieb:
> ich würde einen IIC Levelshifter einsetzen z.B. TCA9517. Du brauchst auf
> beiden Seiten PullUp Widerstände. Auf der 5V Seite würde ich 4K7 nehmen
> und auf der 3V3 Seite 3K3.

Hallo,
ich setze hier einen TXS0108 bi-dierktionalen LevelShifter ein, da ich 
ein paar Ports noch mehr haben wollte als die üblichen 4-Kanal

Ok dann habe ich das so verstanden das man sowohl die 3.3V Seite als 
auch die 5V Seite auf der Datenleitung mit Pullupos stabilisieren 
sollte.

Vielen Dank für die Info

von Achim A. (achim_a)


Lesenswert?

Andreas G. schrieb:
> ich würde einen IIC Levelshifter einsetzen z.B. TCA9517. Du brauchst auf
> beiden Seiten PullUp Widerstände. Auf der 5V Seite würde ich 4K7 nehmen
> und auf der 3V3 Seite 3K3.

Hallo,
ich setze hier einen TXS0108 bi-dierktionalen LevelShifter ein, da ich 
ein paar Ports noch mehr haben wollte als die üblichen 4-Kanal

Ok dann habe ich das so verstanden das man sowohl die 3.3V Seite als 
auch die 5V Seite auf der Datenleitung mit Pullupos stabilisieren 
sollte.

Vielen Dank für die Info

Falk B. schrieb:
> 2 MOSFETs, der auch in sehr ähnlicher Form in
> vielen integrierten Pegelwandlern stecket

ich vermute mal der von mir genutze TXS0108  ist so ein 
Mosfet-levelShifter

von Rainer W. (rawi)


Lesenswert?

Jens M. schrieb:
> Sowohl der DS18B20 als auch die DHT-Sensoren nutzen ein einstrippiges
> Protokoll, ...

Richtig, wobei nur der DS18B20 1-Wire® (Analog Devices, Maxim 
Integrated, Dallas) verwendet. Der DHT22 nutzt ein eigenes Protokoll. 
Beide Sensoren können sowohl mit 3,3V als auch mit 5V arbeiten, so dass 
eine Pegel-Shifterei doch eher überflüssig erscheint. Oder was sind das 
für "DHT-Sensoren"?

von Falk B. (falk)


Lesenswert?

Achim A. schrieb:
> Hallo,
> ich setze hier einen TXS0108 bi-dierktionalen LevelShifter ein, da ich
> ein paar Ports noch mehr haben wollte als die üblichen 4-Kanal

Der ist vollintegriert.

> Ok dann habe ich das so verstanden das man sowohl die 3.3V Seite als
> auch die 5V Seite auf der Datenleitung mit Pullupos stabilisieren
> sollte.

Nein, die hat der IC schon eingebaut, ca. 4k.

>> 2 MOSFETs, der auch in sehr ähnlicher Form in
>> vielen integrierten Pegelwandlern stecket
>
> ich vermute mal der von mir genutze TXS0108  ist so ein
> Mosfet-levelShifter

Noch viel mehr, da steck viel Know How drin.

von Nemopuk (nemopuk)


Lesenswert?

Die Pull-up Widerstände gehören so sehr zum I2C Bus, wie die Gummibänder 
zum Expander.

von Achim A. (achim_a)


Angehängte Dateien:

Lesenswert?

Jens M. schrieb:
> Die DS18B20 tun es ganz hervorragend auch mit 3,3V VCC.
>
> Das Texasdings ist ein Multiplexer und da es da auch die Möglichkeit
> gibt das keiner der Busse genutzt wird brauchts da an beiden Enden
> Pullups.
>
> Die normalen Levelshifter für I²C brauchen ebenfalls an beiden Seiten
> einen.

Na Ja... die DS18B20 funktionieren aber auch mit 5V und was ich so im 
Netz gelesen habe, sollen die damit auch stabiler laufen.
zumindest wenn man mehr als einen an einem Bus hat und die Kabellänge 
etwas länger ist


ich glaube auch das ich von dem von mir hier eingesetzten TXS0108 
abrücken werde...
Ich hatte eigentlich vom LevelShifter erwartet das ich auf der einen 
Seite mit 3.3V reingehe und auf der anderen mit 5V raußkomme (je nach 
angelegten Spannungen) so wie eben bei den 08/15 4 Kanal 
Bi-direktionalen LevelShiftern
wenn ich dann aber lese das man bei dem TXS0108 erstmal noch einen OE 
Pin entweder mit GND oder VCC brücken muss und dann evtl noch mit 
Pulldown ... was weiss ich nicht für gefühlte 100 Varianten einsetzen 
kann, zusätzlich dann endlich mal die Sparkfun-Seite lese wo man gleich 
im Text die Empfehlung bekommt gleich auf den 4-Kanal 08/15 Shifter zu 
wechseln...wenn man sich nicht sicher ist, ob man auch min 2mA Signal 
bekommt dass dieses Teil überhaupt funktioniert ...
dann spart so ein Billigteil womöglich unnötige Zeit und Ärger und es 
funzt ganz einfach

Der Hinweis Pullups bei den I2C IO-Expandern beidseitig zu setzen ist 
wertvoll. Danke

So setze ich nun auf den 4-kanal- billig bi-direktionalen 3.3V und 5V 
Seite Pullups und auf dem IO-Portexpander der via I2C läuft, auch auf 
beiden Seiten Pullups (bzw. nur noch auf einer Seite da die i2C-seite 
die ja von dem Levelshifter kommt, eh schon Pullups bekam.


Anbei ein kleiner Schaltplan

Ps. beim IO-Expander habe ich kein Fritzing-Bauteil gefunden was die I2C 
und VCC als auch GND Pins drauf hätte und im Datenblatt nachzusehen war 
ich zu bequem da ich ja eh einen auf einer Platinbe habe ... ich denke 
aber das es im schaltplan schon deutlich wird.

von Εrnst B. (ernst)


Lesenswert?

Achim A. schrieb:
> Na Ja... die DS18B20 funktionieren aber auch mit 5V und was ich so im
> Netz gelesen habe, sollen die damit auch stabiler laufen.

Kann ich nicht bestätigen. Hab einen DS18B20(-Klon?) und einen 
SHT21(-Klon?) an einem batteriebetriebenen Funk-Sensor, und der sendet 
seit mehreren Jahren minutlich die Temperaturen und Luftfeuchte, ohne 
jedes Problem. Der Sensor meldet aktuell 2.60 Volt Betriebsspannung, 
vermutlich schaffen die Batterien noch ein paar Jahre länger.

Die Temperatur-Messwerte der beiden Sensoren sind nie mehr als ein paar 
0.1°C auseinander (aktuell 19,75 vs 19,81°C), insofern gehe ich davon 
aus dass die niedrige Spannung weder die Zuverlässigkeit noch die 
Genauigkeit beeinträchtigt.


Wichtig: Wenn man so billige China-Breakout-Boards kauft, nach welchen 
ohne 3.3V-Spannungsregler suchen. Zum einen hat der einen (im Vergleich 
zum Sensor selber) großen Ruhestromverbrauch, zum anderen erwärmt er die 
Platine.

: Bearbeitet durch User
von Achim A. (achim_a)


Lesenswert?

Εrnst B. schrieb:
> Wichtig: Wenn man so billige China-Breakout-Boards kauft, nach welchen
> ohne 3.3V-Spannungsregler suchen. Zum einen hat der einen (im Vergleich
> zum Sensor selber) großen Ruhestromverbrauch, zum anderen erwärmt er die
> Platine.

das ist eine wichtige Info
Die Erwärmung der Platinen ist ja bei den Sensoren oft ein 
unterschätztes Thema musste ich auch schon feststellen.


Habe aber gerade noch was zu den LevelShifter gelesen.

Ich habe hier einen Adafruit
https://www.adafruit.com/product/757

und einen wie den Sparkfun
https://www.berrybase.de/sparkfun-logic-level-konverter-bidirektional?gad_source=1&gad_campaignid=22696911352&gbraid=0AAAAADSQJK7_d7kKXRZn0wvcAw83nCtZt&gclid=Cj0KCQjw6bfHBhDNARIsAIGsqLgNs4mHj4nc9vqGIU8dT53s4DMJC95SUts3qvLX0Cm_60QSmntCxdAaApWBEALw_wcB

bei beiden, dem  Adafruit und beim sparkfun sollte man so wie ich es 
verstanden habe, KEINE Pull-ups mehr verwenden da er schon welche 
integriert hat.


Wenn ich also einen I2C-Bus mit 5V betreibe wie bei mir der IO-Expander 
(ich habe hier ja einen 3.3V ESP der nur 3.3V auf den IO-Pins verträgt)
so bräuchte ich laut Infos zumindest  KEINE PullUp's.

Habe jetzt beide auch mal nachgemessen
Beide LevelShifter haben sowohl auf der Low UND auf der High-Seite 10K 
Pull-ups verbaut

somit brauche ich da also keine PullUps mehr oder?
Sonst könnte ich wohl nur Störungen einbauen wenn ich jetzt noch 
zusätzliche verbaue.
?

zu den Sensoren:
ich verwende hier
1x BVME680 (direkt an 3.3V) der ist nahe am ESP's
ca 6 x DS18B20 an einem längeren Kabel
3x DHT22 Sensoren auch an teils bis zu 6 Meter Kabellänge

Ich denke die ersten beiden der BME und die DS18B20 könnte ich noch an 
3.3V betreiben

Die DHT Sensoren, die müsste ich aber schon an 5V betreiben

Zumindest was ich so im Netz gefunden habe an Infos

Ein Nextion-Display was 5V braucht muss ich auch an den TX/RX 
anschliessen.
Das müsste ich auch über den LevelShifter laufen lassen

von Εrnst B. (ernst)


Lesenswert?

Wenn du am langen Kabel Stabilitätsprobleme mit den Sensoren hast: 100nF 
jeweils nah an den Sensoren verbessern das oft.

von Achim A. (achim_a)


Lesenswert?

Εrnst B. schrieb:
> Wenn du am langen Kabel Stabilitätsprobleme mit den Sensoren hast: 100nF
> jeweils nah an den Sensoren verbessern das oft.

das hatte ich bis jetzt noch nicht probiert.
Ich hätte da aber welche Zuhause (aus Keramik)
den müsste ich dann parallel mit einem Bein auf die Datenleitung und mit 
dem anderen Beinchen auf GND legen.
korrekt?

edit:
und wäre die Größe von 100nF bei einem 5V angetriebenen Sensor gleich 
wie bei einem 3.3V Sensor?

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Achim A. schrieb:
> den müsste ich dann parallel mit einem Bein auf die Datenleitung und mit
> dem anderen Beinchen auf GND legen.
> korrekt?

nein. GND und VCC, nicht an die Datenleitung!

von Joachim B. (jar)


Lesenswert?

Εrnst B. schrieb:
> Achim A. schrieb:
>> den müsste ich dann parallel mit einem Bein auf die Datenleitung und mit
>> dem anderen Beinchen auf GND legen.
>> korrekt?
>
> nein. GND und VCC

nicht bei parasitärer Speisung da muß der arme Pin auch noch im Timing 
den Zusatzkondensator runterziehen, auf jeden Fall sollte man die beiden 
Fehlertemperaturen 85°C und 129°C (oder >125°C?) ignorieren und neu 
lesen, CRC8 ist eh Pflicht. Auch ist Mittelwertbildung empfohlen, denn 
wenn die Temperatur innerhalb von Sekunden auf über 70°C steigt brennt 
die Bude eh.

Lange Drähte haben auch mehr Kabelkapazität also ruhig 3mA vorsehen 
damit die Flanken steil bleiben.

: Bearbeitet durch User
von Εrnst B. (ernst)


Lesenswert?

Joachim B. schrieb:
> nicht bei parasitärer Speisung da muß der arme Pin auch noch im Timing
> den Zusatzkondensator runterziehen

Da nennt man die Datenleitung aber hoffentlich nicht VCC.

Im "Schaltplan" (in Anführungszeichen) von Achim oben war nicht 
ersichtlich, ob er tatsächlich die DS18B20 parasitär versorgen will, ich 
würd's nicht empfehlen wenn nicht unbedingt nötig.

Und bei den DHT22 stellt sich die Frage eh nicht.

: Bearbeitet durch User
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Achim A. schrieb:
> bei beiden, dem  Adafruit und beim sparkfun sollte man so wie ich es
> verstanden habe, KEINE Pull-ups mehr verwenden da er schon welche
> integriert hat.

Iss klar!
Glaube Hoffnung trallala.

von Jens M. (schuchkleisser)


Lesenswert?

Ja, da sind Pullups drin, aber 10k. Viel zu wenig für sichere Funktion, 
aber es tut auf dem Steckbrett.
Nein, es schadet nicht zusätzlich welche einzubauen, aber die sollten 
halt nah bei diesen sein und man muss die Parallelschaltung rausrechnen.

von Joachim B. (jar)


Lesenswert?

Achim A. schrieb:
> den müsste ich dann parallel mit einem Bein auf die Datenleitung und mit
> dem anderen Beinchen auf GND legen.

so machst du die Datenverbindung unmöglich, hast du dir mal wenigstens 
das Datentelegramm, Timing und die Funktion angesehen?
Das ist doch kein Ratespiel und kein malen nach Zahlen.

von Achim A. (achim_a)


Lesenswert?

Jens M. schrieb:
> Nein, es schadet nicht zusätzlich welche einzubauen, aber die sollten
> halt nah bei diesen sein und man muss die Parallelschaltung rausrechnen.

Gut zu wissen
ich habe das jetzt so gemacht.
Hab auf der Platine nahe dem LevelShifter zusätzliche Stiftleisten und 
eben die Verbindungen verbaut die dann für die Pullups sind. So kann ich 
diese entsprechend setzen oder eben weglassen.

von Achim A. (achim_a)


Lesenswert?

Joachim B. schrieb:
> nicht bei parasitärer Speisung da muß der arme Pin auch noch im Timing

Nein,
ich habe keine parasitärer Speisung.
Ich habe für alle Sensoren sauber die Spannungsversorgung angeschlossen.

von Achim A. (achim_a)


Lesenswert?

Εrnst B. schrieb:
> nein. GND und VCC, nicht an die Datenleitung!

Danke!

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.