I²C versorgt Bus-Teilnehmer mit Spannung

Gast #6699106
Lesenswert?

Hallo,

ich habe folgendes Problem: An dem I²C Bus meines ESP32 hängen zwei 
Bus-Teilnehmer welche abwechselnd Ein und Aus geschalet werden sollen. 
Durch trennen von GND durch einen Mosfet funktioniert das soweit gut. 
Jetzt habe ich allerdings festgestellt, dass die Bus-Teilnehmer trotz 
getrenntem GND durch den I²C mit Spannung versorgt werden und dabei 
anspringen obwohl sie hätten Aus sein sollen. Auf dem Teilnehmer liegt 
dann etwa 3,7V durch den I²C an. Das reicht leider aus damit er 
funktioniert. Normalspannung bei eingeschaltetem Mosfet liegt bei 5V.
Wie kann ich den Bus-Teilnehmer davon abhalten sich an der I²C Spannung 
zu bedienen?
#6699135
Lesenswert?

Jürgen schrieb:
> Wie kann ich den Bus-Teilnehmer davon abhalten sich an der I²C Spannung
> zu bedienen?

Gar nicht. IC's bedienen sich oft aller an Ports anliegenden Spannungen 
zur Stromversorgung, ob nun GND oder VCC weggeschaltet sind. Das liegt 
an den Schutzbeschaltungen der Ports, die für Spannungen oberhalb von 
VCC Ströme nach VCC ableiten und fur Spannungen unterhalb von GND nach 
GND.

Dazu kommt: Nach Trennung von GND liegen die I2C-Spannungen für die 
abgetrennten Bus-Teilnehmer auch nicht mehr in deren legalem 
Spannungsbereich (meist von GND bis VCC, siehe deren Datenblatt).

LG, Sebastian
Gast #6699216
Lesenswert?

Jürgen schrieb:
> Durch trennen von GND durch einen Mosfet funktioniert das soweit gut.
> Jetzt habe ich allerdings festgestellt, dass die Bus-Teilnehmer trotz
> getrenntem GND durch den I²C mit Spannung versorgt werden und dabei
> anspringen obwohl sie hätten Aus sein sollen.

Du widersprichst dir - eine parasitäre Versorgung über den I²C-Bus mit 
zusammenbrechender Versorgungsspannung am Chip ist von vernünftig 
funktionieren und Betrieb innerhalb der vom Datenblatt vorgegebenen 
Grenzen eher deutlich entfernt.

Eine Spannungsversorgung besteht immer aus zwei Leitungen. Wie sieht 
deine Schaltung aus und was genau willst du erreichen.
Beitrag #6699294 wurde von einem Moderator gelöscht.
Gast #6699393
Lesenswert?

@ Wolfgang: Das Ausschalten per Mosfet funktioniert gut, solange der I²C 
nicht verbunden ist.

Es handelt sich um zwei optische Sensormodule, welche jeweils mit zwei 
IR-Led´s ausgestattet sind.
https://www.sparkfun.com/products/13162

Da sich beide Sensoren nebeneinander befinden und die Lichtquellen 
jeweils kreuzen, muss ich sie alternierend betreiben. Anonsten stören 
die Lichtquellen des einen Sensors den Anderen. Deswegen der ganze 
Zirkus mit Aus/Einschalten per MOSFET.
Eine "Schlaf-Funktion" besitzen die kleinen Module leider nicht.

Was könnte ich noch ausprobieren?
#6699634
Lesenswert?

Jürgen schrieb:

> Es handelt sich um zwei optische Sensormodule, welche jeweils mit zwei
> IR-Led´s ausgestattet sind.
> https://www.sparkfun.com/products/13162

> Was könnte ich noch ausprobieren?

1. Schalten der Versorgungsspannung.
Du solltest die +-Seite schalten. Am einfachsten ist das mit einem Load 
Switch wie TPS2052B.

https://www.ti.com/lit/ds/symlink/tps2052b.pdf

2. Schalten des I2C-Busses
Dafür gibt es spezielle Multiplexer, die die einzelnen Bussegmente 
voneinander isolieren können. Jedes Segment braucht seine eigenen 
Pullup-Widerstände, wobei auf der Sensor-Seite die Pullups natürlich an 
die geschaltete Versorgungsspannung drankommen.

https://www.nxp.com/docs/en/data-sheet/PCA9542A.pdf

3. Erzeugen der Signale für den Loadswitch
Der Load Switch braucht zwei Enable-Signale, mit denen er die beiden 
Ausgänge ein- und ausschalten kann. Wenn Du die nicht anderweiter 
herbekommst, nimmst Du einen kleinen GPIO-Expander:

https://www.nxp.com/docs/en/data-sheet/PCA9536.pdf

So, damit hast Du alle Teile zusammen. Natürlich gelten wie immer die 
Grundwegeln der Digitaltechnik wie Bypass-Kondensatoren an jedes VCC-GND 
Paar, keine offenen Eingänge usw usw.

fchk
Gast #6699939
Lesenswert?

Ich bin nicht 100% sicher, da nicht ausprobiert, aber ich denke du 
kannst das Problem mit solchen Modulen lösen: 
https://www.amazon.de/Mechatronics-Pro-Pegelwandler-Channel-Shifter-Converter/dp/B08JGHGTNM/ref=sr_1_10

Jedes Modul hat 4 Kanäle, davon brauchst du zwei pro abtrennbares Gerät. 
Dieses gehört an die "LV" Seite.

Du musst aber den + Pol der Versorgungsspannung schalten.
Angehängte Dateien:
Gast #6707280
Lesenswert?

Jürgen schrieb:
> ich habe jetzt die 1N4148 Schalt-Dioden zwischen TX und RX geklemmt und
> es kommt leider gar nichts mehr durch. Sobald ich die Diode entferne
> kommt das Signal durch und ich empfange etwas.
> Was mache ich falsch?

Am I²C Bus gibt es keine Rx und Tx Pins. Zeichne bitte die relevanten 
Verbindungen, Dioden und Widerstände auf.
Gast #6707459
Lesenswert?

Jürgen schrieb:
> Ich spreche von der UART Kommunikation über TX/RX. In meinem letzten
> Beitrag hatte ich geschrieben, dass ich jetzt UART ausprobiere mit der
> Diode.

Warum nicht jeder der beiden TX an einem eigenen Pin/Uart des ESP32? Und 
RX wird ja nicht gebraucht.

LG, Sebastian
#6707790
Lesenswert?

Jürgen schrieb:
> ich habe jetzt die 1N4148 Schalt-Dioden zwischen TX und RX geklemmt und
> es kommt leider gar nichts mehr durch. Sobald ich die Diode entferne
> kommt das Signal durch und ich empfange etwas.

Also so: ZX1 TX ->|- ESP RX, ZX2 TX ->|- ESP RX ?

Dann fehlt dir aber noch ein Pull-Down-Widerstand an ESP RX, sonst kann 
RX ja nie auf LOW fallen ...

Und ausserdem darf dann wirklich nur einer der ZX mit VCC versorgt sein, 
sonst überschreibt ein HIGH von einem ZX ein LOW des anderen.

LG, Sebastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren