هنر ما را به گونه اي رويايي از درد هستي رها مي سازد.
خوش آمدید - امروز : دوشنبه ۲۰ آذر ۱۳۹۶
خانه » آموزش مکانیک خودرو » ساخت سنسور دما توسط آردوینو (راهنمای ترمیستور)

ساخت سنسور دما توسط آردوینو (راهنمای ترمیستور)

ساخت سنسور دما توسط آردوینو (راهنمای ترمیستور)

ساخت سنسور دما توسط آردوینو(راهنمای ترمیستور) ،ساخت سنسور دما ساده ،قیمت سنسور دما ،ترمیستور ntc ،ترمیستور ptc ،انواع سنسورهای دما ،سنسور ntc چیست ،سنسور دما با اردوینو ،کنترل دما با آردوینو

ترمیستورها تراشه هایی ساده، ارزان قیمت و کاربردی می باشند که امکان اندازه گیری دما را در رنج وسیعی از ۸۰- تا ۲۶۰ درجه، در پروژه شما به سادگی فراهم می کنند.

ایستگاه های آب و هوای از راه دور، سیستم های مانیتورینگ خانه، تجهیزات کنترلی و محافظتی مدار از جمله مواردی هستند که ترمیستور در آنها کاربرد دارد. ترمیستورها سنسورهای آنالوگ هستند، لذا نوشتن برنامه برای آنها بسیار ساده تر از سنسورهای دیجیتال می باشد که به کتابخانه و دستورات خاصی احتیاج دارند. در این مقاله توضیح داده خواهد شد که یک ترمیستور به چه صورت کار می کند، و نحوه راه اندازی یک مدار ساده ترمیستور توسط آردوینو برای اندازه گیری دما و نمایش آن بر روی نمایشگر سریال و یا یک LCD بیان خواهد شد.

قطعات مورد نیاز:

برد آردوینو و کابل رابط

۱ عدد
برد بورد ۱ عدد
LCD Display (16×2 characters) ۱ عدد
سیم اتصال به برد بورد ۱ بسته
مقاومت متغییر ۱۰ کیلو اهم ۱ عدد
ترمیستور ۱۰ کیلو NTC ۱ عدد
مقاومت ۱۰ کیلو اهم ۱ عدد

یک ترمیستور به چه صورت کار می کند:

ترمیستورها مقاومت های متغییر با دما می باشند. آنها با توجه به نحوه تغییرات مقاومتشان بر اساس تغییرات دما به دو دسته تقسیم می شوند. ترمیستورهای ضریب دمایی منفی Negative Temperature Coefficient (NTC) که مقاومت آنها با افزایش دما کاهش می یابد و ترمیستورهای ضریب دمایی مثبت Positive Temperature Coefficient (PTC) که مقاومتشان با افزایش دما افزایش می یابد. نحوه تغییرات و نماد الکتریکی ترمیستور را در شکل زیر مشاهده می کنید.

ترمیسنور نوع NTC متداول تر بوده و از آن در این مقاله استفاده می شود. آنها از مواد نیمه هادی(مانند اکسید فلزی یا سرامیک) ساخته می شوند که حرارت داده شده و فشرده شده اند تا به قطعه ای تبدیل شوند که به حرارت حساس می باشد. مواد نیمه هادی شامل حامل های باری می باشند که در آنها جریان پیدا می کنند. با افزایش دما تعداد این حامل های بار و در نتیجه میزان جریان افزایش می یابد. در ترمیستورهای NTC که از اکسید آهن ساخته می شوند، الکترون ها حامل جریان بوده و در ترمیستورهای NTC که از اکسید نیکل ساخته می شوند، ذرات مثبت حامل جریان می باشند.

یک مدار ترمیستور ساده:

در ابتدا مدار بسیار ساده از ترمیستور بررسی می شود تا نحوه عملکرد آن درک گردد، در نتیجه شما می توانید از آن در سایر پروژه ها نیز استفاده کنید.

