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?
Trennen von GND ? ... nein, ganz sicher macht man das nicht so. Der GND wird nie getrennt. Trenn die speisung.
Hallo, kannst du sie nicht in den SleepMode schicken statt abzuklemmen? Deine Leitung zum abschalten kannste dann zum aufwecken verwenden. So als Idee.
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
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?
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
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.
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
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.
@ 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?
Jürgen schrieb: > Was könnte ich noch ausprobieren? Den Modulen nicht nur die Stromversorgung wegnehmen, sondern auch die I2C-Signale.
:
Bearbeitet durch User
Pandur S. schrieb: > Trenn die speisung. Dann zieht der Slave die I2C Signale runter, beim Versuch sich über die IOs (interne Diode) zu speisen.
Jürgen schrieb: > Was könnte ich noch ausprobieren? Kleine MCU die zwischen I2C Bus und Modul vermittelt und das komplett totlegen kann.
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
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
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?
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.
(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?
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.
Ich spreche von der UART Kommunikation über TX/RX. In meinem letzten Beitrag hatte ich geschrieben, dass ich jetzt UART ausprobiere mit der Diode.
Zeichne bitte die relevanten Verbindungen, Dioden und Widerstände auf.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.