@ec2021
@anon92864395
@david_2018
#include <Adafruit_MAX31865.h>
#include <SD.h>
#include <SPI.h>
#define SD_CARD 53
const byte temp_pin[4] = {22,51,50,52};
Adafruit_MAX31865 thermo = Adafruit_MAX31865(temp_pin[0],temp_pin[1],temp_pin[2],temp_pin[3]);
#define RREF 400.0
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 Sensor Test!");
thermo.begin(MAX31865_3WIRE);
pinMode(SD_CARD, OUTPUT); digitalWrite(SD_CARD, LOW);
pinMode(temp_pin[0], OUTPUT); digitalWrite(temp_pin[0], LOW);
if (SD.begin(SD_CARD)) { Serial.println("SD-INIT SUCCESS"); }
else{ Serial.println("SD-INIT FAIL"); }
}
long numbets = 0;
void loop() {
Serial.println("---------------------------------------------------");
digitalWrite(temp_pin[0], HIGH);digitalWrite(SD_CARD, LOW);
delay(10);
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);
Serial.println("---------------------------------------------------");
digitalWrite(temp_pin[0], LOW);digitalWrite(SD_CARD, HIGH);
delay(10);
numbets++;
File myFile;
myFile.flush(); delay(2);
myFile = SD.open("SOME.txt", FILE_WRITE);
if (myFile) {
String msg = "HELLO TEST-"+String(numbets);
myFile.println(msg);
Serial.println(msg);
}
delay(10000);
}
Blockquote

#include <Adafruit_MAX31865.h>
#include <SD.h>
#include <SPI.h>
#define SD_CARD 53
const byte temp_pin[4] = {22,51,50,52};
Adafruit_MAX31865 thermo = Adafruit_MAX31865(temp_pin[0],temp_pin[1],temp_pin[2],temp_pin[3]);
#define RREF 400.0
#define RNOMINAL 100.0
void setup() {
Serial.begin(115200);
Serial.println("Adafruit MAX31865 PT100 Sensor Test!");
thermo.begin(MAX31865_3WIRE);
pinMode(SD_CARD, OUTPUT); digitalWrite(SD_CARD, LOW);
pinMode(temp_pin[0], OUTPUT); digitalWrite(temp_pin[0], LOW);
if (SD.begin(SD_CARD)) { Serial.println("SD-INIT SUCCESS"); }
else{ Serial.println("SD-INIT FAIL"); }
}
long numbets = 0;
void loop() {
Serial.println("---------------------------------------------------");
digitalWrite(temp_pin[0], HIGH);digitalWrite(SD_CARD, LOW);
delay(10);
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);
Serial.println("---------------------------------------------------");
digitalWrite(temp_pin[0], LOW);digitalWrite(SD_CARD, HIGH);
delay(10);
//-----------------------------------------------------------------------------------//
SPI.end(); SD.begin(SD_CARD); delay(1);
//-----------------------------------------------------------------------------------//
numbets++;
File myFile;
myFile.flush(); delay(2);
myFile = SD.open("SOME.txt", FILE_WRITE);
if (myFile) {
String msg = "HELLO TEST-"+String(numbets);
myFile.println(msg);
Serial.println(msg);
}
delay(10000);
}
'begin' needs to be set again to measure the PT-100 temperature.
The problem is that sometimes it gets stuck.
I don't know why.