Forum: Mikrocontroller und Digitale Elektronik I2C im Auto - Störfestigkeit


von Peter (Gast)


Lesenswert?

Hallo,

in einem kleinen Projekt im Auto wollte ich unter anderem auch 
I2C-Temperatursensoren (LM75) im Motorraum verbauen. Diese sollen von 
einem PIC16F628 über einen in Software realisierten I2C-Bus (Low-Speed) 
zyklisch abgefragt werden und auf einem LCD-Display ausgegebne werden. 
Dass die Sensoren sehr gut gegen Feuchtigkeit geschützt werden müssen 
ist soweit kein Problem. Allerdings ergeben sich für mich einige Fragen 
bezüglich der elektrischen Konzeption:

- Da I2C eigentlich ja nicht für mehrere Meter in rauher Umgebaung 
(Störungen durch Zündung, Generator) konzipiert ist, stelle ich mir die 
Frage, ob die Übertragung überhaupt funktionieren kann. Ich hatte an ein 
CAT7-Kabel gedacht, bei dem ich an jeweils ein verdrilltes Adernpaar für 
SDA/GND und SCL/GND verwende. Den Schirm dann auch auf GND.

- GND nur Controllerseitig mit der Fahrzeugmasse verbinden, damit keine 
Ströme über das Kabel fließen und die Sensoren isoliert montieren?

- Oder zerbröselt mir das CAT7-Kabel nach kurzer Zeit durch die extremen 
Temperaturbereiche?

- möglichst kleine PullUp-Widerstände verwenden?

Das ganze natürlich mit LowSpeed-Übertragung, ich würde nur gern die 
Sensoren möglichst einfach halten und dort auf Repeater/Businterfaces 
verzichten.

- Reicht es aus, die Versorgungsspannung über eine Drossel gut gesiebt 
(~1000µF) auf einen 7805 zu geben, oder sollte ich noch zusätzliche 
Überspannungsschutzmaßnahmen einbauen? Den Controller selbst möchte ich 
in ein Metallgehäuse einbauen.

- Lohnt sich beim LM75 eine Offsetkalibration für 0°C mit Eiswasser, 
oder ist die Methode auch nicht genauer als der LM75 von Werk aus?

Soweit mal meine Gedanken. Sollte das funktionieren, oder mache ich da 
einen Denkfehler.

Peter

von STS (Gast)


Lesenswert?

Ob I2C die harsche Umgebung aushält, kann im Endeffekt nur der Versuch 
zeigen. Hierbei kommt es natürlich auch auf die Länge des Kabels zum 
Sensor hin. Im allgemeinen wäre es besser als Übertragung ein 
symmetrisches Verfahren wie RS485 oder CAN zu verwenden. Der Kabelschirm 
sollte auf jeden Fall auf beiden Seiten auf Masse gelegt werden. Das 
einseitige Erden des Schirmes gilt nur für analoge Signalübertragung. 
Einen Überspannungsschutz würde ich auf jeden Fall vorsehen. Eine 
Entsörung mit LC-Kombi auch. Hierzu lohnt sich ein Blick in das Buch: 
"Trilogie der Induktivitäten" von Würth Elektronik. Dort sind 
Entstörungsmaßnahmen sehr gut beschrieben. Bei CAT-7Kabel ist auch noch 
zu überlegen, ob es die Schwingungen im Fahreug über längere Zeit 
unbeschadet übersteht. Aber das kommt auch daruaf an, ob es fixiert ist, 
ansonsten sollte man villeicht zu hochflexiblen Kabel greifen (Lapp 
Unitronic FD CY o.ä.)

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

STS wrote:
> symmetrisches Verfahren wie RS485 oder CAN zu verwenden. Der Kabelschirm
> sollte auf jeden Fall auf beiden Seiten auf Masse gelegt werden. Das

Das meinst du doch nicht ernst? Im Kfz? Da werden plötzlich ganz 
ordentliche Ausgleichsströme über den Schirm fließen die dir mit etwas 
Glück nur die Übertragung stören. Sowieso im Motorraum wo sich Ströme im 
Bereich von >50A rumtreiben.

Zum Ursprungsproblem:
Ich würde, auch wenns schmerzt eher zu einer symetrischen Übertragung 
(RS485) greifen. Dann werden aus dem einen Chip zwar drei aber die 
Störsicherheit dürfte um Größenordnungen besser sein als mit I2C (der 
ist ja schließlich als Inter-IC Bus auf einer Leiterplatte gedacht.

Matthias

von STS (Gast)


Lesenswert?

Doch das meine ich ernst. Es ist ein Trugschluß, daß magnetisch 
induzierte Ströme durch einseitige Schirmung abgehalten werden.

siehe dazu:

www.emvtechnik.ch/Text/Abschirmung/Potentialausgleich%20und%20Erdungskon 
zept.pdf

oder hier:

www.stl-online.de/s04.htm

oder hier:

www.bbr-service.de/emv.pdf


Der Stromfluß über den Schirm muß durch einen ordnungsgemäßen 
Potentialausgleich (in der Industrie durch parallel geführte 
Ausgleichskabel) verhindert werden. Die beidseitige Schirmung ist 
übliche Praxis bei der Verkablung von Informationssystemen in der 
Industie (Profibus DP, CAN usw.)

Wenn die Karosse einen ordnungsgemäßen Potentialausgleich gewährt, 
fließt auch kein Ausgleichsstrom über den Schirm. In kritischen Fällen 
und EX-Umgebungen wird eine Seite über einen Kondensator geerdet.

PS: Mach mal einen Surge Test im EMV-Labor (Kabelzange) mit einseitiger 
Schirmung, schließe dann die andere Seite an. Ein Unterschied wie Tag 
und Nacht!

von Flo (Gast)


Lesenswert?

das kat7 kabel könnte man evtl. mit panzerrohr sowas in der art wie der 
conrad unter best. 621758 - 62 schützen. sowas gibts glaub ich auch für 
den automobilbereich, das hält dann temeraturen ~120° aus. dann halt 
vielleicht nicht unbedingt am krümmer des motors verlegen ;-)

von Peter (Gast)


Lesenswert?

Danke erstmal für eure Antworten!

> Das meinst du doch nicht ernst? Im Kfz? Da werden plötzlich ganz
> ordentliche Ausgleichsströme über den Schirm fließen die dir mit etwas
> Glück nur die Übertragung stören. Sowieso im Motorraum wo sich Ströme im
> Bereich von >50A rumtreiben.

Das war auch so in etwa mein Gedanken bei der Überlegung. Andererseits 
scheint mir das Auto noch halbwegs ordentlich verschweißt ;-)
Die Lösung mit dem Kondensator an ein Ende gefällt mir.

> Im allgemeinen wäre es besser als Übertragung ein
> symmetrisches Verfahren wie RS485 oder CAN zu verwenden.

Soweit klar, aber geht es hierbei um die physikalische oder logische 
Übertragung. Klar, RS485 oder CAN ermöglichen auch die Integrität der 
Daten zu überprüfen, aber das wäre erstmal sekundär (wenn der Wert allzu 
sehr abweicht wird er verworfen). Also geht es in erster Linie um 
symmetrische Übertragung und nicht das Protokoll selbst?

Ich gehe mal davon aus, dass es wohl nicht funktioniert, die I2C-Drähte 
analog in ein symmetrisches Signal zu wandeln, da ja alle Teilnehmer die 
Datenleitung auf Low ziehen können müssen, oder?

An jeden Sensor noch mal einen Controller ranzubasteln erscheint mir 
jetzt auch nicht sehr elegant... Und ich seh das doch richtig, dass mir 
ein "0815-TTL-RS458-...-Converter" nicht besonders viel bringt, eben 
wegen der bidirektionalen Datenleitung?

von Thorsten S. (cuban8)


Lesenswert?

Peter,
schon mal an analoge Übertragung mittels 4-20mA current loop interface 
gedacht?
- Nur zwei Adern nötig
- Unempfindlich gegen Störungen da Stromschleife
- Speisung erfolgt ebenfalls über die Stromschleife
Von Burr-Brown gibt es da ein paar interessante ICs (XTR-Serie), in den 
Beispielschaltungen vom XTR105 sind auch Schemata für Thermoelement bzw. 
RTD (z.B. Pt100) zu finden. Nachteil: nicht ganz billig (zumindest 
verglichen mit dem Preis eines LM75 und wenn Du die Arbeitsstunden, die 
Du damit verbringst, den i2c Bus in dieser eigentlich total ungeeigneten 
Anwendung zum Laufen zu kriegen nicht mit einrechnest), ausserdem 
braucht Dein uP noch einen ADC und etwas Zugemüse.
Gruss,
Thorsten

