Forum: Mikrocontroller und Digitale Elektronik I²C versorgt Bus-Teilnehmer mit Spannung


von Jürgen (Gast)


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?

von Pandur S. (jetztnicht)


Lesenswert?

Trennen von GND ? ...
nein, ganz sicher macht man das nicht so. Der GND wird nie getrennt. 
Trenn die speisung.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

kannst du sie nicht in den SleepMode schicken statt abzuklemmen?
Deine Leitung zum abschalten kannste dann zum aufwecken verwenden.
So als Idee.

von Jürgen (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin dabei nach folgendem Beispiel gegangen (Gate IO vom ESP32, Drain 
- zum Busteilnehmer, Source GND)
In den meisten Schaltungen die ich im Netz gefunden habe wird so 
gemacht.?

Quelle:
http://www.mintgruen.tu-berlin.de/robotikWiki/doku.php?id=techniken:schalten

von N. M. (mani)


Lesenswert?

Jürgen schrieb:
> Ich bin dabei nach folgendem Beispiel

Ist dein I2C Teilnehmer eine ohmsche Last? Davon wird nämlich in dem 
verlinkten Bild gesprochen 🤔

Andere Frage: warum möchtest du die Teilnehmer überhaupt abschalten?
Und um was für Teilnehmer handelt es sich im genauen?

von Sebastian W. (wangnick)


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

: Bearbeitet durch User
von ergo70 (Gast)


Lesenswert?

Ja, nur dass die Glühbirne nicht auch noch an irgendwelchen 
Signalleitungen hängt. Sonst würde sie sich auch darüber versorgen, wenn 
man ihr den GND wegschaltet.

von Sebastian W. (wangnick)


Lesenswert?

Sebastian W. schrieb:
> 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.

Und Achtung, diese Schutzbeschaltungen sind oft nur für sehr geringe 
Ströme ausgelegt ...

LG, Sebastian

von Wolfgang (Gast)


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.
von Jürgen (Gast)


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?

von (prx) A. K. (prx)


Lesenswert?

Jürgen schrieb:
> Was könnte ich noch ausprobieren?

Den Modulen nicht nur die Stromversorgung wegnehmen, sondern auch die 
I2C-Signale.

: Bearbeitet durch User
von Prokrastinator (Gast)


Lesenswert?

Pandur S. schrieb:
> Trenn die speisung.
Dann zieht der Slave die I2C Signale runter, beim Versuch sich über die 
IOs (interne Diode) zu speisen.

von (prx) A. K. (prx)


Lesenswert?

Jürgen schrieb:
> Was könnte ich noch ausprobieren?

I2C-Isolatoren wie ISO1540/1640.

von Prokrastinator (Gast)


Lesenswert?

Jürgen schrieb:
> Was könnte ich noch ausprobieren?

Kleine MCU die zwischen I2C Bus und Modul vermittelt und das komplett 
totlegen kann.

von (prx) A. K. (prx)


Lesenswert?

Jürgen schrieb:
> Es handelt sich um zwei optische Sensormodule, welche jeweils mit zwei
> IR-Led´s ausgestattet sind.

Soweit ich der Kurzinfo entnehmen kann, kann dieses Modul seinen Sermon 
auch undirektional per UART loswerden. Was I2C obsolet machen würde. Und 
da ist es trivial, zwei Tx per Dioden zusammenzuschalten.

: Bearbeitet durch User
von Frank K. (fchk)


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

von Jürgen (Gast)


Lesenswert?

Danke für die zahlreichen Tipps.
Ich denke, als als erstes werde ich mal die Kommunikation über UART und 
Dioden probieren. Sind 1N4148 Schalt-Dioden dafür geeignet?

von (prx) A. K. (prx)


Lesenswert?

Jürgen schrieb:
> Sind 1N4148 Schalt-Dioden dafür geeignet?

Ja.

von Stefan F. (Gast)


Angehängte Dateien:

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.

von Jürgen (Gast)


Lesenswert?

(prx) A. K. schrieb:
> Jürgen schrieb:
>> Sind 1N4148 Schalt-Dioden dafür geeignet?
>
> Ja.

Hi,

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?

von Stefan F. (Gast)


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.

von Jürgen (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

Zeichne bitte die relevanten Verbindungen, Dioden und Widerstände auf.

von Sebastian (Gast)


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

von Sebastian W. (wangnick)


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

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.