The PT100 is a precision temperature sensing device that utilizes the predictable change in electrical resistance of platinum correlating to temperature. It is a Resistance Temperature Detector (RTD) with a nominal resistance of 100 ohms at 0°C. PT100 sensors are widely used in industrial and laboratory applications due to their high accuracy, long-term stability, and repeatability.
Pin Number | Description |
---|---|
1 | RTD lead 1 |
2 | RTD lead 2 (optional) |
3 | RTD lead 3 (optional) |
Note: PT100 sensors can come in 2-wire, 3-wire, or 4-wire configurations. The table above shows a simplified 2-wire configuration.
Q: Can I use a PT100 sensor with an Arduino UNO? A: Yes, but you will need additional circuitry, such as an ADC with RTD support or an RTD-to-digital converter module.
Q: How often should I calibrate my PT100 sensor? A: Calibration frequency depends on the usage conditions and required accuracy. It is typically recommended to calibrate annually or after any mechanical shock or exposure to extreme temperatures.
Q: What is the difference between a 2-wire and a 4-wire PT100? A: A 2-wire PT100 has the simplest configuration but is most susceptible to lead resistance errors. A 4-wire PT100 offers the best accuracy by completely eliminating the effect of lead resistance.
Below is an example of how to interface a PT100 sensor with an Arduino UNO using a MAX31865 RTD-to-digital converter module.
#include <SPI.h>
#include <Adafruit_MAX31865.h>
// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 max = Adafruit_MAX31865(10, 11, 12, 13);
// or use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 max = Adafruit_MAX31865(10);
void setup() {
Serial.begin(115200);
Serial.println("MAX31865 PT100 Sensor Test");
max.begin(MAX31865_3WIRE); // Set to 2WIRE or 4WIRE as needed
}
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);
}
Note: The above code uses the Adafruit_MAX31865 library to interface with the MAX31865 module. Make sure to install the library before compiling the code. The RREF
and RNOMINAL
constants should be set according to your specific hardware setup.
This documentation provides a comprehensive guide to using the PT100 sensor. For further assistance, consult the manufacturer's datasheet and application notes.