von dernixwois (Gast)


Lesenswert?

Wie wäre es mit LWL?  (Lichtwellenleiter)

von Peter (Gast)


Lesenswert?

Hm, in die Stromschleifengeschichte muss ich mich erst mal einlesen, 
aber es klingt auch interessant.

Kurz zum Verständnis:
Der Konverter kommt also an den Temperatursensor und wird dort analog in 
einen Strom zwischen 4 und 20mA gewandelt. Controllerseitig liefere ich 
diese 20mA und wandle sie über den Spannungsabfall über einem Widerstand 
in eine Spannung, die ich dann auf den AD gebe?

Weshalb ich die LM75 überhaupt im Auge hatte:
- Laufen erstmal auch ohne Kalibrierung sofort
- I2C-Bus habe ich schonmal erfolgreich im Assembler integriert
- und nicht zu letzt: sie wäre bezahlt und liegen hier rum ;-)

Hm, vielleicht muss ich aber doch Alternativen in Betracht ziehen, weil 
eigentlich wollte ich den Sensoren nicht mehr Intelligenz als der 
restlichen Bordelektronik verpassen ;-)

von Peter (Gast)


Lesenswert?

> Wie wäre es mit LWL?  (Lichtwellenleiter)

Beim ersten Lesen dachte ich:
Klasse, über den LWL kann ich dann auch die Kanone auslösen, mit der ich 
auf den Spatz schieß ;-)

Da aber keine Ironietags da sind vermute ich mal es ist ernst gemeint.
Naja, da fehlt mir das KnowHow, allein schon um so eine Leitung zu 
verlegen. Letztendlich ist es doch nur ein kleines Bastelprojekt.

von Thorsten S. (cuban8)


Lesenswert?

Hallo Peter,
jau, das mit der Stromschleife hast Du richtig erfasst. Braucht deine 
Schaltung weniger als 4mA, kannst Du sie direkt von der Stromschleife 
speisen, also nur zwei Adern für Signal und Speisung!
Controllerseitig kannst Du entweder die an einem Widerstand abfallende 
Spannung messen und entsprechend aufbereiten, für faule Leute wie mich 
hat BB aber noch den RCV420 im Programm, der hat das alles schon drin 
und liefert ganz angenehm 0-5V für 4-20mA. Leider ist er nicht 
kurzschlussfest, so dass man doch noch ein paar Bauteile braucht (z.B. 
JFET plus Widerstand, hast Du genug Speisespannung zur Verfügung reicht 
ein Widerstand).
Gruss,
Thorsten

von Peter (Gast)


Lesenswert?

Hallo Thorsten,

