mirror of https://github.com/arendst/Tasmota.git
75 lines
2.4 KiB
C++
75 lines
2.4 KiB
C++
/***************************************************
|
|
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 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!");
|
|
|
|
max.begin(MAX31865_3WIRE); // 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);
|
|
}
|