Last active
January 14, 2022 06:27
-
-
Save Noschvie/2340489bb96f4c8767546f80ab736191 to your computer and use it in GitHub Desktop.
Arduino Example: Adafruit P1000 RTD Sensor / MAX31865
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*************************************************** | |
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 | |
// NodeMCU pins connected to: D8, D7, D6, D5 | |
Adafruit_MAX31865 thermo = Adafruit_MAX31865(15, 13, 12, 14); | |
// 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 PT1000 Sensor Test!"); | |
thermo.begin(MAX31865_2WIRE); // 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(2000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment