ماژول MAX31865 یک ADC و تقویت کننده برای سنسور های RTD است . RTD ها سنسور های دمای مقاومتی هستند که با تغییرات دما مقاومت آن ها تغییر می کند . یکی از مدل های کاربردی این سنسور ها ، مدل PT100 می باشد . PT100 به صورت گسترده ای در کاربرد های صنعتی استفاده می شود . این سنسور حساسیت و دقت بسیار بالایی دارد . به طور کلی در سنسور های RTD تغییرات مقاوما به نسبت دما بسیار کم است (بر خلاف NTC یا PTC ها ) یعنی با تغییر هر درجه سانتی گراد ، مقاومت سنسور تنها مقدار کوچکی تغییر خواهد کرد . از این رو اندازه گیری خروجی این سنسور ها نیازمند یک تقویت کننده می باشد .MAX31865 دارای یک طبقه تقویت کننده است که به راحتی می توانید سنسور های PT100 و PT1000 را با آن راه اندازی کنید . MAX31865 در جهت راه اندازی سنسور های PT100 و PT1000 طراحی و بهینه شده است .
در تصویر زیر پایه های این سنسور نشان داده شده است :
ماژول های MAX31865 ممکن است بخاطر سازنده های مختلف ، ظاهر متفاوتی داشته باشند اما پین های آن مشکترک است و تفاوتی با هم ندارند .
1- VIN پین تغذیه ماژول می باشد .
2- GND پین زمین ماژول است .
3- 3.3 خروجی رگولاتور ماژول می باشد .
4- سایر پین ها برای ارتباط SPI می باشند .
راه اندازی سنسور PT100 با ماژول MAX31865 :
پین های ماژول را به ترتیب زیر به آردوینو متصل کنید :
- CLK —–> Digital #13
- SDO —–> Digital #12
- SDI —–> Digital #11
- CS —–> Digital #10
- VIN——>5V
- GND——->GND
سنسور های PT100 مدل های مختلفی دارند که شامل مدل های دو سیم ، سه سیم و چهار سیم هستند . در این مثال ما از یک سنسور سه سیم استفاده خواهیم کرد لذا جامپر های ماژول را به صورت زیر به همدیگر لحیم کنید :
دقت کنید که رنگ سیم های خروجی سنسور به صورت دم سیم قرمز و یک سیم آبی است . سیم های سنسور را به صورت تصویر بالا به ماژول متصل کنید و در صورتی که پین های سنسور شما مشخص نبود ، دو سیم قرمز نسبت به هم مقاومتی در حد 2 اهم دارند .
کد های آردوینو :
#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(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!");
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);
}



