ماژول 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); }