آردوینو آردوینو Arduino Uno پروژه های آردوینو

طراحی پیاده سازی پروژه ترموستات دو فن با سنسور NTC برد آردوینو Arduino

create-two-relay-temperature-control-system-with-arduino-digispark
نوشته شده توسط معین صابری

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

 


ترموستات دو فن با رله و آردوینو


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

ترموستات با سنسور DS18B20 و برد آردوینو - دیجی اسپارک

 

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

 


وسایل لازم در پروژه ترموستات دو فن


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

  • واحد سنسور دما
  • واحد پردازنده
  • واحد رله های فن

سنسور دما وظیفه اندازه گیری دما و ارسال آن را به پردازنده دارد. پردازنده با دریافت بازه دمای مجاز کاربر و مقایسه آن با با دمای سنسور، در صورتیکه دما از بازه خارج شود، به رله شماره ۱ فرمان فعال شدن فن را صادر می کند. در صورتیکه باز هم افزایش دما ادامه یابد، این بار میکروکنترلر به فن شماره ۲ هم فرمان فعال سازی را ارسال می کند. در این پروژه جدول زیر نقش قطعات را بیان می کند.

وظیفه قطعه
پردازنده مرکزی برد آردوینو
سنسور دما NTC
کنترل تغذیه فن ها ماژول رله دو کانال

برد آردوینو UNO، مغز متفکر این پروژه است. این برد از طریق رابط سریال UART فرامین کاربر را دریافت می کند. این فرامین، بازه مجاز(حداقل و حداکثر) دمای مجاز است. پس از دریافت فرمان، بازه مجاز دما را با سنسور دما مقایسه می کند. با مقایسه دما، در صورت لزوم فرامین لازم به فن ها صادر می شود.

برد آردوینو Uno در پروژه ترموستات دو فن - دیجی اسپارک

 

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

سنسور NTC در پروژه ترموستات دو فن - دیجی اسپارک

 

در ادامه، به ماژول رله می رسیم. ماژول رله دو کانال یک ماژول بی نظیر و بسیار کاربردی است. این ماژول به سادگی می تواند ارتباط بین میکروکنترلر و فن را فراهم کند. بر روی این ماژول لوازم مورد نیاز راه اندازی رله نظیر ترانزیستور و دیود قرار گرفته است. بدین ترتیب به ساگی و بدون نیاز به طراحی مدار اسنابر دیودی و تقویت ترانزیستوری، می توانید رله را درایو کنید.

 


شماتیک و اتصالات پروژه


در این قسمت به بررسی شماتیک و اتصالات پروژه ترموستات دو فن می پردازیم. ابتدا به تصویر زیر که فرم کلی اتصالات را نمایش می دهد، دقت کنید.

شماتیک پروژه ترموستات دو فن با NTC و آردوینو - دیجی اسپارک

مطابق تصویر فوق، اتصالات را به شکل زیر اجرا کنید.

 


اتصالات سنسور دما و آردوینو


  1. اتصال یک پایه سنسور دما به ۵ ولت
  2. اتصال پایه دیگر سنسور دما به یک پایه مقاومت ۱۰ کیلو
  3. اتصال پایه دیگر مقاومت ۱۰ کیلو به زمین
  4. اتصال محل تلاقی پایه سنسور و مقاومت ۱۰ کیلو به پایه A0 آردوینو

توجه: سنسور دما مستقل از پلاریته است؛ به عبارت دیگر در اتصال پایه ها فرقی نخواهند داشت.

 


اتصال ماژول رله دو کانال به برد آردوینو


  1. اتصال پایه ۵ ولت ماژول رله به ۵ ولت آردوینو
  2. اتصال پایه GND ماژول رله به پایه GND آردوینو
  3. اتصال پایه IN1 به پایه ۳ آردوینو
  4. اتصال پایه IN2 به پایه ۲ آردوینو

 


نصب کتابخانه سنسور NTC


همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم.  همانطور که پیشتر گفته شد، برای راه اندازی و کار با سنسور کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.

اصول نصب کتابخانه در آردوینو - دیجی اسپارک

 

جهت نصب کتابخانه، در منوی جست و جوی کتابخانه ها عبارت thermistor را تایپ کنید. با تایپ این عبارت با تصویر زیر رو به رو خواهید شد. مطابق تصویر، کتابخانه مشخص شده با کادر قرمز رنگ را نصب نمایید.

کتابخانه مناسب در پروژه اعلام حریق آردوینو - دیجی اسپارک

 

توجه: پس از نصب کتابخانه سنسور دما، وارد فولدر کتابخانه آن شوید. به این منظور در فولدر Documents ویندوز، فولدر Arduino و سپس Libraries را انتخاب کنید. در این جا وارد فولدر Thermistor شده و فایل thermistor.cpp را باز کنید. با باز شدن این فایل، عبارت زیر را یافته و آن را کامنت کنید.

#define VERBOSE_SENSOR_ENABLED 1

