راه اندازی سنسور دما PT100 توسط ماژول MAX31865 با دقت وحشتناک
معرفی سنسور دما
RTD یا Resistance Temperature Detector به معنای آشکارساز دمای مقاومتی است که نوعی مقاومت متغیر حساس به دما است یعنی به وسیله تغییرات دمایی، مقاومتش تغییر میکند. در واقع با اندازهگیری مقاومت آن، میتوان دمای آن را تعیین نمود. به همین دلیل این ابزار به عنوان سنسور دما مورد استفاده قرار میگیرد.
رایجترین نوع RTD، سنسور PT100 میباشد که از جنس پلاتین بوده و مقاومت آن در صفر درجه سانتیگراد برابر 100 اهم میباشد.

انواع سنسور PT100
سنسور های PT100 معمولا در 3 تیپ رایج و به صورت دو سیمه، سه سیمه و چهار سیمه در بازار ایران یافت میشوند:
- سنسور PT100 ساده که دارای رنج دمایی 200- تا 400+درجه سانتیگراد می باشد.
- سنسور PT100 سرامیکی که دارای رنج دمایی 200- تا 600+ درجه سانتیگراد می باشد.
- سنسور PT100 قلاف کونیک که دارای رنج دمایی 200- تا 800+ درجه سانتیگراد می باشد.
از آنجایی که سنسور PT100 با بازه تغییرات مقاومتی بسیار ناچیز معمولا با سیم در متراژهای مختلف ارائه و استفاده میشود، وجود مقاومت خود سیم که در حالات و کیفیتهای مختلف متغیر است، ممکن است مسبب خطا در قرائت مقدار مقاومت متناسب با دمای اندازه گیری شود. لذا توجه داشته باشید که PT100 در مدلها و شکلهای مختلفی نظیر دوسیمه، سه سیمه، چهارسیمه و… ارائه میشود.
PT100 دو سیمه نسبت به انواع دیگر دارای کمترین دقت میباشد، چراکه هیچ راهی برای محاسبه و حذف مقاومت خود سیم وجود ندارد. البته اگرچه با تراشه MAX31865 که در ادامه به آن می پردازیم دقت عملیات اندازه گیری مطمئن تر میشود اما ساختار سنسورهای دو سیم که از طول سیم بالا برخوردار هستند هرچند ناچیز ولی محکوم به وجود خطا هستند.
بنابراین، توصیه می شود برای دستیابی به دقت بسیار بالاتر یا از سنسورهای 3 و 4 سیم بهره ببرید یا ناگزیر از سیم های کوتاه استفاده کنید.
PT100 سه سیمه نسبت به مدل دو سیمه دارای دقت بیشتر و نسبت به مدل چهار سیمه دارای دقت کمتری است، زیرا با وجود سیم سوم می توان به صورت نسبی مقاومت مسیر را محاسبه و مقدار آن را در اندازه گیری لحاظ کرد.
PT100 چهار سیمه در پروژه هایی که دقت بالایی مدنظر است مورد استفاده قرار می گیرند. در این مدل از سنسورها مقاومت واقعی هر یک از سیم ها در هر متراژی را می توان اندازه گیری و حذف کرد.
راه اندازی سنسورهای PT100
از قدیم برای راهاندازی سنسورهای PT100 از پل وتسون استفاده می شود که در مورد آن در اینترنت مطالب کافی موجود است.
با استفاده از پل وتسون می توان میزان تغییرات مقاومت سنسور را به تغییرات ولتاژ خروجی نسبت داده و رابطهی خطی تغییرات مقاومت و ولتاژ خروجی را به دست آورد. تعیین میزان مقاومتهای دیگر پل وتسون با توجه به جریان عبوری از سنسور تعیین میشود که معمولا این جریان کمتر از یک میلیآمپر است.
در صورت افزایش جریان میزان دمای درون سنسور افزایش پیدا کرده و باعث ایجاد خطا میگردد.
از آنجا که میزان تغییرات مقاومت در سنسورهای PT100 ناچیز بوده و در نتیجه تغییرات ولتاژ روی آن بسیار اندک است، افزودن یک تقویتکننده تفاضلی به خروجی ضروری است تا باعث افزایش حساسیت سنسور شود.
نهایتا خروجی تقویتشده به میکروکنترلر یا… متصل و با توجه به رابطه مقاومت به ولتاژ خروجی میزان مقاومت متغیر را محاسبه نموده و از رابطه مقاومت و دما، مقدار دما مشخص میشود.
راه اندازی سنسورهای PT100 با روش قدیمی ذکر شده کمی مشکل است و احتمال ایجاد خطا در صورت طراحی غیر اصولی، کیفیت پایین تقویت کننده تفاضلی و… زیاد است، از این رو شرکت های معتبر دنیا نظیر Maxim Integrated با ارائه چیپ های تخصصی راه اندازی این سنسورها را ساده و اصولی کرده اند. در ادامه به یکی از پیشرفته ترین تراشه های اندازی گیر سنسور دما PT100 میپردازیم.
معرفی ماژول MAX31865
ماژول MAX31865 که از تراشه MAX31865 بهره میبرد، یک مبدل آنالوگ به دیجیتال 15 بیتی است که با استفاده آن می توانیم مقادیر آنالوگ RTD را به صورت دیجیتال تحت پروتکل SPI دریافت کنیم.


