MAX31865 PT1000 Temperatur -242grad

Hallo,
ich versuche gerade meinen Sensor MAX31865 für einen PT1000 zu programmieren, Fehlermeldungen bekomm ich keine, aber mein Serial Monitor gibt als Temperatur -242 GRAD aus. Programmiere mit einem Arduino Nano33 iot und RREF 432. Verwenden tu ich einen 2 Wire PT1000.

Hoffe auf schnelle Rückmeldung

#include <Adafruit_MAX31865.h>
Adafruit_MAX31865 maxSensor = Adafruit_MAX31865(10, 11, 12, 13);
#define RREF 4301.0
#define RNOMINAL 1000.0

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit MAX31865 PT1000 Sensor Test!");
  maxSensor.begin(MAX31865_2WIRE);
}

void loop() 
{
  uint16_t rtd = maxSensor.readRTD();
  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(maxSensor.temperature(RNOMINAL, RREF));

  //-------------------------
  uint8_t fault = maxSensor.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");
    }
    maxSensor.clearFault();
  }
  Serial.println();
  delay(1000);
}

Wie ist der angeklemmt am MAX1865?

hättest du eine idee welcher fehler vorliegen könnte weil ich bin schon am verzweifeln und bekomme kopfschmerzen

Habe das Ding nicht, nur nach Datenblatt geschaut wen auf den Mittleren Klemmen dann ist OK. SDI ist auf MOSI, SDO auf MISO? Wen Ja dann gebe auf.

Nochmal die Frage:

Und dazu die zweite Frage: Welchen Sensor hast Du?

Laut Meßwert könnte es ein PT100 sein und kein PT1000.
Falls Du zweifel hast miß mit einem Multimeter.
Grüße Uwe

Kompiliert sauber keine Warnungen?
Was mir fehlt ist

#include <SPI.h>

Hi uwe danke für die Antwort aber der MAX31865 kann als rref 4301 oder 432 haben dies ist dann für einen PT1000. 4300 oder 431 als rref dann ist es ein PT100 bzw die genannten zahlen sind für die jeweiligen Fühler

ich versuchs gleich und danke für den Hinweis

Warnung hat es auch keine gegeben

Dan bin ich raus viel Erfolg.

jetzt warte doch mal,
der fühler hat einen Widerstand von 1000 Ohm hab gerade gemessen und habe auch versucht mit SPI.h kommt immer noch das gleiche

Ich lese wen was neues kommt, nur weis nicht wie soll dir helfen.

wenn SDI auf MOSI wäre und SDO auf MISO was passiert dann

Hallo,

das ist das Code Bsp. der Lib?
Ich vermute es ist was falsch oder unvollständig angeklemmt.
Oder Lötstelle hat ein Problem?
Alle Verbindungen durchmessen. Im Spannungslosen Zustand!
Ansonsten in aller Ruhe nochmal die Beschreibung durchgehen. adafruit max31865

wenn SDI auf MOSI wäre und SDO auf MISO was passiert dann

So soll das ja sein, bei SPI und I2C wird nichts gekreuzt.

Ja is es habe die noch offen , habe gesucht nach SPI.h ist nicht deklariert in der Lib.

ok weil ich habe eben gerade nachgeschaut und den Code musste ich dann selber noch verbessern da ein Konflikt aufgetreten ist.
diesen habe ich dann richtig gestellt und konnte die Temperatur messen. Zudem musste ich 3 neue MAX bestellen( habe diese auf Amazon bestellt) und bekam dann als rref 432 normal macht es keinen Unterschied aber ich kann seit dem nicht mehr messen

include <Adafruit_MAX31865.h>
#include <SPI.h>
Adafruit_MAX31865 maxSensor = Adafruit_MAX31865(8, 11, 12, 13);
#define RREF 432.0
#define RNOMINAL 1000.0

void setup() {
  Serial.begin(115200);
  Serial.println("Adafruit MAX31865 PT1000 Sensor Test!");
  maxSensor.begin(MAX31865_2WIRE);
}

void loop() 
{
  uint16_t rtd = maxSensor.readRTD();
  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(maxSensor.temperature(RNOMINAL, RREF));

  //-------------------------
  uint8_t fault = maxSensor.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");
    }
    maxSensor.clearFault();
  }
  Serial.println();
  delay(1000);
}


habe jetzt SPI.h drinnen bekomme -242 raus

Versuch mal das. Der CS muss auf D8 sein, und zeige was Serial monitor ausgibt, alles kopieren und hier einfügen.

/*************************************************** 
  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 <SPI.h>
#include <Adafruit_MAX31865.h>

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

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

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

  thermo.begin(MAX31865_3WIRE);  // set to 2WIRE or 4WIRE as necessary
}


void loop() {
  uint16_t rtd = thermo.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(thermo.temperature(RNOMINAL, RREF));

  // Check and print any faults
  uint8_t fault = thermo.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"); 
    }
    thermo.clearFault();
  }
  Serial.println();
  delay(1000);
}

komischer immer noch das gleiche
Bild_2024-03-13_201641410