Hallo zusammen, ich habe hier eine kleine Problemstellung, bei der ich etwas auf dem Schlauch stehe: Zwei ICs sind über einen I²C-Bus verbunden (siehe beigefügte Schema). IC1 (Slave) hängt dabei direkt an der Batterie. IC2 (Master) hängt an einer schaltbaren +3V3 Versorgung. Folgendes Problem: Die Batterie zur Versorgung von IC1 kann entfernt werden. In diesem Fall darf IC1 natürlich nicht parasitär über den I²C-Bus versorgt werden. Die Versorgungsspannung von IC2 ist schaltbar. Ist die Versorgungsspannung von IC2 abgeschaltet, die Batterie von IC1 aber vorhanden, dürfen die Pullups natürlich ebenfalls keinen Strom liefern (denn sonst würde IC2 parasitär versorgt...) Frage: Wie kann ich die Versorgungsspannung für die pullups möglichst elegant abschalten? Wichtig ist dabei, dass die Batterie für das Einschalten der pullups möglichst keinen Strom liefern darf! Die Lösung ist wahrscheinlich ziemlich simpel, aber ich sehe gerade den Wald vor Bäumen nicht... Gruß Daniel
Werden die ICs denn überhaupt parasitär über die pull ups versorgt? Oder machst du dir Gedanken über ein Problem das gar keines ist? Du könntest ansonsten einen Pin am uC opfern mit dem du die pull ups versorgst.
Hallo! Frank schrieb: > Werden die ICs denn überhaupt parasitär über die pull ups versorgt? Oder > machst du dir Gedanken über ein Problem das gar keines ist? Naja, davon ist auf Grund interner Schutzdioden wohl auszugehen, oder nicht? > Du könntest ansonsten einen Pin am uC opfern mit dem du die pull ups > versorgst. Hm, dann müsste ich aber die Batteriespannung ständig überwachen und die pull ups abschalten, wenn die Batteriespannung fehlt. So als reine Softwarelösung wäre mir das ehrlich gesagt nicht robust genug... Gruß Daniel
Hm. Kann es sein, dass das Problemchen doch gar nicht so einfach zu lösen ist? Ich habe jetzt auf dem Papier schon dutzende Schaltungen mit Transistoren und Mosfets hingekritzelt (z.B. die pullups über ein P-Mosfet von den +3V3 trennen, welches durch einen NPN-Transistor - Basis an Batteriespannung - geschaltet wird). Aber irgendwie bringt jedes Konzept einen nicht unerheblichen Stromfluss aus der Batterie mit sich (in obigem Beispiel Basisstrom des NPN), der mir die Batterie auf Dauer leernuckelt. Ich habe auch schon bei Bus-Isolatoren geschaut. Aber die brauchen im besten Fall scheinbar auch immer 1-2 mA... Wäre Euch wirklich für ein paar gute Vorschläge dankbar! Gruß Daniel
Häng die Pullups doch an die schaltbaren 3V3. Wenn einer der ICs keinen Strom hat, dann brauchst Du auch die I2C nicht mehr.
Pete K. schrieb: > Häng die Pullups doch an die schaltbaren 3V3. Wenn einer der ICs keinen > Strom hat, dann brauchst Du auch die I2C nicht mehr. Naja, aber das löst das Problem ja leider nicht. Wenn keine Batterie eingelegt ist, der andere IC (und die pull ups) aber +3V3 bekommt, dann wird der "batterielose" IC ja über SCL/SDA versorgt. Falls es hilft: konkret ist der Kollege mit Batterie (IC1) ein LiPoly Gas Gauge IC bq27541-G1 (http://www.ti.com/lit/ds/symlink/bq27541-g1.pdf) und IC2 ist ein PIC24F.
Daniel P. schrieb: > Wenn keine Batterie > eingelegt ist, der andere IC (und die pull ups) aber +3V3 bekommt, dann > wird der "batterielose" IC ja über SCL/SDA versorgt. Woher nimmst Du diese Erkenntnis? Ein uC wird immer noch über VCC versorgt.
:
Bearbeitet durch User
>Ich habe jetzt auf dem Papier schon dutzende Schaltungen mit >Transistoren und Mosfets hingekritzelt (z.B. die pullups über ein >P-Mosfet von den +3V3 trennen, welches durch einen NPN-Transistor - >Basis an Batteriespannung - geschaltet wird). Aber irgendwie bringt >jedes Konzept einen nicht unerheblichen Stromfluss aus der Batterie mit >sich (in obigem Beispiel Basisstrom des NPN), der mir die Batterie auf >Dauer leernuckelt. Wie wäre es mit P-FET zum Schalten, und damit die Ansteuerung keinen Strom statisch benötigt, ein CMOS InverterGatter, welches aus der vorhandenen Batteriespannung (HIGH) ein LOW zur Ansteuerung des P-Fets macht?
Laut Datenblatt hat der bq27541-G1 an SDA & SCL keine Clamp Diode nach Vcc, sonst wäre die max voltage in den absolute maximum ratings relativ zu Vcc angegeben. Wenn die Pullups an Vcc von IC2 hängen, dürfte eigentlich nichts passieren, egal welche Seite Du ausschaltest.
Pete K. schrieb: > Daniel P. schrieb: >> Wenn keine Batterie >> eingelegt ist, der andere IC (und die pull ups) aber +3V3 bekommt, dann >> wird der "batterielose" IC ja über SCL/SDA versorgt. > > Woher nimmst Du diese Erkenntnis? Ein uC wird immer noch über VCC > versorgt. Jaaaaa, schön wäre es. Aber sollte es nur interne Schutzdioden an den Bus-Pins geben, dann würde nunmal ein Strom nach VCC fließen, oder nicht? Allerdings bin ich mir nicht sicher, OB die Bus-Pins tatsächlich diese internen Schutzdioden haben. Wenn man sich die Max-Ratings (im Anhang) anschaut, dann steht dort maximal 6 V und nicht VCC+x. Könnte darauf hindeuten, dass es keien Dioden gibt??? Matthias Lipinsky schrieb: > Wie wäre es mit P-FET zum Schalten, und damit die Ansteuerung keinen > Strom statisch benötigt, ein CMOS InverterGatter, welches aus der > vorhandenen Batteriespannung (HIGH) ein LOW zur Ansteuerung des P-Fets > macht? Hm, das könnte gehen... Aber welche Versorgungsspannung verwende ich für das Gatter? Batterie oder +3V3? Bringt mich das dort nicht wieder in die gleiche Zwickmühle?
Klaus 2m5 schrieb: > Laut Datenblatt hat der bq27541-G1 an SDA & SCL keine Clamp Diode nach > Vcc, sonst wäre die max voltage in den absolute maximum ratings relativ > zu Vcc angegeben. > > Wenn die Pullups an Vcc von IC2 hängen, dürfte eigentlich nichts > passieren, egal welche Seite Du ausschaltest. Da warst Du wohl schneller. Danke! Wenn das so ist, dann hätte ich gar kein Problem. Cool. Aber jetzt mal rein theoretisch: dieser IC hat eine Stromaufnahme von ~130 µA. Selbst wenn er an den Bus-Pins Clamp Dioden hätte, könnte dieser geringe Strom überhaupt einen Schaden anrichten?
>ber welche Versorgungsspannung verwende ich für >das Gatter? Batterie oder +3V3? Die Batteriespannung ist EIngang vom Gatter. Versorgt werden muss es von der SPannung, die immer da ist. Aber ein Pulldown parallel zur Batterie ist nötig, um das Gatter auf Low zu halten, wenn die Batterie abgeklemmt ist. >Bringt mich das dort nicht wieder in die gleiche Zwickmühle? War nur so eine Idee. Mal es doch mal auf.
Matthias Lipinsky schrieb: > War nur so eine Idee. Mal es doch mal auf. Hab ich. Klappt leider nicht, weil folgendes nicht gegeben ist: > Versorgt werden muss es von der SPannung, die immer da ist. Keine der beiden Spannungen ist garantiert immer da > Aber ein Pulldown parallel zur Batterie > ist nötig, um das Gatter auf Low zu halten, wenn die Batterie abgeklemmt > ist. Das Problem hatte ich leider auch bei allen meinen Mosfet- und Transistorkritzeleien. Und diesen Pulldown möchte ich um jeden Preis vermeiden... Ich schlage vor, ich baue mal einen Prototypen auf und werde dann den Fall einfach testen. Sollte doch ein Strom über die Bus-Pins fließen, werde ich den am LDO-Ausgang des Gas Gauge ICs messen können. Dann käme ich auf Deinen Vorschlag noch einmal zurück... Danke Euch für Eure Beiträge! Gruß Daniel
über die Buspins läuft normalerweise kein Power, solange die Pullups nicht dran sind bei I2C soweit mir geläufig. Das ist ja der Gag am I2C, darum ja auch die Pullups, es wird nur nach unten gezogen vom Controller. also was die Verundung angeht da könnteste auch einfach nen n-kanal FET Transistor als Source-folger machen ... Gate an V-IC1, SOurce an V-IC2, Drain an Pullups. V-IC1 weg, Gate an GND, Transistor zu, V-IC2 weg, auch kein Saft am Pullup ... oder?
Mach halt zu den irgendwie schaltbaren Pull-Ups noch 2 hochohmige* nicht geschaltete Pull-Ups die ueber 2 Schottky-Dioden von beiden Betriebsspannungen gespeist werden. Zum Schalten wuerde ich einfach einen Tristatefaehigen GPIO nehmen. Das wird den I2C-Bus naemlich freuen. *) Hochohmig := 10 M
Moin, no so als Idee, wie wäre es mit einem Si8600 - "BIDIRECTIONAL I2C ISOLATORS WITH UNIDIRECTIONAL DIGITAL CHANNELS" Damit trennst Du beide Chips vollständig voneinander...
>Zwei ICs sind über einen I²C-Bus verbunden (siehe beigefügte Schema). >IC1 (Slave) hängt dabei direkt an der Batterie. >IC2 (Master) hängt an einer schaltbaren +3V3 Versorgung. >Folgendes Problem: >Die Batterie zur Versorgung von IC1 kann entfernt werden. In diesem Fall >darf IC1 natürlich nicht parasitär über den I²C-Bus versorgt werden. Was ist mit folgender Lösung: Die Pullups über einen P-Fet gegen 3V3 vom µC. Ein µC-Pin schaltet den Fet. Ein weiterer µC Pin ist mit +3V3 der Batterie verbunden um zu erkennen, ob der Slave vorhanden ist. Denn das wäre ja auch eine nützliche Info für das Programm...
Vielleicht mit einem Reset-IC an IC2 oder Brownout Pin GND an IC2 schalten. Dann kann auch kein Strom fließen (VCC und GND weg). Müsste man mal genauer "prototypisieren".
UND-Gatter, Eingänge: Batterie und 3v3-Versorgung. Ausgang an Pull-up.
Die Lösung ist wirklich simpel. IC1 ist ein echtes i2c device, also Open Collector Pins. Das heisst, dass dort gar keine Schutzdioden von diesen Pins zu VCC vorhanden sind. Die Pull-ups werden einfach mit der schaltbaren 3.3V VCC vom uC verbunden, das wars. Zudem ist dieser Slave kein i2c sondern ein smb device. Das heisst, dass dieser ein Timeout hat und automatisch nach dem Timeout ein Reset macht. Dieser Timeout ist 2Sekunden, und dieser Timeout ist immer nach einem Start condition und er wird nur abgebrochen wenn die Transaktion beendet wird. Wenn du aber nur SW i2c machst, dann könntest du die internen Pull-up verwenden, wird auch oft praktiziert.
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.