danke für die detaillierten Infos. Ich werde mich die nächsten Tage mal 
durch die Datenblätter der einzelnen Chips durchschlagen. Wobei die 
Preise ja leider nicht ganz ohne sind ;-(

Noch eine andere Frage:
Könnte man so eine Stomschnittstelle nicht auch einfach digital mit 
einem Controller (wäre ja hier sogar preiswerter) realisieren? Also in 
diesem Fall: I2C-Sensor wird von einem neben ihm plazierten PIC 
abgefragt. Der Controller bereitet die Daten auf 
(Zweierkomplement->ASCII) und gibt sie ganz normal über ein beliebiges 
serielles Protokoll aus. Nur ist der Ausgang eben nicht an eine normale 
Leitung sondern über einen Widerstand auf Masse verbunden und verändert 
somit seinen Stromverbrauch.
Auf der entfernten Schaltung wird wieder über den Spannungsabfall der 
Sensorplatine gemessen und über einen simplen OpAmp in ein 0/5V-Signal 
gewandelt.

Sicher technologisch nicht das Ei des Kolumbus, aber mich würde spontan 
interessieren, ob das auch funktionieren könnte.

Peter

von Hmm... (Gast)


Lesenswert?

Naja,wenn du die Sache so lösen magst,kannst du ja die Daten von einem 
Pic oder AVR über eine gaanz kurze Verbindung einlesen lassen und dann 
über die UART an eine MAX485 oder ähnliches weitergeben...

von Daniel D. (daniel1976d)


Lesenswert?

Ich moechte kurz hervorheben das CAN doch noch deutlich besser ist als 
RS485.

MfG

von Thomas (kosmos)


Lesenswert?

Wieso nicht einfach einfach? Analogen Temperatursensor mit RC Glied so 
entstören das schnelle Impulse keine Änderung des Signals bewirken. 
Notfalls auch in Software dann benötigt man nicht mal ein RC-Filter.

von Olaf (Gast)


Lesenswert?

> Wieso nicht einfach einfach?

Weil man mal wieder schlauer sein will als die Autohersteller, die ja 
einfach NTC-Widerstaende verwenden. Ausserdem koennte es sein das es 
noch eine Angst vor dem Operationsverstaerker gibt. Wir leben ja nun im 
Nur-Digital-ist-gut Zeitalter. :-)


Olaf

von Frank K. (fchk)


Lesenswert?

Peter schrieb:

> Kurz zum Verständnis:
> Der Konverter kommt also an den Temperatursensor und wird dort analog in
> einen Strom zwischen 4 und 20mA gewandelt. Controllerseitig liefere ich
> diese 20mA und wandle sie über den Spannungsabfall über einem Widerstand
> in eine Spannung, die ich dann auf den AD gebe?

In diesem Zusammenhang darfst Du Dir die Analog Devices AD590 und AD592 
anschauen. Zitat "The AD590 is particularly useful in remote sensing 
applications. The device is insensitive to voltage drops over long lines 
due to its high impedance current output. Any well insulated twisted 
pair is sufficient for operation hundreds of feet from the receiving 
circuitry."

Der AD590 bekommt 5v und läßt einen Strom durch, der in µA gemessen der 
Temperatur in °K entspricht. Heißt also: Bei 25°C=298.2°K gibts 298.2µA. 
Einfach, was? Da das Teil einen Strom einprägt, funktioniert das auch 
mit langen Zuleitungen (siehe Zitat).

Das Teil gibts unter anderem bei Réichelt, ist also kauf- und bezahlbar.

Das ist gegenüber I2C die störsicherere Variante.

fchk

von Paulchen Panther (Gast)


Lesenswert?

Hi!

Die Blaupunkt Radios verwenden auch I2C zum steuern der Wechsler.
Wie du schon richtig geschrieben hast, ist es gut, möglichst geringe 
Pullupwiderstände zu verwenden. Die Eingänge (SDA auf beiden Seiten, 
SCLK auf er Slave Seite) am besten nicht direkt anschließen sondern über 
ein RC-Tiefpassfilter leiten. R*C (=tau) sollte ca. 1/10 der Bitdauer 
sein.

Gruß
Stefan

von MCUA (Gast)


Lesenswert?

>in einem kleinen Projekt im Auto wollte ich unter anderem auch
>I2C-Temperatursensoren (LM75) im Motorraum verbauen
Warum nimmst du nicht einfach analoge Temp-Sensoren, bsp KTY.., statt 
dem (störanfällgen) Bus, und hängst die ganz einfach an den uC dran?
(Mit Varistor)
Etwaige Störsgnale an den Temp-Sensoren kann man dann ganz einfach 
rausfiltern.


Im Motorraum würde ich keinen Bus mit TTL-Signalen, dessen Protokoll 
nicht mehrfach gesichert ist, rein legen.

von Anja (Gast)


Lesenswert?

Thomas O. schrieb:
> Notfalls auch in Software dann benötigt man nicht mal ein RC-Filter.

RC-Filter braucht man immer wenn zeit-diskret abgetastet wird. 
(Anti-Aliasing Filter).
Im Auto auch gegen Kurzschlüsse nach Batteriepotential wenn sich der 
Kabelbaum nach ein paar Jahren durchgescheuert hat, bzw. auch als 
ergänzender Schutz gegen ESD.

Gruß Anja

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.