در اینجا لازم است که مقدار مقاومت ترمیستور اندازه گیری شود تا بتوان دما را محاسبه کرد. به هر حال آردوینو فقط می تواند ولتاژ را اندازه گرفته و نمی تواند مقاومت را به صورت مستقیم اندازه گیری کند. مدار ساده ترمیستور از یک تقسیم کننده ولتاژ تشکیل می شود که امکان خواندن ولتاژ را بین دو مقاومت با مقدار مشخص فراهم می کند. مقدار ولتاژ خوانده شده توسط قانون اهم به مقاومت تبدیل می شود. R = V / I

ورودی آنالوگ آردوینو دارای یک مبدل آنالوگ به دیجیتال می باشد که مقادیر ولتاژ را خوانده و آن را به عددی بین ۰ تا ۱۰۲۳ تبدیل می کند.

Analog to Digital Converter (ADC) reading = (Voltage at Pin / 5V) * 1023

ولتاژ صفر معادل عدد صفر و ولتاژ ۵ معادل عدد ۱۰۲۳ می باشد. از این اعداد برای محاسبات مربوط به دما در برنامه استفاده می شود. ترمیستور و مقاومت را مطابق شکل به آردوینو متصل کنید:

مقدار مقاومتی که در مدار استفاده می شود باید برابر با اندازه مقاومت ترمیستور باشد. در این پروژه از ترمیستور ۱۰ کیلو اهم استفاده شده، لذا مقدار مقاومت هم ۱۰ کیلو اهم می باشد. معمولا اطلاعات مربوط به ترمیستور در دیتاشیت آن قابل دسترس است، ولی در صورتی که به دیتاشیت دسترسی ندارید، می توانید با استفاده از یک اهم متر مقدار مقاومت ترمیستور را اندازه گیری کنید. برای مثال هنگام اندازه گیری اگر ۳۴۰۰۰ اهم را مشاهده کردید، آن یک ترمیستور ۱۰ کیلو اهم می باشد و اگر ۳۴۰۰۰۰ را مشاهده کردید، آن یک ترمیستور ۱۰۰ کیلو اهم می باشد.

کد برنامه:

بعد از اتصال مدار، برنامه زیر را روی برد خود آپلود کنید. برنامه زیر دمای سانتیگراد و فارنهایت را به صورت همزمان در نمایشگر سریال نشان می دهد.

#include <math.h>

double ThermistorF(int RawADC) {

 double Temp;

 Temp = log(10000.0*((1024.0/RawADC-1)));

 Temp = 1 / (0.001125308852122+ (0.000234711863267+ (0.000000085663516* Temp * Temp ))* Temp );

 Temp = Temp – 273.15;

 Temp = (Temp * 9.0)/ 5.0 + 32.0;

 return Temp;

}

double ThermistorC(int RawADC) {

 double Temp;

 Temp = log(10000.0*((1024.0/RawADC-1)));

 Temp = 1 / (0.001125308852122+ (0.000234711863267+ (0.000000085663516* Temp * Temp ))* Temp );

 Temp = Temp – 273.15;

 return Temp;

}

void setup() {

 Serial.begin(9600);

}

void loop() {

  int valF, valC;

  double tempF, tempC;

  valF=analogRead(0);

  tempF=ThermistorF(valF);

  valC=analogRead(0);

  tempC=ThermistorC(valC);

  Serial.print(“Temperature = “);

  Serial.print(tempF);

  Serial.print(” F; “);

  Serial.print(tempC);

  Serial.println(” C”);

  delay(1000);

}

 

بررسی برنامه:

به دلیل اینکه در برنامه از دستور لگاریتم استفاده شده، لذا لازم است که در ابتدای برنامه کتابخانه مربوط به روابط ریاضی معرفی شود:

#include <math.h>

در ادامه تابعی برای محاسبه دما نوشته شده است. به دلیل اینکه خروجی تابع فقط یک مقدار خواهد بود و هدف نمایش هم زمان دما برحسب فارنهایت و سانتی گراد است، لذا دو نمونه مشابه از این تابع در برنامه آمده که در یک خط با هم تفاوت دارند. تابع ThermistorC برای محاسبه دما برحسب سانتی گراد و تابع  ThermistorF برای محاسبه دما برحسب فارنهایت می باشد.

