Forum: Mikrocontroller und Digitale Elektronik Schutzbeschaltung I²C


von Christian K. (kalki_online)


Lesenswert?

Hallo Zusammen,

ich bin im Moment beim Entwurf meiner Schaltung, wo unter anderem I²C 
benutzt wird. Die Schaltung bekommt 4 Pins für den Eingang:
- +24V Power Supply
- GND
- I²C CLK
- I²C Data
Die I²C Pins sollen je nach Einsatz ggf. auch noch für analoge 
Eingangssignale missbraucht werden, so dass diese parallel auch noch auf 
einen A/D-Wandler geschaltet werden.

Ich möchte die Schaltung jetzt so weit wie Möglich vor Überspannung und 
Verpolung schützen. Für Power Supply soll dafür eine einfache 
Diodenschaltung herhalten. Nur die I²C Schnittstelle bereitet mir hier 
noch Kopfzerbrechen:
- Zum einen werden mehrere Schaltungen vernetzt, auf jeder Schaltung 
soll die Schutzbeschaltung kommen.
- Meines Wissens würde eine einfache Zenerdiodenschaltung nicht 
funktionieren, da mit Pull-Up-Widerstand vom I²C-Bus und Vorwiderstand 
der Zenerdiode ein Spannungsteiler entsteht, so dass ich entweder die 
von der Norm gesetzten Pegel für den I²C Standard nicht erreiche, oder 
aber die Leistung für den Vorwiderstand zu groß wird.

Hat daher einer eine Idee, wie ich hier eine vernünftige 
Schutzbeschlatung aufbauen kann?

Liebe Grüße
  Christian

Nachtrag: Die I²C-Pins sollen auch bis 24V vertragen können (der MCU 
verträgt aber nur max 5,3V)

von Jörg S. (joerg-s)


Lesenswert?

Christian K. schrieb:
> - Meines Wissens würde eine einfache Zenerdiodenschaltung nicht
> funktionieren, da mit Pull-Up-Widerstand vom I²C-Bus und Vorwiderstand
> der Zenerdiode ein Spannungsteiler entsteht, so dass ich entweder die
> von der Norm gesetzten Pegel für den I²C Standard nicht erreiche, oder
> aber die Leistung für den Vorwiderstand zu groß wird.
Die Z-Dioden dürften doch viel hochohmiger sein als die paar kOhm 
Pull-Ups. Ich kann da jetzt kein Problem erkennen.

von Christian K. (kalki_online)


Angehängte Dateien:

Lesenswert?

Aus meiner Sicht ist das Problem, dass die Z-Diode einen gewissen
Widerstand benötigt, um gewisse Ströme abbauen zu können und diese mir
nicht abraucht. Und genau dieser Vorwiderstand ist das Problem.

Ich hab mal einen Schaltplan angehängt, damit man das Problem vllt.
sieht und den Spannungsteiler erkennt ... vllt. gibt es auch noch eine
andere Variante mit der Zenerdiode.

Liebe Grüße
 Christian

von Maximilian (Gast)


Lesenswert?

Es funktioniert so  es nicht, da
wenn IC1 die Leitung auf Low zieht
aus Sicht von IC2 ein Spannunsteiler
ergibt:

Vcc --- 4,7kOhm (Pullup) ----- ----- 18kOhm (Wiederstand  vor IC1) ---- 
Masse
                              |
                              |
                             IC2
Damit währe bei 5V Betriebsspannung eine Spannung von 3.9 V gegen Masse 
zu messenm, was normal ein Hight für IC2 währe und damit die Information 
falsch übertragen wurde.

Aber:
> Nachtrag: Die I²C-Pins sollen auch bis 24V vertragen können (der MCU
> verträgt aber nur max 5,3V)

Soll er die 24V als I²C-Betribsspannung oder als Spannung für den ADC 
verkraften?

von Christian K. (kalki_online)


Lesenswert?

Das ist genau das Problem, warum ich hier keine Z-Diode einsetzen kann.

Es geht mir eigentlich nur darum, dass die I²C-Schnittstelle überlebt 
wenn mir ein Depp da 24V Volt drauf gibt. Den A/D-Wandler kann man ja 
noch über Spannungsteiler absichern, der soll schließlich nur lesen und 
nicht den I²C-Bus bedienen.

von Jörg S. (joerg-s)


Lesenswert?

>Es geht mir eigentlich nur darum, dass die I²C-Schnittstelle überlebt
>wenn mir ein Depp da 24V Volt drauf gibt.
Dann setz doch einfach ne Diode in Flussrichtung vom µC Pin gegen 
VCC-µC.