جهت کامنت کردن، می بایست عبارت // را پیش از دستور قرار دهید. به عبارت دیگر دستور به صورت زیر تبدیل می شود.

#define VERBOSE_SENSOR_ENABLED 1//

مراحل فوق به دلیل استفاده  این کتابخانه  از پورت سریال UART است. با عملیات فوق، کتابخانه دماسنج دیگر از پورت سریال استفاده نکرده و تداخل احتمالی از بین خواهد رفت.

 


کدهای پروژه ترموستات دو فن


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

#include "thermistor.h"  //اضافه کردن کتابخانه 
#define slow_relay 2  //تعیین پایه خروجی برای فن دور کند
#define fast_relay 3  //تعیین پایه خروجی برای فن دور تند
#define NTC_PIN               A0  //پایه تقسیم مقاومتی برای اتصال سنسور NTC
THERMISTOR thermistor(NTC_PIN,        // پایه ورودی آنالوگ
                      ۱۰۰۰۰,          // میزان مقاومت سنسور در دمای ۲۵ درجه
                      ۳۹۵۰,           // پارامتر بتای سنسور
                      ۱۰۰۰۰);         // اندازه مقاومت سری شده در تقسیم مقاومتی به سنسور
uint16_t temp; //متغیر برای خواندن دما
int low_temp, high_temp;  //متغیر برای ذخیره سازی دمای شروع، پایان 
String data = "";  //متغیر جهت دریافت فرمان از طریق رابط سریال UART
void setup()
{
  Serial.begin(9600); 
  //تعیین پایه های رله به صورت خروجی
  pinMode(slow_relay, OUTPUT);
  pinMode(fast_relay, OUTPUT);
  digitalWrite(slow_relay, LOW);
  digitalWrite(fast_relay, LOW);
}
void loop()
{
  input_control();  //تابع کنترل و دریافت ورودی
  temp_control();  //تابع کنترل دما
}
void input_control() {
  if (Serial.available() > 0) { //دریافت دمای ورودی
    data = Serial.readString();
    low_temp = data.substring(0, data.indexOf(",")).toInt();   //از ابتدای رشته تا اولین ویرگول، دمای پایین است.
    high_temp = data.substring(data.indexOf(",") + 1).toInt();  //از ویرگول به بعد دمای بالا است.
    Serial.print("LOW TEPM:");
    Serial.flush();
    Serial.println(low_temp);
    Serial.flush();
    //************************************************
    Serial.print("HIGH TEPM:");
    Serial.flush();
    Serial.println(high_temp);
    Serial.flush();
  }

}
void temp_control() {
  temp = thermistor.read() / 10; //خواندن دما
  Serial.print("TEMP:");
  Serial.flush();
  Serial.println(temp);
  delay(1000);
  if (temp > high_temp) {   //در صورتیکه دمای فعلی از دمای مجاز بیشینه بیشتر شود، فن دور کند شروع به کار می کند.
    digitalWrite(slow_relay, HIGH);
    Serial.println("SLOW FAN");
    Serial.flush();
  }
  else if ((temp - 10) > high_temp) {  //در صورتیکه اختلاف دمای فعلی با دمای بیشینه بیش از ۱۰ درجه شود، فن دور تند فعال می شود.
    digitalWrite(fast_relay, HIGH);
    Serial.println("FAST FAN");
    Serial.flush();
  }
else if ((temp >= low_temp && temp <= high_temp) || temp <= low_temp) {   //در صورتیکه دما وارد بازه مجاز شود یا اینکه دمای محیط از حداقل دما کمتر شود، فن خاموش خواهد شد.
  digitalWrite(fast_relay, LOW);
  digitalWrite(fast_relay, LOW);
}
}

 


اجرای پروژه ترموستات دو فن


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

۳۰,۳۵

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

 


لوازم مورد نیاز


لینک خرید برد آردوینو UNO، کلیک کنید

لینک خرید سنسور NTC، کلیک کنید

لینک خرید مقاومت، کلیک کنید

لینک خرید ماژول رله دو کانال، کلیک کنید

 


جمع بندی


در این آموزش به طراحی و پیاده سازی یک ترموستات دو فن پرداختیم. در این ترموستات دو فن تعبیه شده که به نسب دمای محیط، فعال خواهند شد. در این حالت هرگاه که دما از بازه مجاز مد نظر کاربر خارج شود، یکی از فن ها فعال خواهد شد. با ادامه یافتن روال افزایش دما، چنانچه دمای محیط از ۱۰ درجه نسبت به دمای مجاز بیشتر شود، فن دوم هم شروع به کار کرده و بدین ترتیب دمای محیط زودتر کاهش خواهد یافت.

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

  • سلام
    اون قسمت وارد کردن بازه ی دما ۳۰ تا ۳۵ درجه که گفتین،اعداد ۳۰ تا ۳۵ رو کجا باید وارد کنیم؟

  • سلام
    وقت بخیر
    آیا بعد راه اندازی برای اینکه جای کمتری اشغال بشه مانیتور رابط سریال جدا کرد؟