این برنامه از معادله استین هارت(Steinhart Hart Equation) برای تبدیل ولتاژ خطی خوانده شده به دما استفاده می کند.

به طور کلی برای بدست آوردن رابطه بین دما و مقاومت در ترمیستورهای نوع NTC از معادله های بتا(Beta Equation) و استین هارت استفاده می شود، که معادله استین هارت نسبت به بتا رایج تر می باشد. استین هارت یک معادله چند جمله ای مرتبه سوم می باشد، که در محدوده ی دمایی ۸۰- تا ۲۶۰ درجه سانتی گراد هم خوانی خوبی با نمودار مربوط به تغییرات دمای ترمیستور نوع NTC دارد. رابطه آن به صورت زیر می باشد:

۱/T = A + B(ln R) + C(ln R)2

در این رابطه، R مقاومت ترمیستور، T دما برحسب کلوین، A و B و C پارامترهای ثابتی هستند که به نوع ترمیستور وابسته اند.  مقادیر محاسبه شده برای این پارامترهای ثابت مربوط به ترمیستور ۱۰ کیلو که در این مقاله از آن استفاده شده است، برابر است با:

A = 0.001125308852122

B = 0.000234711863267

C = 0.000000085663516

در برنامه نوشته شده در تابع ThermistorF ابتدا یک متغییر محلی به نام Temp معرفی شده است. در خط بعد مقادیر ولتاژ به معادل مقاومتی تبدیل می شود، روابطی که به بخش مبدل آنالوگ به دیجیتال آردوینو برمی گردد و در نهایت برای استفاده در رابطه استین هارت از آن لگاریتم گرفته شده است.

double Temp;

Temp = log(10000.0*((1024.0/RawADC-1)));

Temp = 1 / (0.001125308852122+ (0.000234711863267+ (0.000000085663516* Temp * Temp ))* Temp );

دو خط بعدی برنامه برای تبدیل دما ابتدا از کلوین به سانتی گراد و سپس از سانتی گراد به فارنهایت می باشد.

 

Temp = Temp – 273.15;

Temp = (Temp * 9.0)/ 5.0 + 32.0;

در حلقه setup شروع ارتباط سریال بیان می شود.

در حلقه loop نیز مقادیر ولتاژ از ورودی آنالوگ خوانده شده، از طریق توابع تعریف شده معادل دمایی آنها به دست می آید و در نهایت مقادیر دما در نمایشگر سریال نمایش داده خواهد شد.

 

 

برای نمایش دما در LCD کاراکتری ۲*۱۶  نیز از برنامه زیر استفاده کنید.

#include <math.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

double ThermistorF(int RawADC) {

 double Temp;

 Temp = log(10000.0*((1024.0/RawADC-1)));

 Temp = 1 / (0.001125308852122 + (0.000234711863267 + (0.000000085663516 * Temp * Temp ))* Temp );

 Temp = Temp – 273.15;

 Temp = (Temp * 9.0)/ 5.0 + 32.0;

 return Temp;

}

double ThermistorC(int RawADC) {

 double Temp;

 Temp = log(10000.0*((1024.0/RawADC-1)));

Temp = 1 / (0.001125308852122+ (0.000234711863267+ (0.000000085663516* Temp * Temp ))* Temp );

 Temp = Temp – 273.15;

 return Temp;

}

void setup() {

 lcd.begin(16, 2);

}

void loop() {

  int valF, valC;

  double tempC , tempF;

  valF=analogRead(0);

  tempF=ThermistorF(valF);

   valC=analogRead(0);

  tempC=ThermistorC(valC);

  lcd.print(“Temp = “);

  lcd.print(tempF);

  lcd.print(” F”);

  lcd.setCursor(1,2);

  lcd.print(“Temp = “);

  lcd.print(tempC);

  lcd.print(” C”);

  delay(1000);

  lcd.clear();

}

اشتراک گذاری مطلب

تمام حقوق مادی , معنوی , مطالب و طرح قالب برای این سایت محفوظ است