>Das ist genau das Problem, warum ich hier keine Z-Diode einsetzen kann.
Was Maximilian wohl meint ist das es schon so mit den 18k nicht 
funktioniert.
Wo kommen eigentlich die 18k Ohm her? Warum nicht viel viel 
Niederohmiger? Dieser Widerstand müsste schon wesentlich kleiner als die 
Pull-Ups sein damit der I²C noch halbwegs funktioniert.

von Christian K. (kalki_online)


Lesenswert?

Jörg S. schrieb:
>>Es geht mir eigentlich nur darum, dass die I²C-Schnittstelle überlebt
>>wenn mir ein Depp da 24V Volt drauf gibt.
> Dann setz doch einfach ne Diode in Flussrichtung vom µC Pin gegen
> VCC-µC.
>
Auch eine Diode dürfte einen Vorwiderstand zur Strombegrenzung 
benötigen, sonst fallen hier auf einmal rund 19 Volt als 
Kurzschlussstrom ab und mir raucht die Diode ab ... Vorwiderstand bringt 
aber das gleiche Problem mit, wie die Z-Diode ...

>>Das ist genau das Problem, warum ich hier keine Z-Diode einsetzen kann.
> Was Maximilian wohl meint ist das es schon so mit den 18k nicht
> funktioniert.
> Wo kommen eigentlich die 18k Ohm her? Warum nicht viel viel
> Niederohmiger? Dieser Widerstand müsste schon wesentlich kleiner als die
> Pull-Ups sein damit der I²C noch halbwegs funktioniert.

18k Ohm ist die oben beschriebene Strombegrenzung. Wenn der Widerstand 
sehr viel kleiner sein müsste (ich meine, definiert ist Low bis 0,3V, 
d.h. bei 5V I²C müsste der Strombegrenzende Widerstand hier bei ca. 300 
Ohm liegen) und hier dann 24V anliegen, muss der Widerstand mal eben 
rund 1,2 Watt (19V * 0,063A) verbraten ... für ein kleines SMD-Bauteil 
etwas viel ...

von Jörg S. (joerg-s)


Angehängte Dateien:

Lesenswert?

Christian K. schrieb:
> Jörg S. schrieb:
>>>Es geht mir eigentlich nur darum, dass die I²C-Schnittstelle überlebt
>>>wenn mir ein Depp da 24V Volt drauf gibt.
>> Dann setz doch einfach ne Diode in Flussrichtung vom µC Pin gegen
>> VCC-µC.
> Auch eine Diode dürfte einen Vorwiderstand zur Strombegrenzung
> benötigen, ...
Natürlich.

> 18k Ohm ist die oben beschriebene Strombegrenzung. Wenn der Widerstand
> sehr viel kleiner sein müsste (ich meine, definiert ist Low bis 0,3V,
> d.h. bei 5V I²C müsste der Strombegrenzende Widerstand hier bei ca. 300
> Ohm liegen) und hier dann 24V anliegen, muss der Widerstand mal eben
> rund 1,2 Watt (19V * 0,063A) verbraten ... für ein kleines SMD-Bauteil
> etwas viel ...
Zumindest würde ich es so Dimensionieren das der Widerstand bei 24V an 
seiner Leistungsgrenze ist.
SMD 1206 = 0,25W -> @19V = 1,4k Ohm. Wäre schon mal um einige Faktoren 
kleiner.


Ich vermute aber mal das man mit so ein paar passiv Teilen nicht 
wirklich was erreichen kann. Möglicherweise muss was aktives mit MOSFET, 
IC o.ä. her.
Im Anhang mal ein Schnellschuss ohne Funktionsgarantie :)

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Also einen Level-Shifter für 24V-5V.
http://www.eng.auburn.edu/~wilambm/pap/2003/MEMS_Boise.pdf

von Peter D. (peda)


Lesenswert?

I2C ist nicht für außerhalb des Gerätes gedacht, daher gibt es auch 
keine Schutz-ICs dafür.

Für die Verbindung von Geräten nimm besser die UART über 
CAN-Transceiver, die halten +/-36V aus (PCA82C251).
Zusätzlich funktionieren sie noch bei GND-Differenzspannungen bis zu 
+/-5V.
Durch den dominanten Pegel ist auch keine Richtungsumschaltung wie bei 
RS-485 nötig.

Also eine sehr robuste und einfache Lösung.


Peter

von Helmut L. (helmi1)


Lesenswert?

Warum so kompliziert


+5V------+-----------+-------------
         |           |
         -           -
         ^ Z         ^ 1N4007
         -           -
         |           |
         GND         |
                     |
Eingang--- PR -------+-------- CPU
                     |
                     -
                     ^ 1n4007
                     -
                     |
                    GND

Z = Zdiode 5.6V / 1.3W

