PT1000 Auflösung/ Genauigkeit

Hallo

Ich möchte einen PT1000 verwenden und mich würde vorab interessieren, ob ich bei dem einfachsten Anschluss, Spannungsteiler mit einem 1k 0,1% Widerstand an A0 im Bereich von 10 - 60°C eine Genauigkeit von 1°C, idealerweise 0,5°C erreichen kann.

Was ich zumindest herausgefunden habe, kann ich den Leitungswiderstand vernachlässigen, da er nur 0,04°C/m beträgt und die Leitung sogar unter 1m ist.

Ich habe mir beim Cinesen des Vertrauens dieses "Detektormodul" gekauft, ist baugleich mit dem von Adafruit, aber mit dem Beispielcode der Adafruit-Bibliothek bekomme ich nur unidentifizierbare Zeichen auf den seriellen Monitor. Angeschlossen wie in der Adafruit-Anleitung, im Code auf 2Wire und den PT1000 ausgebessert. Auf der kleinen Platine sind auch die richtigen Brücken gelötet.

DS18B20 kann ich für diese eine Messstelle nicht nehmen, da der PT1000, den ich habe, einen Durchmesser von nur 3mm hat (Edelstahl) und deshalb für mich ideal ist, der DS wäre mir zu dick (d = 6mm). DS habe ich an anderen Stellen in OneWire angeschlossen, das funktioniert gut.

LG Friedrich

Hi,

ich habe keine Erfahrung mit Platinsensoren, aber einfach in ein Spannungsteiler klemmen dürfte nicht funktionieren.
Achte auf den erlaubten Strom (Selbsterwärmung), viele dürfen nur im Bereich von 0,1mA und 1mA betrieben werden.
Wenn Du nichts gekapseltes brauchst, kämen noch genaue NTCs in frage, die gibt es auch in klein, und sind über die Steinhart-Hart Gleichung gut zu händeln. Ich habe hier testweise einen TS-NTC-103A von B+B Sensors am laufen.

Gruß André

Nein.
Du kannst keine PT1000 mittels Spannungsteiler auslesen. Dazu sind die Widerstandsänderungen in Funktion der Temperatur zu gering. Du hast eine Widerstandsänderung von 1000 Ohm bei 0°C zu 1232,4 Ohm bei 60°C.
Du brauchst eine Auswertungsschaltung wie zB den MAX31865. Wobei RREF 4kOhm sein sollte.

Gib uns mal den Sketch den Du verwendest.

Grüße Uwe

Ok, danke.
Der Sketch ist als Beispiel in der Bibliothek:

[code]
/*************************************************** 
  This is a library for the Adafruit PT100/P1000 RTD Sensor w/MAX31865

  Designed specifically to work with the Adafruit RTD Sensor
  ----> https://www.adafruit.com/products/3328

  This sensor uses SPI to communicate, 4 pins are required to  
  interface
  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution
 ****************************************************/

#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 max = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF      4300.0
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  1000.0

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit MAX31865 PT100 Sensor Test!");

  max.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
}


void loop() {
  uint16_t rtd = max.readRTD();

  Serial.print("RTD value: "); Serial.println(rtd);
  float ratio = rtd;
  ratio /= 32768;
  Serial.print("Ratio = "); Serial.println(ratio,8);
  Serial.print("Resistance = "); Serial.println(RREF*ratio,8);
  Serial.print("Temperature = "); Serial.println(max.temperature(RNOMINAL, RREF));

  // Check and print any faults
  uint8_t fault = max.readFault();
  if (fault) {
    Serial.print("Fault 0x"); Serial.println(fault, HEX);
    if (fault & MAX31865_FAULT_HIGHTHRESH) {
      Serial.println("RTD High Threshold"); 
    }
    if (fault & MAX31865_FAULT_LOWTHRESH) {
      Serial.println("RTD Low Threshold"); 
    }
    if (fault & MAX31865_FAULT_REFINLOW) {
      Serial.println("REFIN- > 0.85 x Bias"); 
    }
    if (fault & MAX31865_FAULT_REFINHIGH) {
      Serial.println("REFIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_RTDINLOW) {
      Serial.println("RTDIN- < 0.85 x Bias - FORCE- open"); 
    }
    if (fault & MAX31865_FAULT_OVUV) {
      Serial.println("Under/Over voltage"); 
    }
    max.clearFault();
  }
  Serial.println();
  delay(1000);
}

Es werden bei mir am seriellen Monitor, wie gesagt, nur irgendwelche unlesbare Zeichen, hauptsächlich leere Vierecke, ausgegeben. Und das in einer Reihe, anscheinend nicht mal das Serial.println der vorletzten Zeile, delay passt.

Hast Du auf dem Terminal die BAUDrate auf 115200 gestellt?

Grüße Uwe

uwefed: Hast Du auf dem Terminal die BAUDrate auf 115200 gestellt?

Grüße Uwe

Ich trau' mir's jetzt fast nicht sagen.....

Danke! Jetzt funktioniert es am seriellen Monitor. Dann hat sich das mit dem Spannungsteiler erledigt.

LG Friedric

uwefed:
… Wobei RREF 4kOhm sein sollte…

Grüße Uwe

D.h., ich sollte den umlöten, denn es ist ein 430 Ohm Widerstand drinnen (Code 431)?
Die Raumtemperatur wäre nämlich momentan 988,79°C…

LG
Friedrich

Wenn Du umlötest dann besorg Dir einen genauen Widerstand ( der genaue Wert ist nicht so wichtig, wichtig ist die Tolleranz). Adafruit montiert auf ihren Platinen einen 4300 Ohm mit 0,1%.

Grüße Uwe

Da kommt mir jetzt eine andere Idee:

Was ist, wenn ich statt dem 4k3 Festwiderstand einen 5k Spindeltrimmer einbaue? Kann ich dann die angezeigte Temperatur (in kleinem) Rahmen justieren? Ich habe mir aus einem Haufen DS18B20 3 Stück ausgesucht, die exakt die selbe Temperatur anzeigen und wenn ich dann den PT1000 auch genau darauf einstellen könnte, wäre das perfekt! Falls diese Idee Sinn macht und nicht völliger Humbug ist, soll ich dann die Justage ca. in der Mitte des von mir gewünschten Temperaturbereichs durchführen oder genügt die Raumtemperatur?

LG Friedrich

Ist nicht notwendig weil Du sowieso ein Verhältnis der beiden Widerstände erhälst und diese über einen Faktor umrechnen mußt. Ein 0,1% Festwiderstand hat bessere Eigenschaften bezüglich Langzeitstabilität als ein Spindeltrimmer. Grüße Uwe

Hallo Du benötigst zwei Temperaturen als Referenz Nullpunkt und Steigung

Also Eiswasser und Raumtemperatur würde ich nehmen

Heinz

Ok, danke.

Hi

Du kannst Dir bei Deinen DS18B20 auch ‘merken’, wie viel Diese ‘falsch’ gehen - Das kann man in den User-Bytes speichern, sind eigentlich für Alarm-Temperaturen gedacht, wenn man Die aber nicht benötigt, kann man Sich Da eigene Daten rein packen.
(ID, Abweichung vom ‘Normal’ oder so Zeug).

MfG