als Anfänger in der Arduino / Mikrocontroller Welt habe ich folgendes Problem und hoffe Ihr könnt mir weiterhelfen.
Beim auslesen des Temperaturmoduls TEMOD-I2C-R1 (Sensor PT1000) über mein Arduino UNO Rev.3 über SDA und SCL sind alle "temperaturrelevanten" Bits immer 1 - auch bei Temperaturänderung . (Es werden 2 Bytes zurückgegeben) (Sketch weiter unten beigefügt)
Kann es sein, das man das Modul TEMOD-I2C zuerst "einmalig programmieren" muss damit dieses über I2C kommuniziert (wenn ja, wie würde so etwas gehen) , oder ist das Modul u.U. defekt, bzw. müssen prinzipiell alle I2C Module zuerst einmal "programmiert" werden ?
#include <Wire.h>
int temp = 0;
float temperatur = 0.0;
void setup()
{
Serial.begin(9600);
Wire.begin();
}
void loop()
{
Wire.requestFrom(0x78,2); // read 2 bytes
byte b0 = Wire.read(); // receive 1st byte
byte b1 = Wire.read(); // receive 2nd byte
Serial.println(b0); // output for test only
Serial.println(b1); // output for test only
byte error = (b0 >> 7);
if (error == 1)
{
Serial.println("Error");
}
else
{
temp = b0 << 8 | b1;
temp = temp &0x7FFF;
temperatur = temp / 256.0 - 32.0;
Serial.print("Temperatur : ");
Serial.println(temperatur);
}
delay(3000);
}
Ausgabe sieht dann so aus: (Die ersten beiden Zeilen sind natürlich zum prüfen ob sich der Wert eines Bytes ändert)
Stimmt deine Spannungsversorgung? Das Modul läuft mit 6-24V. Mit 5V geht es wahrscheinlich nicht.
Das Ding hat auch einen Analogausgang. Da sollte man mit einem Multimeter was messen können. Oder mit analogRead(). Unabhängig von der I2C Kommunikation. Digital einlesen ist natürlich besser, aber so kannst du mal testen ober der Sensor überhaupt arbeitet.
Hallo,
nein, den Sensor besitze ich zum Glück nicht.
Der Sketch macht im Prinzip das gleiche- man kann also von falsch angeschlossener Hardware ausgehen.
Betriebsspannung ist 6 bis 24v. I2C, 0 bis 5V.
Hast Du 6v als Spannung und den I2C-Bus richtig aufgebaut?
Gruß und Spaß
Andreas
Die Spannungsversorgung des Arduino UNO wird ja über PC - USB bereitgestellt.
Der Widerstand der Sensors (PT1000) ändert sich durch Handerwärmung, allerdings wenn ich den Analogausgang des Moduls (Pin5) gegen Minus oder gegen Plus (der Batterie) messe kann ich im keine Spannungsänderung im Bereich 2 Nachkommastellen, mit Handerwärmung feststellen.
Hallo,
das:
I2C-Interface
Die Kommunikation entspricht dem I2C Protokoll. Die Adresse des Bausteins ist default 0x78, unter dieser Adresse ist der Baustein immer anzusprechen. Zusa?tzlich kann bei der Konfiguration im Werk eine zweite Adresse programmiert werden, unter welcher der Sensor angesprochen werden kann.
Ab der Adresse 0x78 ko?nnen 4 Bytes gelesen werden. Es gilt folgen- de Zuordnung
Daten 0x78
Byte_0 MSB Thermospannung Byte_1 LSB Thermospannung Byte_2 MSB Ausgleichstellen-Temperatur Byte_3 LSB Ausgleichstellen- Temperatur
hast Du berücksichtigt.
Gruß und Spaß
Andreas
P.S. Seite 2 und 3?
SkobyMobil:
Hallo,
das:
I2C-Interface
Die Kommunikation entspricht dem I2C Protokoll. Die Adresse des Bausteins ist default 0x78, unter dieser Adresse ist der Baustein immer anzusprechen. Zusa?tzlich kann bei der Konfiguration im Werk eine zweite Adresse programmiert werden, unter welcher der Sensor angesprochen werden kann.
Ab der Adresse 0x78 ko?nnen 4 Bytes gelesen werden. Es gilt folgen- de Zuordnung
Daten 0x78
Byte_0 MSB Thermospannung Byte_1 LSB Thermospannung Byte_2 MSB Ausgleichstellen-Temperatur Byte_3 LSB Ausgleichstellen- Temperatur
hast Du berücksichtigt.
Gruß und Spaß
Andreas
P.S. Seite 2 und 3?
Das von Dir verlinkte PDF gehört zu einem ähnlichen Modul aber nicht zum Gleichen. Hat also prinzipiell mit meiner Frage warum mein Modul weder einen Änderung am analogen Ausgang noch eine Änderung über die ausgelesene Bytes anzeigt , nichts zu tun. Trotzdem Danke.
Nachdem ich ein neues Modul TEMOD-I2C-R1 bestellt und erhalten habe, funktioniert alles auf Anhieb.
(Das erste Modul was ich erhalten habe war wohl ein Rückläufer o.Ä , da im neu erhaltenen das korrekte Datenblatt dabei war, und noch der Aufkleber auf dem Chip mit der genauen Bezeichnung des Moduls)
PS: Die Versorgungsspannung des Moduls ist zwar von 6 - 24 Volt angegeben, funktioniert nach meinen ersten Tests aber auch mit 5 Volt vom Arduino Board Ausgang (I2C und Analog) ohne BISHER erkennbaren Nachteile ... Ob die Genauigkeit in bestimmten Temperaturbereichen darunter "leidet" habe ich noch nicht getestet.
etwas spät aber doch noch.
Habe soeben auch mit dem Problem wie Thomas gekämpft.
Nun des Rätsels Lösung ist:
Das Modul TEMOD-I2C-R3 ist doppelseitig bestückt aber die Lötanschlüsse für den PT1000 sind nicht durchgeführt. Das heisst wenn ich den PT1000 auf der Seite mit dem IC anlöte dann habe ich das selbe Resultat wie Thomas am Anfang. Löte ich den PT1000 auf der anderen Platinenseite an so funktioniert alles bestens.
Das sollte aber auf jedenfall vom Hersteller kommuniziert werden.