Adafruit MAX31865 Inbetriebnahme

Hallo alle miteinander,

nachdem ich eine Baustelle abschließen konnte, ist nun die nächste dran.

Ich habe mir einen Temperaturmessumformer (Adafruit MAX31865) und einen PT100 Temperatursensor als 2-Leiter besorgt. Nachdem ich mir die Anleitung durchgelesen habe, dachte ich mir nur “hört sich ja ganz easy an”.

Nun habe ich den Quellcode aus der Adafruit_Library eingesetzt und meine Pins entsprechend angepasst. Sonst war ja alles default_mäßig auf PT100 eingestellt. Ich kriege aber immer folgende Ausgabe:

RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = -242.02

RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = -242.02

RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = -242.02

Mein restliches Setup ist sonst noch der Arduino Mega 2560

Hier noch vorsichtshalber der 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(48, 49, 50, 51); // Use software SPI: CS, DI, DO, CLK
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 max = Adafruit_MAX31865(48);


#define RREF      430.0                                               // The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000


#define RNOMINAL  100.0                                               // 100.0 for PT100, 1000.0 for PT1000

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;                                                     // Wert durch verhältniss von Rreal und Rref
  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);
}

Was genau habe ich hier übersehen?

Vielen lieben Dank Freunde

Gruß
Flanell

Warum nutzt Du Software SPI, wenn Hardware SPI nebenan liegt?

Was genau habe ich hier übersehen?

Dieses Bild passt nicht zum Code!

Der Code nutzt Software SPI und auf dem Bild wird vermutlich Hardware SPI genutzt.

Hey danke agmue, das habe ich doch mal gleich geändert.

Jetzt sieht meine Ausgabe folgendermaßen aus

Adafruit MAX31865 PT100 Sensor Test!
RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = -242.02

RTD value: 0
Ratio = 0.00000000
Resistance = 0.00000000
Temperature = 988.79

RTD value: 32767
Ratio = 0.99996948
Resistance = 429.98687744
Temperature = 988.79
Fault 0xFF
RTD High Threshold
RTD Low Threshold
REFIN- > 0.85 x Bias
REFIN- < 0.85 x Bias - FORCE- open
RTDIN- < 0.85 x Bias - FORCE- open
Under/Over voltage

@combie:

ICh habe ein Zweileitersensor und habe beim Adafruit die entsprechenden Jumper verlötet.

aber trotzdem danke. Die Verbindungen habe ich auch gefühlt 1000 überprüft

@combie:

ICh habe ein Zweileitersensor und habe beim Adafruit die entsprechenden Jumper verlötet.

aber trotzdem danke. Die Verbindungen habe ich auch gefühlt 1000 überprüft

Ich habe von SPI und den Verbindungen zwischen SensorPlatine und Arduino geredet.

Nicht vom Fühler und seinen Anschlüssen.

Also nochmal: Dieses Bild passt nicht zum Code!
Und du sagst ja, dass du DIESEM Tutorial gefolgt bist.

Flanell:
ICh habe ein Zweileitersensor und habe beim Adafruit die entsprechenden Jumper verlötet.

aber trotzdem danke. Die Verbindungen habe ich auch gefühlt 1000 überprüft

Laut dem Meßwert hast Du aber den Sensor bzw die Brücken falsch gesetzt.
Zeig uns mal ein Foto von Deiner Verdretung des PT100 sensors bzw der Lötbrücken. Hast Du kontrolliert, hat der PT100 ca 100 Ohm oder hast Du ein Thermoelement angeschlossen?

Hast Du die Version der Platine füt den PT100? Der Unterschied ist der Widerstand Rref. Hast Du den mal nachgemessen? 4300 ist der 430 Ohm für den PT100; 4301 ist der 4300 Ohm Widerstand für den PT1000.

We put a 0.1% resistor as a reference resistor on the breakout. We have some example code that will calcuate the temperature based on the resistance for you.

The PT100 version of the breakout uses 430Ω
The PT1000 version uses 4300Ω

Grüße Uwe