خب بالاخره بعد از مدتها برگشتیم. در قسمت قبل یک معرفی اجمالی داشتیم در مورد این سری آموزش و انواع سنسورهای دما. در این قسمت قراره در مورد اولین سنسور دما، یعنی ترموکوپل صحبت کنیم، کمی در موردش یاد بگیریم، ببینیم چطوری کار میکنه و ما چطوری میتونیم ازش استفاده کنیم.
- سنسور ترموکوپل چیست : معرفی اجمالی
- کاربردهای سنسور ترموکوپل : در چه صنایع و مصارفی استفاده میشه؟
- ساختمان ترموکوپل: توضیحی کوتاه و کماکان اجمالی بر ساختمان ترموکوپل
- تاریخچه: چی شد که سنسوری به اسم ترموکوپل اختراع شد؟
- اتصال سرد VS اتصال گرم: این Hot Junction و Cold Junction توی ترموکوپل چی هست؟ از کجا اومده؟
- انواع ترموکوپل: چرا انواع مختلفی برای ترموکوپل هست؟ تفاوتشون چیه؟
- چطور از خرابی و کاهش عمر سنسور ترموکوپل جلوگیری کنیم؟: نگهداری از سنسور ترموکوپل
- خب حالا چطور دما رو اندازهگیری کنیم؟: واضحه دیگه! قراره در مورد روشهای اندازهگیری دما صحبت کنیم
- بالاخره کدوم روش؟: بررسی میکنیم روشهای مختلف چه مزایا و معایبی دارند و کدوم بهتره
- کتابخانه: معرفی یک کتابخانه (Library) برای محاسبهی دمای ترموکوپل در کاربردهای امبدد
- منابع و وبسایتها: معرفی منابعی برای یادگیری بیشتر و رعایت حق کپی رایت 🙂
ترموکوپل
بنده خودم به دلایل نامعلومی علاقهی خاصی به این سنسور دارم. شاید به خاطر دقت بالا، یا رنج دمایی بالا و یا قیمت نسبتاً مناسب این سنسور باشه. از علاقهی من که بگذریم، این سنسور واقعاً سنسور خوبیه (!) طرز کارش جالبه، راهاندازیش نسبتاً راحته و بقیه مواردی که قبلاً اشاره شد.
در قسمت اول این سری کمی در مورد ترموکوپل یاد گرفتیم و یک ایدهی کلی الان داریم که چطوری کار میکنه اما قراره این قسمت بریم در عمق و یکم بیشتر یاد بگیریم، پس نفسها حبس، بریم که بریم:
سنسور ترموکوپل چیست؟
شمایی که داری این مطلب رو میخونی به احتمال زیاد از قبل میدونی چی هست ولی خب رسمه که از اینجا شروع کنیم و من هم تابع رسم و رسوم :))
ترموکوپل یک سنسور برای اندازهگیری دما است که بیشتر در کاربردهای صنعتی و صنایع بزرگ مثل فولاد، پتروشیمی، نفت و گاز استفاده میشه. دلیلش؟ خب چون انواع مختلفی داره که برای کاربردهای مختلف و در شرایط محیطی خشن و گوناگون میشه ازشون استفاده کرد. برای مثال در فرایند پالایش نفت، تولید مواد شیمیایی، تولید و نگهداری مواد غذایی و دارویی کنترل دقیق دما بسیار مهم و ضروریه. همچنین این سنسور میتونه در دماهای بسیار بالا و پایین استفاده بشه (از منفی 270 درجه تا بیش از 1300 درجه سانتیگراد) و در عین حال دقت خیلی خوبی هم در تمام این بازه داشته باشه. تمام این موارد و خیلی ویژگیهای دیگه باعث شده از این سنسور در صنایع مختلف به وفور استفاده بشه. از طرفی این سنسور قیمت مناسبی هم داره که باعث محبوبیت بیشتر این سنسور شده. البته طبق معمول قرار نیست همه چیز خوب باشه و نکتهی منفیای این وسط نباشه ولی از حق نگذریم کفهی مزایا و ویژگیها به نسبت معایب خیلی خیلی بیشتر سنگینی میکنه. ما هم قراره در ادامه در مورد همین موارد و خیلی بیشتر صحبت کنیم تا بیشتر با این سنسور محبوب آشنا بشیم.
کاربردهای سنسور ترموکوپل
حقیقتش موارد استفادهی این سنسور آنقدر زیاد و متنوعه که نمیشه همهی اونها رو اینجا توضیح داد اما برای این که یک شمای کلی از قابلیتها و محبوبیت سنسور ترموکوپل پیدا کنید به چند مورد از استفادههای این سنسور اشاره میکنیم:
بویلرها و اجاق گازهای صنعتی و خانگی
در بویلرها، اجاقهای گازی و سیستمهای تهویهمطبوع، ترموکوپلها بهعنوان ابزار اصلی برای نظارت بر دما به کار میروند. یکی از کاربردهای مهم این سنسورها در سیستمهای ایمنیه، به طوری که در اجاقهای گازی، اگر شعله به هر دلیلی خاموش بشه، ترموکوپل با قطع جریان گاز از بروز حادثه جلوگیری میکنه.
هوافضا و خوردروسازی
در صنایع هوافضا و خودروسازی، ترموکوپلها برای نظارت بر دماهای بحرانی در قطعات حساس مثل موتورهای جت یا خودروهای مسابقهای استفاده میشوند. در موتورهای توربینی هواپیما، دقت بالا و سرعت پاسخدهی ترموکوپلها به دلیل اهمیت کنترل دمای موتور در جلوگیری از خرابیهای احتمالی بسیار مهمه. همینطور، در خودروهای پیشرفته یا مسابقهای، نظارت بر دمای قطعات مختلف مانند موتور یا سیستمهای خنککننده به کمک این سنسورها انجام میشود.
پزشکی
یکی دیگه از حوزههای پرکاربرد ترموکوپلها در زمینهی پزشکی است. نظارت و کنترل دمای بیمار در زمان جراحی، اندازهگیری دمای دستگاههای نگهداری نوزادان، دستگاههای نگهداری خون و … از کاربردهای مهم سنسور ترموکوپل در زمینهی پزشکی هستند.
ایستگاههای هواشناسی
این مورد که دیگه کاملاً واضح و بدیهیه. اندازهگیری دقیق دمای آب و هوا در ایستگاههای هواشناسی از کاربردهای بسیار مهم سنسور ترموکوپل است.
این موارد فقط گوشهی کوچکی از کاربردهای سنسور ترموکوپل بود و فکر میکنم تا همینجا هم گستردگی استفاده از این سنسور رو متوجه شدید. بریم برسیم به ادامهی ماجرا.
ساختمان ترموکوپل
خیلی ساده بخوام بگم ترموکوپل فقط و فقط دو تا فلز با جنس متفاوته که در یک نقطه به هم وصل شدهاند. واقعاً به همین سادگیه. اما همونطور که ما از دوران مدرسه یاد گرفتیم که هر مسألهی سادهای بعداً قراره سختترین سوال بشه اینجا هم قضیه یکم بیشتر از این حرفاست.
تاریخچه سنسور ترموکوپل
یک روز سرد پاییزی (یا شاید گرم تابستانی) جناب آقای Thomas Seebeck (فیزیکدان آلمانی) خیلی بدون مقدمه کشف کرد که وقتی دو تا هادی الکتریکی با هم اختلاف دما داشته باشند یک اختلاف پتانسیل بین دو فلز ایجاد میشه (البته خیلی ناچیزه این ولتاژ). حالا اگه یه حلقهی بسته شکل بگیره ما یک جریان الکتریکی خواهیم داشت. بعداً به افتخار این کشف خارقالعاده اسم این پدیده رو از اسم کاشف اون یعنی توماس گرفتند و باز هم به فیزیک یک قضیه (اثر) دیگه اضافه شد به نام اثر سیبک یا همون Seebeck Effect.
اثر سیبک میگه وقتی ما یک فلز رو گرم میکنیم الکترونها شروع میکنند به حرکت به سمت قسمت خنکتر. حالا چرا؟ چون الکترونها همیشه میرن جایی که انرژی کمتری باشه (اینجا حرارت). خب دیگه این رو میدونیم که تجمع الکترونها در یک سمت باعث به وجود اومدن اختلاف پتانسیل میشه. البته باید توجه داشت که ولتاژ تولید شده در این حالت خیلی ناچیز (در حدود میکرو ولت) است. خب حالا ما اگه بتونیم همین ولتاژ ناچیز رو اندازهگیری کنیم میتونیم گرم شدن فلز رو تشخیص بدیم. حالا این که چطور مقدار تغییر دما رو بفهمیم هم داستانیه که قراره در موردش صحبت کنیم.
توی پرانتز بگم که اگر کمی در مورد این اثر عمیقتر فکر کرده باشید احتمالاً به این نتیجه رسیدید که حالت برعکس این قضیه نیز باید صادق باشه. یعنی با اعمال ولتاژ بین دو فلز با جنس متفاوت باید بین اون دو فلز اختلاف دمایی ایجاد بشه و یکیشون سرد و اون یکی گرم بشه.
اگر این مورد به ذهن شما رسیده باشه به شما تبریک میگم چون در دنیای فیزیک 12 سال طول کشید تا فیزیکدانی به اسم Jean Charles Athanase Peltier بیاد و به این نتیجهی بدیهی برسه، و از اونجایی که ثبت یک اثر/قضیه در فیزیک اون زمان (قرن 17) توی بورس بود و به اصطلاح امروزی ترند شده بود/کلاس داشت، هر کس از راه میرسید سعی میکرد از خودش یه اثری به جا بذاره. جناب آقای پلیتر هم خیلی شیک، معکوس اثر سیبک را به عنوان یک اثر از خودشون در علم فیزیک به جا گذاشتند. البته دقیقتر بخواهیم صحبت کنیم هر دوی این جنابان داشتند اثرها و قضایایی رو ذیل اثر ترموالکتریکی معرفی میکردند. در بعضی محافل برای اینکه دعوایی پیش نیاد این قضیه رو اثر سیبک-پلتیر نام میبرند.
خب بگذریم…
خیلی خلاصه بخوام بگم تا اینجا فهمیدیم با اتصال دو فلز با جنس متفاوت میتونیم تغییرات دما رو تشخیص بدیم. حالا این تغییرات چقدره؟ در حد چند ده میکرو ولت ناقابل به ازای هر درجه سانتیگراد تغییر دما و ما باید بتونیم این تغییرات رو اندازهگیری و سپس تبدیل به مقدار دما کنیم اما قبل اینکه بریم ببینیم چطور باید این کار رو انجام بدیم باید در مورد چند اصطلاح و موضوع مهم صحبت کنیم.
اتصال گرم VS اتصال سرد
در دنیای ترموکوپلها ما دو اصطلاح مهم داریم به اسم Hot Junction (اتصال گرم) و Cold Junction (اتصال سرد). خبر خوب اینکه شما از قبل میدونید اتصال گرم چیه. در واقع اتصال گرم همون نقطهی اتصال دو فلز با جنسهای متفاوته که باعث ایجاد اختلاف پتانسیل میشه. اما اتصال سرد چیه؟
خب این اتصال سرد همون چیزیه که یکم مبحث کار با ترموکوپلها رو برای ما چالشی میکنه. بذارید یکم از دنیای فیزیک و تعاریف بیاییم بیرون و ببینیم در عمل وقتی ما قصد داریم برای اندازهگیری دما از ترموکوپل استفاده کنیم باید چه کار انجام بدیم. خب ما فرض میکنیم که سنسور ترموکوپل رو داریم، یک مولتیمتر دقیق هم داریم که میتونه ولتاژ در حد میکرو ولت رو به ما نشون بده. یک جدول (از دیتاشیت سنسور) هم داریم که نشون داده هر ولتاژ برابر چه مقدار دماست.
حالا ما ترموکوپل رو به طریقی تا 100 درجه سانتیگراد گرم میکنیم و با مولتیمتر مقدار ولتاژ رو اندازهگیری میکنیم و سپس از طریق جدول دنبال ولتاژ و دمای متناظر اون میگردیم. اینجاست که اتفاق عجیب رخ میده. ولتاژی که اندازه گرفتیم توی جدول برابر مقدار دمایی حدود 127 درجه سانتیگراده (اعداد فرضی هستند). چرا این طوری شد؟ مگه قرار نبود ترموکوپل دقیق باشه؟ حالا ما اینجا خطای 27 درصدی داریم که؟
خب باز هم اگه با دقت تا اینجا رو خونده باشید احتمالاً باید این سوال برای شما پیش اومده باشه که وقتی میگیم اتصال دو فلز با جنس متفاوت باعث به وجود اومدن اختلاف پتانسیل با تغییر دما میشه خب ما داریم سیمهای ترموکوپل رو به پرابها (سیمهای) مولتیمتر که معمولاً از جنس مس هستند وصل میکنیم پس این چی میشه؟ بله دقیقاً این سوال به جا و درستیه اینجا هم دو نوع اتصال مختلف داره اتفاق میوفته.
یکی اتصال فلز مثبت ترموکوپل با فلز مسی و یکی هم اتصال فلز منفی ترموکوپل با مس و از اونجایی که اثر سیبک همیشه صادقه پس باید اینجا هم ما اختلاف پتانسیلی داشته باشیم (که داریم). در واقع مقدار ولتاژ اتصال گرم با مقدار ولتاژ این اتصال دوم (یا همون اتصال سرد) جمع میشه و ما مجموع این دو ولتاژ را روی مولتیمتر میبینیم (یادمون باشه که یک حلقه تشکیل شده و KVL و این حرفا). حالا چرا اون ولتاژ برابر مقدار 127 شد؟ خب خیلی سادهست.
اتصال سرد معمولاً نزدیک تجهیز اندازهگیری (مولتیمتر) وجود داره و خب توی این داستان مولتیمتر کجاست؟ بله داخل اتاق که ما معمولاً دمای عادی اتاق رو 27 درجه فرض میکنیم. مقدار ولتاژ ایجاد شده در این نقطه باید برابر عددیِ دمای اتاق رو به ما بده (27 درجه) که مجموع دمای اتصال گرم و اتصال سرد همون مقدار 127 میشه. حالا سوال پیش میاد که چه باید کرد؟
همونطور که ما از دوران مدرسه یاد گرفتیم که هر مسألهی سادهای بعداً قراره سختترین سوال بشه اینجا هم قضیه یکم بیشتر از این حرفاست.
اگر به جواب این سوال کمی فکر کرده باشید احتمالاً به این جواب رسیدید که میشه از یک سنسور دوم در کنار اتصال سرد استفاده کرد و بعد اندازهگیری ولتاژ ترموکوپل مقدار دمای Cold Junction رو با دمای ترموکوپل جمع کرد. اگر به این جواب رسیدید باید بگم که جواب نسبتاً درستیه (بعداً میبینیم چرا نسبتاً و نه کاملاً) و در اکثر تجهیزاتی که با ترموکوپل کار میکنند از همین روش استفاده میشه.
شاید به طرز عجیبی مسخره باشه که ما برای اندازهگیری یک دما از دو سنسور استفاده کنیم ولی وقتی مزایای سنسور ترموکوپل رو میبینیم و عملاً در خیلی از کاربردها جایگزین مناسبی براش نیست چارهی دیگهای نمیمونه که از همین روش دو سنسوره استفاده کنیم.
حالا این سنسور که از این به بعد بهش میگیم Cold Junction Compensation Sensor (سنسور جبران اتصال سرد یا به اختصار سنسور CJC) باید چی باشه؟ خب با توجه به اینکه این سنسور قراره در یک دمای معمولی (مثل دمای اتاق) کار کنه (و نه در کنار خود ترموکوپل مثلاً داخل کوره) پس میشه از یک سنسور معمولی که بازهی اندازهگیری کمی داره استفاده کرد (مثل آیسیهای اندازهگیری دما و یا ترمیستور). مسلماً با توجه به کاربرد سنسور CJC باید این سنسور تا حد ممکنه به اتصال سیم ترموکوپل به کانکتور تجهیز اندازهگیری نزدیک باشه تا با دقت بالاتری بتونه مقدار دما در اون نقطه رو اندازهگیری کنه.
انواع ترموکوپل
همونطور که قبلاً اشاره کردیم سنسورهای ترموکوپل انواع مختلفی دارند. البته اصول عملکردی و تمام مطالبی که تا اینجا با هم مرور کردیم در تمام انواع ترموکوپل یکسانه. تایپهای مختلف ترموکوپل در واقع به جنس فلزهای استفاده شده در ساخت اون ترموکوپلها اشاره داره که در ادامه اطلاعاتی خلاصه در مورد چند تایپ مختلف ترموکوپل اومده:
ترموکوپل نوع K
- پرکاربردترین نوع ترموکوپل
- مقرون به صرفه
- بازهی گستردهی دمایی (از ℃270- الی ℃1372+)
- ساخته شده از فلزهای Chromel و Alumel
- حساس به گوگرد (در محیطهایی که گوگرد وجود دارد نباید استفاده شود)
ترموکوپل نوع J
- پرکاربردترین نوع ترموکوپل بعد از نوع K
- مقرون به صرفه
- بازهی گستردهی دمایی (از ℃210- الی ℃1200+)
- ساخته شده از فلزهای Iron و Constantan (مس-نیکل)
- مقاوم در برابر خوردگی
- طول عمر کوتاهتر (به نسبت انواع دیگر)
- مستعد زنگزدگی (به علت استفاده از آهن در آن)
- مناسب استفاده در دیگهای بخار و کورهها
ترموکوپل نوع T
- بازهی دمایی متوسط (از ℃270- الی ℃400+)
- ساخته شده از فلزهای Copper و Constantan (مس-نیکل)
- مناسب کاربردهای برودتی اندازهگیری دمای زیر صفر درجه
- مقاوم در برابر رطوبت
ترموکوپل نوع E
- بازهی گستردهی دمایی (از ℃270- الی ℃1000+)
- مقاوم در برابر اکسید شدن
- بالاتری ولتاژ خروجی به ازای تغییر هر درجه
- مقرون به صرفه
- مناسب کاربردهای بردوتی
ترموکوپل نوع N
- بازهی دمایی مشابه نوع K (از ℃270- الی ℃1300+)
- ساخته شده از فلزهای Nicrosil (نیکل-کروم) و Nisil (نیکل-سیلیکون)
- مقاوم در برابر اکسید شدن
- انحراف کمتر در طول زمان
- تکرارپذیری بیشتر
- قیمت بالا
ترموکوپل نوع R و S
- بازهی دمایی گسترده (از ℃50- الی ℃1768+)
- ساخته شده از فلزهای Rhodium و Platinum
- مقاوم در برابر گوگرد
- مناسب استفاده در کاربردهای پزشکی
- قیمت بالا
ترموکوپل نوع B
- بازهی دمایی گسترده (از ℃0الی ℃1820+)
- ساخته شده از فلزهای Rhodium و Platinum
- دقت و پایداری بالا
- مناسب استفاده برای کاربردهای تولید شیشه و زبالهسوزی
- قیمت بالا
چرا چند نوع سنسور ترموکوپل داریم؟
حالا چرا باید انواع مختلفی برای ترموکوپلها ساخته بشه؟ به دلایلی که در ادامه اومده:
رنجهای مختلف اندازهگیری
تایپهای مختلف ترموکوپل میتوانند دما را در رنجهای مختلفی اندازهگیری کنند. مثلاً ترموکوپل نوع K میتونه دما رو در رنج 270- تا 1372+ اندازهگیری کند.
شرایط محیطی مختلف
بسته به شرایطی که قراره سنسور در اون شرایط کار کنه باید سنسور مناسب انتخاب بشه. برای مثال میزان ارتعاشی که در محیط وجود داره، میزان رطوبت، مواد شیمیایی که با سنسور در تماس هستند و غیره. به همین منظور تایپهای مختلفی ساخته شدهاند که میتونند در شرایط مختلف (با توجه به نیاز و کاربرد) استفاده بشن.
دقت اندازهگیری
تایپهای مختلف سنسورها با توجه به حساسیت فلزهای استفاده شده در ساخت آنها به دما، دقتهای متفاوتی دارند.
البته دلایل ساخت تایپهای مختلف ترموکوپل به همین چند مورد محدود نمیشه و در کاربردهای حساستر و تخصصیتر موارد دیگهای هم وجود داره که ما از اونها صرفنظر میکنیم.
در ادامه میتونید جدول انواع ترموکوپل و اطلاعات مربوط به هر کدوم رو ببینید:
در نمودار زیر میتونید بازهی دمایی چند نمونه ترموکوپل رو ببینید و مقایسه کنید:
چطور از خرابی و کاهش عمر سنسور ترموکوپل جلوگیری کنیم؟
همونطور که در عکس زیر میبینید ترموکوپلها اغلب به صورت مستقیم استفاده نمیشن و معمولاً در یک غلاف فلزی قرار میگیرند. دلیل این کار افزایش طول عمر ترموکوپل و جلوگیری از خوردگی آن در کاربردهای خشن است. همچنین استفاده از غلاف میتونه آسیبهای ناشی از لرزش را هم تا حد بسیار خوبی کاهش بده.
نکتهی مهم دیگر در استفاده از ترموکوپل اینه که به صورت دورهای (مثلاً سالیانه) باید کالیبره بشه تا همیشه در بهترین دقت بماند. فرایند کالیبراسیون یک مبحث مفصل و جداست که در آینده حتماً یک مقاله در همین مورد منتشر خواهد شد.
خب حالا چطور با سنسور ترموکوپل دما رو اندازهگیری کنیم؟
تا اینجا تعاریف بود و آشنایی اما خب هدف این سری آموزش این نبوده که بگیم دوستان این ترموکوپل، ترموکوپل این دوستان. قراره بتونیم در عمل هم از این سنسور (و بقیهی سنسورهای که بهشون میرسیم) استفاده کنیم. پس بریم ببینیم چطور میتونیم این ولتاژ ناچیز رو تبدیل کنیم به دما.
در تبدیل ولتاژ سنسور ترموکوپل به دما مشکل اصلی ما غیر خطی بودن تغییرات ولتاژ به نسبت تغییرات دماست. البته این غیر خطی بودن که در موردش حرف میزنیم خیلی کمه و در کاربردهای غیر دقیق که قراره بازههای دمایی محدود رو اندازهگیری کنیم، میتونیم از این غیر خطی بودن صرف نظر کنیم. برای درک بهتر این موضوع نمودار 1 رو ببینید.
اکثر ترموکوپلها در بازهی دمایی 200 تا 900 درجه سانتیگراد (به صورت تقریبی) حدوداً خطی عمل میکنند پس ما میتونیم با یک معادلهی خط ساده ولتاژ رو تبدیل به دما کنیم. البته همونطور که گفتیم این روش خطا داره و اگر ما برامون دقت اهمیت چندانی نداره میتونیم از این روش استفاده کنیم.
بذارید با هم مرور کنیم با این روش چطور میتونیم دما رو محاسبه کنیم. فرض کنید قراره سنسور ما توی رنج 0 تا 150 درجه سانتیگراد کار کنه و بیشتر از این دما در کاربرد مورد نظر ما نباشه. برای مثال ما اینجا ترموکوپل نوع K رو انتخاب میکنیم. اگر جدول این ترموکوپل رو ببینیم برای بازهی دمایی 0 تا 150 درجه جدول زیر رو داده.
توی این جدول به ازای هر درجه سانتیگراد ولتاژ متناظر ترموکوپل داده شده. برای 0 درجه ولتاژ 0V و برای 150 درجه ولتاژ 6.138mV. خب با یه رابطهی ساده میتونیم میزان تغییرات ولتاژ به ازای هر درجه رو به دست بیاریم:
6.138/150 = 0.04092mV
این یعنی اگر دما 10 درجه باشه ولتاژی برابر 10×0.04092 = 0.4092mV باید داشته باشیم. خب طبق جدول میبینیم که برای دمای 10 درجه ولتاژ 0.397mV داده شده.
یا اگر برعکس عمل کنیم، برای دمای 50 درجه ولتاژ 2.023mV داده شده حالا اگه ما این عدد رو تقسیم بر 0.04092 کنیم به عدد 49.43 میرسیم. شاید بگید خب با دقت خیلی خوبی عدد نزدیک 50 درجه به دست اومده و دیگه همه چی حله، ولی خب بیایید برای یک دمای بالاتر این کار رو انجام بدیم. برای مثال قراره بتونیم تا دمای 700 درجه رو اندازهگیری کنیم:
29.129/700 =0.04161mV
حالا دمای برای دمای 50 درجه اگر حساب کنیم:
2.023/0.04161 =48.6℃
خب پس میبینیم که به علت رفتار غیر خطی سنسور ترموکوپل، هر چی بازه بیشتر بشه معادلهی خط ما خطای بیشتری پیدا میکنه. این مورد رو قبلاً توی نمودار 1 دیده بودیم که رفتار سنسور در دماهای بالا حالت غیر خطیتری پیدا میکنه. پس در کاربردهای با دقت بالا این روش اصلاً مناسب نیست.
به عبارت دیگه ما در بیشتر مواقع سراغ سنسور ترموکوپل میاییم به خاطر دقت خوبی که داره، پس در کاربردی که ما دقت خوبی نیاز نداریم اصلاً نیازی نیست (توجیهی نداره) از ترموکوپل استفاده کنیم. ضمن اینکه در بعضی از انواع ترموکوپل و در بعضی بازههای دمایی این غیر خطی بودن زیادتره و ما ناگزیر باید از روش دیگهای برای تبدیل ولتاژ به دما استفاده کنیم.
در ادامه دو روش اصلی تبدیل ولتاژ ترموکوپل به دما رو با هم مرور میکنیم.
Lookup Table یا جدول جستجو
این روش مشابه همون روشیه که در بالا توضیح دادیم. ولی خب به جای اینکه برای کل بازهی مورد نظر معادله خط بنویسیم میاییم و به ازای هر درجهی سانتیگراد (یا همون به ازای هر ولتاژ) یک معادله مینویسیم. به عبارت دیگه اینطور در نظر میگیریم که تغییرات ولتاژ بین دو درجهی متوالی خطیه (به جای اینکه کل بازه رو خطی در نظر بگیریم). برای این کار باید کل جدول تا بازهی مورد نظر رو داشته باشیم و سپس به روش زیر عمل کنیم:
- ولتاژ رو بخونیم
- بررسی کنیم ولتاژ خوانده شده در کجای جدول قرار میگیره
- عدد ولتاژ قبل و بعد ولتاژی که خواندیم رو در جدول پیدا کنیم
- با اعداد جدید و در بازهی یک درجه سانتیگراد معادله رو پیاده کنیم
- دما رو حساب کنیم
مثال:
یک آرایه داریم با طول 701 که ولتاژهای ℃ 0 تا ℃ 700 رو در اعضای آرایه مینویسیم. حالا با ADC میکرو ولتاژ رو میخونیم و میبینیم که برابره با 27.17mV حالا توی آرایه میگردیم تا برسیم به اولین عددی که بزرگتر از عدد خوانده شدهی ما باشه (میتونید از جدول جدول 3 استفاده کنید) توی این مثال میشه عدد 27.194 که بزرگتر از عدد ما است و عدد قبلش که 27.152 است هم کوچکتر از اونه:
27.152<27.17<27.194
با توجه به اینکه از روی ایندکس آرایه میدونیم این ولتاژها برابر چه دمایی هستند میتونیم دمای ولتاژ خوانده شده رو حساب کنیم:
27.152 => 653℃ (یا همون عضو 653ام جدول)
27.194 => 654℃ (یا همون عضو 654ام جدول)
پس ولتاژ خوانده شده برابر دمایی در بازهی 654~653 (یک درجه سانتیگراد) است:
27.194-27.152 = 0.042mV => 1℃
اختلاف ولتاژ خوانده شده با ولتاژ قبل خودش در جدول رو به دست میاریم:
27.17-27.152 = 0.018mV
پس با توجه به اینکه یک درجه سانتیگراد اختلاف دما در این بازه برابر 0.042mV است و ما الان 0.018mV از ولتاژ قبلی بیشتر هستیم میشه یک معادلهی ساده ایجاد کرد تا دمای دقیق به دست بیاد:
0.018mV/0.042mV =DT℃1℃
DT = 0.4285℃
T = 653+0.4285 = 653.4285℃
دقت کنید اینجا فرض کردیم بازه از 0 درجه شروع شده بنابراین عضو صفرم آرایه برابر همون 0 درجه شد. اگر بازهی دمای منفی هم مورد نظر باشه باید در پیدا کردن عضو آرایه این مورد رو هم در نظر بگیریم.
یک لحظه… پس اثر اتصال سرد چی شد این وسط؟؟؟
ما این همه در مورد Cold Junction و اثرش در دما حرف زدیم پس چرا توی مثال قبل حرفی ازش نزدیم؟ آیا سر کار بودیم؟
خب نه کاملاً، توی مثال قبل هدف فقط توضیح روش کار با Lookup Table بود و درک نحوهی پیادهسازیش ولی خب پیادهسازی مثالی که داده شد اشتباهه چون اثر اتصال سرد در اون لحاظ نشده. حالا باید چه کار کنیم؟ خیلی راحته:
- اول باید با استفاده از سنسور Cold Junction دمای محل اتصال سنسور به کانکتور مدار رو اندازه بگیریم.
- بعد باید با استفاده از جدول ترموکوپل ولتاژ دمایی که سنسور Cold Junction به ما داده رو پیدا کنیم (وقتی اینجا گفتیم نسبتاً و نه کاملاً منظور همین بود که ما باید معادل ولتاژی سنسور CJC رو با ولتاژ خوانده شده از ترموکوپل جمع کنیم و نه دمای دو سنسور رو)
- در مرحلهی بعد باید این ولتاژ رو با ولتاژی که از سنسور ترموکوپل میخوانیم جمع کنیم.
- از اینجا به بعد مشابه همون مثال پیش میریم. به این صورت که حالا به جای ولتاژ سنسور ترموکوپل باید از عددی که در مرحلهی قبل به دست آوردیم در محاسبات استفاده کنیم.
همونطور که دیدید با استفاده از Lookup-Table به راحتی تونستیم دمای دقیق رو به دست بیاریم. این روش محاسبهی دما مزایا و معایب خودش رو داره که در زیر میتونید ببینید:
مزایا | معایب |
سادگی در پیادهسازی | نیاز به حافظهی بالا برای نوشتن جدول جستجو |
سرعت بالا | |
دقت خوب |
معادلات چند جملهای
روش دیگهی محاسبهی دما استفاده از معادلات چند جملهایه. در این روش برای بازههای مختلف نمودار هر ترموکوپل معادلاتی نوشته میشه. از طریق این معادلات میشه با دقت بسیار بالا ولتاژ خوانده شده رو تبدیل به دما کرد. این معادلات رو میتونید از منابع مختلفی پیدا کنید که من آدرس چند تا سایت رو در ادامه میذارم. معادلات برای سنسورهای مختلف ثابته و هر سنسور در ضرایب معادلات تفاوت دارند. نکتهای که در استفاده از ضرایب هست اینه که برای هر سنسور ضرایب مختلفی برای بازههای متفاوت سنسور وجود داره که ما باید با استفاده از ولتاژ خوانده شده از سنسور ابتدا بازه را مشخص کنیم و سپس از ضرایب مربوط به همون بازه استفاده کنیم. اگر براتون هنوز این روش تبدیل ولتاژ به دما نامفهومه کاملاً طبیعیه. در ادامه با یک مثال بیشتر بررسی میکنیم.
این معادلهی تبدیل ولتاژ به دماست:
در این معادله p, q, V0 و T0 ضرایب هستند. V هم ولتاژ خوانده شده از سنسور است. ما باید با استفاده از جدول ضرایب و بازهی مورد نظر از این فرمول استفاده کنیم. در زیر ضرایب ترموکوپل نوع K را در بازههای مختلف میبینید:
برای مثال اگر ولتاژ خوانده شده برابر 8mV باشه یعنی بازهی 100 تا 400 درجهی سانتیگراد داره اندازهگیری میشه و ما باید از ضرایب ستون سوم در فرمول بالا استفاده کنیم.
دقت کنید که در اینجا دمای سنسور با فرض ℃0 بودن اتصال سرد داره محاسبه میشه (همونطوری که میدونیم در دمای صفر درجه ترموکوپل ولتاژ صفر میده و وقتی Cold Junction رو صفر در نظر میگیریم در واقع داریم از اثر اون صرف نظر میکنیم)
و دوباره Cold Junction
خب خیلی بدیهی و واضحه که باید اینجا هم اثر اتصال سرد رو لحاظ کنیم. خوشبختانه برای این مورد هم یک فرمول قراره به کمک ما بیاد:
در این فرمول Tcj همون دمای محل اتصاله که باید با یک سنسور دیگه اندازهگیری بشه. چون دستگاه اندازهگیری معمولاً در دمای عادی استفاده میشه (و مثلاً نه داخل یک کوره) پس بازهی دمایی گستردهای نداریم و میشه از ضرایب زیر برای هر سنسور ترموکوپل استفاده کرد تا ولتاژ متناظر دمای Cold Junction در جدول ترموکوپل به دست بیاد:
خب تا اینجا ولتاژ اتصال سرد رو به دست آوردیم. حالا برای محاسبهی دقیق دمای ترموکوپل باید این ولتاژ رو با ولتاژ خوانده شده از سنسور جمع کنیم و سپس ولتاژ جدید رو به عنوان ولتاژ ترموکوپل در نظر بگیریم و از معادلهی 1 برای محاسبهی دقیق دما استفاده کنیم.
استفاده از روش معادلات چند جملهای هم مزایا و معایب خودش رو داره که در ادامه میتونید ببینید:
مزایا | معایب |
سرعت خوب | پیچیدگی در پیادهسازی |
دقت بالا |
بالاخره کدوم روش؟
اگه برای شما سوال پیش اومده که کدوم روش بهتره باید بگم که همه چیز برمیگرده به کاربرد شما. هر دوی روشها دقت خیلی خوبی دارند و از این لحاظ نمیشه یکی رو بهتر از اون یکی دونست. شما باید با توجه به اینکه آیا برای استفاده از محاسبات اعشاری محدودیتی دارید و یا اینکه حافظهی فلش/رم میکروتون چقدره روش مناسب رو انتخاب کنید. در زیر میتونید مقدار خطای هر دو روش رو در مثالی که بررسی کردیم ببینید (اعداد با استفاده از کتابخانهای که در ادامه معرفی شده به دست آمده). محاسبات مرجع با استفاده از محاسبهگر سایت Fluke انجام شده:
نوع ترموکوپل: K
ولتاژ سنسور ترموکوپل: 27.17mV
دمای سنسور اتصال سرد (CJC): ℃25.3
معادلات چند جملهای | جدول جستجو | مرجع (Fluke) |
℃677.455 | ℃677.476 | ℃677.454 |
کتابخانه
از این لینک میتونید کتابخانهی راهاندازی و استفاده از ترموکوپل رو دانلود کنید. این لایبرری از دو روش Lookup Table و ضرایب چند جملهای پشتیبانی میکنه. فقط کافیه که فایلهای thermocouple.c و thermocouple.h و فولدر Tables رو به پروژهی خودتون اضافه کنید. یک مثال هم در فایل main.c اومده که میتونید ازش ایده بگیرید. در ادامه یک توضیح مختصر برای استفاده از کتابخانه اومده.
در ابتدا باید مشخص کنید کدوم روش محاسبه مد نظرتونه، Lookup Table یا ضرایب چند جملهای؟
در روش Lookup Table برای استفادهی بهینه از حافظه از تایپ float استفاده نشده و اعداد ضریب 1000 هستند.
برای انتخاب روش محاسبه کافیه در فایل thermocouple.h خط زیر رو ویرایش کنید:
1 | #define LOOKUP_TABLE |
در صورت کامنت کردن این خط محاسبه به روش چند جملهای انجام میشه و در غیر این صورت به صورت Lookup Table.
در مرحلهی بعد باید مشخص کنید چه نوع سنسوری دارید استفاده میکنید. برای این منظور خطهای زیر رو کامنت کنید یا از حالت کامنت در بیارید (میتونید از چندین نوع سنسور همزمان استفاده کنید):
1 2 3 4 | #define TC_K_TYPE 0 // #define TC_J_TYPE 1 // #define TC_S_TYPE 2 // #define TC_T_TYPE 3 |
خب تا اینجا تنظیمات اولی رو انجام دادیم. بریم سراغ توضیح مثال:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <stdio.h> #include "thermocouple.h" int main() { TcAdcHandler hTcAdc; #ifndef LOOKUP_TABLE hTcAdc.Resolution = 1024; hTcAdc.Vref = 5; hTcAdc.Offset = 0; hTcAdc.Gain = 1; hTcAdc.AdcValue = 10; readTcVoltage(&hTcAdc); //Let's assume that the voltage is 27.17mV (remove the following line in real application) hTcAdc.Voltage = 27.17/1000.0; float cjcTemp = 25.3; float temp = getTcTemp(TC_TYPE_K, hTcAdc.Voltage, cjcTemp, TU_C); printf("mV = %f, TC = %f\n", hTcAdc.Voltage*1000, temp); #else hTcAdc.Resolution = 1024; hTcAdc.Vref = 5000; //Multiplied by 1000 hTcAdc.Offset = 0; //Multiplied by 1000 hTcAdc.Gain = 1000; //Multiplied by 1000 hTcAdc.AdcValue = 10; readTcVoltage(&hTcAdc); //Let's assume that the voltage is 27.17mV (remove the following line in real application) hTcAdc.Voltage = 27170; //Multiplied by 1000 int cjcTemp = 25300; //Multiplied by 1000 int temp = getTcTemp(TC_TYPE_K, hTcAdc.Voltage, cjcTemp, TU_C); //Multiplied by 1000 printf("mV = %d, TC = %d.%d\n", hTcAdc.Voltage, temp/1000, temp%1000); #endif return 0; } |
ابتدا باید به تعداد سنسورهایی که دارید یک تایپ TcAdcHandler تعریف کنید:
1 | TcAdcHandler hTcAdc; |
بعد باید این تایپ رو مقداردهی کنید. با توجه به ADC میکرو و مدارتون مقادیر رو تنظیم کنید:
1 2 3 4 5 | hTcAdc.Resolution = 1024; hTcAdc.Vref = 5; hTcAdc.Offset = 0; hTcAdc.Gain = 1; hTcAdc.AdcValue = 10; |
دقت کنید اعداد بالا برای حالت چند جملهای اومده.
مقدار Vref هم ولتاژ رفرنس ADC میکرویی هست که دارید استفاده میکنید.
اگر در مدارتون ولتاژ سنسور رو آفست دادید یا در یک بهره ضربش کردید و سپس به میکرو دادید این اعداد رو تنظیم کنید و گرنه به صورت پیشفرض برای آفست مقدار صفر و برای گین مقدار یک را بنویسید (در حالت Lookup Table این مقادیر باید در 1000 ضرب بشن).
مقدار AdcValue هم عددیه که ADC میکرو میده.
در مرحلهی بعد با صدا زدن فانکشن زیر ولتاژ ADC محاسبه میشه و در متغیر Voltage تایپ TcAdcHandler ذخیره میشه:
1 | readTcVoltage(&hTcAdc); |
مقدار دمای Cold Junction رو هم که با هر روش دیگهای که خواستیم اندازه میگیریم (میشه از سنسورهایی که در قسمتهای بعدی در موردشون حرف میزنیم استفاده کنید).
در مرحلهی بعد با صدا زدن فانکشن زیر مقدار دما محاسبه میشه:
1 | float temp = getTcTemp(TC_TYPE_K, hTcAdc.Voltage, cjcTemp, TU_C); |
ورودی اول این تابع نوع سنسوره، ورودی دوم ولتاژ سنسور، ورودی سوم مقدار دمای Cold Junction و ورودی آخر هم واحد دماست. خروجی تابع هم مقدار محاسبه شدهی دماست. اگر از روش Lookup Table استفاده کردید خروجی تابع از نوع عدد صحیح و مضرب 1000 میشه.
خب اینم از این قسمت، مسلماً مباحث پیرامون سنسور ترموکوپل خیلی خیلی بیشتر و عمیقتر از اون چیزیه که اینجا در موردش صحبت کردیم ولی امیدوارم در حد آشنایی اولیه براتون مفید بوده باشه. اگر نظر، پیشنهاد یا انتقادی هست خیلی خوشحال میشم مطرح کنید تا در قسمتهای بعدی لحاظ کنم.
در قسمت بعدی قراره در مورد سنسورهای RTD صحبت کنیم، پس همراهمون باشید…
منابع و وبسایتها
- Thermocouple Library
- ITS-90 Thermocouple Database – Menu
- ITS-90 Table for type K thermocouple
- Thermocouple Temperature Calculator
- A Basic Guide to Thermocouple Measurements
- Thermocouples Tables
- Types of Thermocouples
سلام MasoudHD
خیلی عالی بود
درباره ترمیستورها هم چنین مستندی دارید؟
سلام، ممنون از نظرتون
بله در قسمت چهارم قراره در مورد ترمیستورها صحبت کنیم.
عالی بود. مخصوصاً قسمت اتصال سرد
ممنون
سلام،
خیلی ممنون از شما امیدوارم براتون مفید بوده باشه 💐