PR = Polyfuse mit 100mA von z.B. Littelfuse

Die Polyfuse ist normalerweise niederohmig. Wird jetzt eine erhoehte 
Spannung auf den Eingang gegeben fliesst ein Strom ueber eine der beiden 
1N4007 . Dadurch erwaermt sich die Polyfuse und ihr Widerstand erhoeht 
sich. Dadurch wird der Strom auf ungefaehrliche Werte begrenzt.

Die Z-Diode dient dazu ein Anstieg der 5V zu begrenzen.

Gruss Helmi

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Als Alternative zur PR:
- kleine Glühlampe
- JFET oder depletion-MOSFET

von Ulrich (Gast)


Lesenswert?

Zwischen den zusätzlichen Schutz und den µC sollte noch ein Widerstand 
(ca. 1 K). Nur so kann der Schutz 2 Stufig wirken:
Die externe Schaltung begrenzt die Überspannung auf etwa 0,7 V, der 
Widerstand mit den internen Schutzdioden von den 0,7 V auf verträgliche 
0,3 V.

von (prx) A. K. (prx)


Lesenswert?

Helmut Lenzen schrieb:

> Die Polyfuse ist normalerweise niederohmig. Wird jetzt eine erhoehte
> Spannung auf den Eingang gegeben fliesst ein Strom ueber eine der beiden
> 1N4007 .

Bist du sicher, dass eine bekannt gemächliche 1N4007 Diode (30µs) leitet 
bevor der angeschlossene Chip die Grätsche gemacht hat?

Ausserdem sollte man berücksichtigen, dass die Kapazität zweier solcher 
Dioden zusammen bei 30pF liegt, der üblichen Daumenregel zufolge 30cm 
Kabel entsprechend. Wenn ein paar solcher Nodes zusammen kommen kann das 
signifikant werden.

von (prx) A. K. (prx)


Lesenswert?

Ulrich schrieb:

> Zwischen den zusätzlichen Schutz und den µC sollte noch ein Widerstand
> (ca. 1 K).

Beim bidirektionalen I2C Bus ist das keine wirklich gute Idee.

von Sven (Gast)


Lesenswert?

Gibt iwo ne Beschreibung, wie man I2C über Optokoppler führt. Vielleicht 
gibt das einen Denkanstoß.

Mit passiver Schutzschaltung wird das nix, aber Du kannst die Treiber 
nach aussen verlagern und diskret mit Transistoren aufbauen. Dann kannst 
Du das entsprechend spannungsfest ausführen.

von Jörg S. (joerg-s)


Lesenswert?

Sven schrieb:
> Gibt iwo ne Beschreibung, wie man I2C über Optokoppler führt. Vielleicht
> gibt das einen Denkanstoß.
Ja, bei NXP gab es mal so ein App-Note. Ich glaube auch im ADuM1251 
Datenblatt ist was drin.

von Ulrich (Gast)


Lesenswert?

Die 1N4007 ist beim Auschalten gemächlich, aber nicht bein Einschalten. 
Wie Schnell sich die Schaltung nach überspannung erhohlt sollte 
nebensächlich sein.

Wegen des Spannungsabfalls kann tatsächlich eine Diode parallel zum 
Widerstand sinnvoll sein. Ganz ohne extra Trennung hefen aber die Extra 
Dioden nicht viel, denn die Spannung kann dann trotzdem zu hoch werden.

von quant (Gast)


Angehängte Dateien:

Lesenswert?

Hi Leute,
der thread ist zwar nicht mehr aktuell aber vllt antwortet ja trotzdem 
einer. ich habe mir letztens durch falsches anstecken eines steckers den 
i2c eines relativ teuren moduls zerschossen. Da ich nun dabei bin eine 
kleine platine zu entwerfen möchte ich gleich eine passende 
schutzbeschaltung für den i2c vorsehen. (natürlich gibt es inzwischen 
auch einen verpolungssicheren stecker :)) ich habe nun eine idee und 
wollte mal fragen ob sie sich so realisieren lassen könnte (siehe bild). 
Die beiden dioden sind supressordioden, die ab 4,1V leitend werden. Mein 
(zugegeben unschöner) Plan ist nun, dass bei einer überspannung die 
diode leitend wird und der strom über die diode und den 33ohm widerstand 
abfließt. dieser soll nicht viel leistung vertragen und nach kurzer zeit 
abrauchen.
alternativ könnte man auch die oben genannte polyfuse nutzen. zu dieser 
muss ich mich jedoch erstmal belesen da ich sie noch nie verwendet habe.

was haltet ihr von der idee? spricht rein technisch (außer vllt der 
feuergefahr) etwas dagegen?

gruß quant

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.