این ماژول از انواع RTD های پلاتینی مانند PT100 تا PT1000 را پشتیبانی می کند که می توان سنسورها را به صورت دو سیمه، سه سیمه یا چهار سیمه به ماژول متصل کرد.
نحوه اتصال ماژول MAX31865 به میکروکنترلر
تراشه MAX31865 با پروتکل سریع و مطمئن SPI راه اندازی میشود و قادر است که سنسورهای PT100 را در مدل های دو سیمه، سه سیمه و چهار سیمه با هر متراژ سیمی راه اندازی کند. برای تعیین نوع سنسور و تعداد سیم آن در سخت افزار ماژول و در برنامه باید تغییراتی اعمال کنیم که در تصاویر زیر تغییرات اعمالی را مشاهده می کنید.



راه اندازی ماژول MAX31865
برای راه اندازی ماژول و خواندن مقدار دما توسط سنسور PT100 باید ابتدا ماژول را پیکربندی کنیم، سپس مقدار مقاومت PT100 را خوانده و مقدار مقاومت را طبق فرمول ارائه شده در دیتاشیت به دما تبدیل کنیم. به این منظور تیم فنی پژوهشگران جهت برنامه نویسی آسان و حرفه ای توابعی آماده کرده است که استفاده از ماژول MAX31865 را بسیار راحت کرده است.
در زیر نمونه ی برنامه راه اندازی دقیق سنسور PT100 توسط ماژول MAX31865 را مشاهده می کنید که البته برای دسترسی به توابع موجود در آن کافی است دانش فنی آن را خریداری نمایید.
void main(void) { lcd_init(16); RTD_SetConfiguration(); RTD_SetFaultThreshold(); while (1) { RTD_ReadAll(); if(RTD.FaultStatus == 0) { RTD_ReadTemperature(); sprintf(Buf,"RTD: %0.2f Ohm ",RTD.Resistance); // نمایش مقدار مقاومت lcd_gotoxy(0,0); lcd_puts(Buf); sprintf(Buf,"Temp: %0.1f \xDF\x43 ",RTD.Temperature); // نمایش دما lcd_gotoxy(0,1); lcd_puts(Buf); delay_ms(3000); } else { sprintf(Buf,"Err: %d ",RTD.FaultStatus); lcd_clear(); lcd_puts(Buf); delay_ms(3000); } } }
دانش فنی
از آنجا که تهیه محتوای آموزشی کامل و دقیق زحمات و زمان زیادی را بر دوش تیم فنی پژوهشگران نهاده است، بسته ی آموزش کاملی شامل نمونه کد پروژه راه اندازی با نرم افزار کدویژن ، فایلهای PDF آموزشی و… با هزینه ای اندک البته همراه با خدمات پشتیبانی به فروش می رسد، باشد که شاید جبران زحمات و دلگرمی اعضای محترم دپارتمان فنی پژوهشگران باشد:
نکته: بدیهی حق نشر این دانش فنی صرفا برای پژوهشگران و خریداران این محصول دانش فنی محفوظ است؛ هرگونه انتقال به غیر و استفاده تجاری شرعاً و قانوناً حرام و قابل پیگیری است.
در ادامه مدار نمونه ای از راه اندازی ساده ماژول MAX31865 مشاهده می کنید که مقدار دما توسط سنسور PT100 خوانده و روی LCD نمایش داده می شود :
سلام ببخشید برنامه ماژول max31865 به زبان بیسیک ندارید
با سلام. من اتصالات روی مدار را برای یک pt100 سه سیم مطابق شکل انجام دادم وکتابخانه Adafruit را هم نصب کردم و کدهای موجود در IDE آردوینو که در بخش file -> examples -> Adafruit_MAX31865 Library -> MAX31865 را نیز برای برد آردووینو خودم استفاده کرده ام اما فقط دمای -242.02 را نشان می دهد و مقادیر Ratio و Resistance هر دو صفر هستند. ممکن است من را جهت رفع این مشکل راهنمایی کنید.ممنون.
سلام تغذیه چند ولت هست؟ حتما باید 3.3 یا 5 ولت هم میشود وصل کرد به vcc
سلام خسته نباشید.
من این کدو گرفتم و تست کردم. فایل هگزشو ریختم روی آی سی اتمگا 8 و تغییراتو رو نشون داد.
حالا میخاستم متن روی LCD رو عوض کنم و چند تا دستور بهش اضافه کنم. توی همون کد شما، هرچی متن رو عوض میکنم و این دستورات رو اضافه میکنم تغییری توی کد نمیبینم. البته اینم بگم هیچ خطایی نمیده برنامه. انگار فایل هگزش تغییر نمیکنه.
تو روش بعد، اومدم از طریق wizard این کارو کردم. یعنی شرایط کد شما رو اعمال کردم. پروتکل SPI را با مشخصاتی که شما گفته بودین تعریف کردم
// SPI Type: Master
// SPI Clock Rate: 500/000 kHz
// SPI Clock Phase: Cycle Half
// SPI Clock Polarity: High
// SPI Data Order: MSB First
پورت b رو برای خروجی و تعریف پایه های LCD.
بعد برنامه شما رو توی این فایلی که با Wizard ایجاد کردم، کپی کردم و کامپایل کردم. هیچ erorr وجود نداره. اینجا هرچی رو کدم تغییر میدم روی LCD تغییر میکنه ولی دما و مقاومت مقدار 1f و 2f v رو نشون میده و همیشه ثابت هست.
ممنونم میشم کمک کنید.
سلام رضا جان، ابتدا پوزش بابت تاخیر. من یک تستی می خوام انجام بدید، فایلهای هگز در پوشه پروژه رو پاک کنید و دوباره کد خودتون رو کامپایل کنید، اگر همه چیز درست باشه و کد شما خطایی نداشته باشه، کد هگز دوباره ساخته میشه ولی اگر کد هگزی دوباره تولید نمیشه باید بررسی دقیقی انجام بدید.
اگر کد هگز مشکلی نداشت پیام بدید که بیشتر و عمیق تر بررسی کنیم. از تغییراتی که دادید بیشتر برام بگید تا بتونم بفهم. البته این طوری پیدا کردن باگ واقعا سخته.
با چه شماره ای تماس بگیرم من میخوام یه ماژول و صفحه سون سگمنت چیه از اونا داشته باشه که دما رو تا 999 درجه نشون بده یا 600 و در زمان برق یعنی یک ولوم باشه مثلا من دما رو روی 450 تنظیم کنم تا بیست درجه + – اختلاف ثابت بمونه و در زمان کم شدن دما جریان برق رو اضافه کنه مثلا تا 470 بعد خاموش شه تا 430 دوباره روشن شه برق بده.ترجیح میدم واقعا بصرفه باش..قیمت کلش و اینکه با چه کسی صحبت کنم رو لطف کنید و اینه شاید نیاز به دوتا شد میشه دوتا ماژول رو به یه اردینوی یا avr یا از این سخت افرار ها وصل کرد یا میتونید همش با هم برام بفرستید ممنون
واقعا عالی است.
لطغا راه اندازی سنسورهای ntcرو هم بذارید.
البته این سنسورهای راه اندازی بسیار ساده ای داره.ولی می تونه منابع سایت شمارو کامل بکنه.
البته قلق های خاصی داره.و شاید نکته ای داشته باشه که تیم شما بتونه معرفی کنه.وبتونم استفاده کنیم.
موفق باشید.
مسیله بعدی این است ک من میخوام دو عدد سنسور pt100 و pt1000 وصل کنم ایا باید دو عدد ماژول تهیه کنم؟ و این برنامه ای شما این قابلیت را دارد ک بتوانم همزمان دو عدد ماژول را راه اندازی کنم
و سوال بعدی اینه ک من میخوام در یه درجه ای از دما رسید یک رله را قطع و وصل کنم ایا برنامه شما این امکان رو ب من میدهد که دما از یه مقداری بیشتر شد من بتوانم همچین کاری کنم؟
سلام دوست عزیز
پروتکل ارتباطی این ماژول SPI است، شما می توانید چند تا ماژول را بهم وصل کنید و از طریق پایه CS آنها را کنترل کنید.
اما در برنامه ای که توسط ما آماده شده این قابلیت وجود ندارد در صورت نیاز باید این تغییرات اعمال شود.
این ماژول قابلیت خواندن سنسورهای PT100 و PT1000 را دارد که توسط مقاومت Rref می توان بهره را کنترل کرد و شما باید به ازای هر سنسور یک ماژول تهیه کنید.
کنترل رله با توجه با تغییرات دما کار راحتی است باید در برنامه چند تا شرط اضافه کنید که در صورت افزایش یا کاهش دما به رله فرمان دهد.