Forum: Mikrocontroller und Digitale Elektronik I2C Bus beeinflusst Temperaturmessung


von Nils (Gast)


Lesenswert?

Hallo ich habe folgendes Setup:

Einen Arduino Mega2560 der als Slave in einem I2C Bus fungiert und über 
den SPI Bus 5 Thermoelemente ausliest (MAX6675).

Einen Arduino Mega2560 der als Master.


Folgendes Problem:

Das Auslesen der Temperaturen am Slave direkt mit Serial.println(..);
funktioniert sehr gut. Sobald ich jedoch den Master an den Strom stecke 
der über die SDA,SCL und den Ground PIN mit dem Slave verbunden ist, 
kriege ich ein dauerhaftes Offset von ca. -1 bis -3 C° in der Messung 
oder auch komplett verfälschte Messungen.

Ich habe festgestellt, dass sich dieser Fehler reduziert wenn ich die 
Groundverbindung zwischen Master und Slave auflöse. Stecke ich danach 
noch SDA und SCL aus habe ich keinen Messfehler mehr.

Daraus schließe ich das der I2C Bus die Messung zu beeinflussen scheint, 
größtenteils über den Ground.

Die Frage ist wie ich das jetzt beheben soll? Der Arduino Mega hat nur 
zwei Groundpins wo ich einen eben für die Sensoren und den anderen für 
den I2C Bus benutze.

Wie kann das überhaupt sein? Es kann doch nicht sein das der I2C Bus 
solch negative Auswirkungen hat, das macht ihn ja fast vollkommen 
unbrauchbar.

von Oliver S. (oliverso)


Lesenswert?

Nils schrieb:
> Daraus schließe ich das der I2C Bus die Messung zu beeinflussen scheint,
> größtenteils über den Ground.

Vermutlich schließt du richtig. Das deutet aber auf ein Problem mit 
deiner Masseführung und/oder Stromversorgung hin, und nicht auf ein 
generelles Problem vom I2C.

Oliver

von Peter D. (peda)


Lesenswert?

Thermospannungen sind sehr klein, die lassen sich leicht stören. Der 
Anschluß sollte über geschirmte Ausgleichsleitung erfolgen, und der 
Sensor muß von Erde isoliert sein.

von MaWin (Gast)


Lesenswert?

Nils schrieb:
> Die Frage ist wie ich das jetzt beheben soll? Der Arduino Mega hat nur
> zwei Groundpins wo ich einen eben für die Sensoren und den anderen für
> den I2C Bus benutze.

Ich verstehe dein Problem nicht.

Deine Sensoren werden doch über den MAX6675 per I2C ausgelesen.

Damit ist Sensoranachluss und I2C Anschluss doch dasselbe.

Und wie soll ein I2C ohne Master funktionieren

Nils schrieb:
> Das Auslesen der Temperaturen am Slave direkt mit Serial.println(..);
> funktioniert sehr gut. Sobald ich jedoch den Master an den Strom stecke
> kriege ich ein dauerhaftes Offset

Wie wäre es mit einem Schaltplan ?

GND, SCL, SDA müssen natürlich verbunden sein, und wenn VCC nicht für 
beide derselbe ist, muss man mit Fehlströmem über die 
Eingangsschutzdioden rechnen.

von Paul (Gast)


Lesenswert?

MaWin schrieb:
> Ich verstehe dein Problem nicht.

genau, das fängt schon da an:

MaWin schrieb:
> Deine Sensoren werden doch über den MAX6675 per I2C ausgelesen.

Der MAX6675 kann kein I2C nur SPI, wie er geschrieben hat.

Es gab mal Zeiten, da hast Du die Fragen gelesen und Deine Antworten 
waren brauchbar.

von Falk B. (falk)


Lesenswert?

Nils schrieb:

> Einen Arduino Mega2560 der als Slave in einem I2C Bus fungiert und über
> den SPI Bus 5 Thermoelemente ausliest (MAX6675).
>
> Einen Arduino Mega2560 der als Master.

Also 2 Arduinos.

> Ich habe festgestellt, dass sich dieser Fehler reduziert wenn ich die
> Groundverbindung zwischen Master und Slave auflöse. Stecke ich danach
> noch SDA und SCL aus habe ich keinen Messfehler mehr.
>
> Daraus schließe ich das der I2C Bus die Messung zu beeinflussen scheint,
> größtenteils über den Ground.

Kann sein, aber das ist eher ein Dreckeffekt eines anderen Fehlers.

> Die Frage ist wie ich das jetzt beheben soll? Der Arduino Mega hat nur
> zwei Groundpins wo ich einen eben für die Sensoren und den anderen für
> den I2C Bus benutze.

Zeig uns einen Schaltplan deines Aufbaus und aussagekräftige Bilder vom 
realen Aufbau.

> Wie kann das überhaupt sein? Es kann doch nicht sein das der I2C Bus
> solch negative Auswirkungen hat,

Hat er nicht, du hast irgend ein Masseproblem. Wie sieht deine 
Stromversorgung aus? Billiges Steckernetzteil aus China?

von Nils (Gast)


Lesenswert?

Habe das Problem halbwegs einkreisen können. Es schien an einer 
fehlerhaften Steckverbindung zu einem der Temperatursensoren zu liegen. 
Ich werde jetzt eine Platine machen damit alles ohne den Kabelwust 
funktioniert und falls es dann nicht klappt melde ich mich nochmal.

Zu:

"Thermospannungen sind sehr klein, die lassen sich leicht stören. Der
Anschluß sollte über geschirmte Ausgleichsleitung erfolgen, und der
Sensor muß von Erde isoliert sein."

Sorry ich bin kein Etechnikprofi. Was versteht man unter einer 
geschirmten Ausgleichsleitung und muss von Erde isoliert sein?

Die Kabel sind doch alle standardmäßig mit nem Kunststoffmantel 
isoliert.

von Verwunderter (Gast)


Lesenswert?

Nils schrieb:
> Ich werde jetzt eine Platine machen damit alles ohne den Kabelwust
> funktioniert

Na das kann ja nach den bisherigen Erfahrungen lustig werden.

Nils schrieb:
> und falls es dann nicht klappt melde ich mich nochmal.

Es klappt sicher nicht. Kannst dich gleich melden, und das
war nicht als Spässle gemeint.

Aber es gibt jede Menge Leute die hauen erst mal eine ganze
Menge Geld in die Tonne und erst dann lassen sie sich hier
beraten.

von Pete K. (pete77)


Lesenswert?

Bitte alle GND verbinden von allen Bauteilen.

von Verwunderter (Gast)


Lesenswert?

Pete K. schrieb:
> Bitte alle GND verbinden von allen Bauteilen.

Und Abblock-Kondensatoren vermeiden wo es nur geht.

Spart eine Menge Startkapital!

von Stefan F. (Gast)


Lesenswert?

Die Stromversorgungs-Leitungen (ganz besonders GND) sollen Sternförmig 
auf einen Punkt zusammen laufen.

Und bedenke bei Steckbrettern, dass die Blechstreifen im Innern 
beträchtliche Übergangswiderstände haben.

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.