کنترل فن با توجه به دما با آردوینو (آموزش جامع)
محتویات
در دنیای سریع امروز، راحتی و آسودگی امری کلیدی است. سروکله ردن با نوسانات دمایی در محیط زندگی و کار میتواند عذاب آور باشد. تنظیم مداوم فن در مناطقی که ظهرهای به شدت داغ و شب های به شدت سرد دارد، آزاردهند است، درحالی که میتوان با کمی نبوغ و به کمک قطعات الکتریکی و الکترونیکی، فن الکتریکی معمولی را به فن اتوماتیک تبدیل کرد. در پروژه فن کنترل شده با دما، شما را در پروسه تبدیل فن دستی خود به یک فن اتوماتیک با استفاده از آردوینو Uno، سنسور دمای LM35 و رله راهنمایی میکنیم.
در این پروژه، یک فن AC را براساس دمای اتاق کنترل خواهیم کرد. قبلا پروژه های بسیاری شبیه به این پروژه از جمله، فن اتوماتیک کنترل شده با دمای ساده، کنترل کننده سرعت فن براساس دما با آردوینو، کنترل سرعت فن با اینترنت (مبتنی بر IoT)، کنترل سرعت فن AC با گوشی هوشمند را انجام داده ایم. اگر علاقه مند به مطالعه این مطالب هستید، کافی است آن ها را در سایت جست و جو کنید.
فن کنترل شده با دما با آردوینو و LM35
ما این فن کنترل شده با دما را گام به گام خواهیم ساخت. در ابتدا سنسور LM35 را به آردوینو Uno متصل کرده تا دمای اتاق را اندازه بگیریم و سپس از رله برای کنترل فن استفاده خواهیم کرد. سپس کدی را که دارای دستورات شرطی است روی آردوینو آپلود کرده و خروجی را بررسی میکنیم.
قطعات لازم
- برد آردوینو
- کابل USB
- سنسور دمای LM35
- رله یک کاناله 5 ولت
- سیم های جامپر
- برد بورد
- فن AC
سنسور LM35
LM35 یک سنسور دما به صورت مدارمجتمع است که به طور گسترده برای اندازه گیری دما در مدارهای الکترونیکی و کاربردهای متعدد دیگری استفاده میشود. این سنسور به سادگی و دقت خود مشهور بوده و انتخاب بسیاری از افراد در پروژه های گوناگون برای اندازه گیری دماست. LM35 به گونه ای طراحی شده که یک ولتاژ خروجی آنالوگ و خطی تولید کند. این ولتاژ، به طور مستقیم متناسب با دمای حس شده توسط سنسور است. سنسور دمای LM35 سه پایه دارد : VCC، GND و پایه خروجی آنالوگ.
هر کدام از پایه های نام برده شده کاربرد مختص به خود را دارند که کمی پایین تر آن ها را توضیح میدهیم.
- پایه VCC : این پایه، پایه تغذیه سنسور است که میتواند به منبع تغذیه ای که بین 4 و 32 ولت است، متصل شود.
- پایه GND : این پایه، پایه زمین سنسور است که به زمین مدار متصل میشود.
- پایه OUT : این پایه، یک خروجی آنالوگ با مبدل آنالوگ به دیجیتال 10 بیتی است. یعنی مقدار خروجی این پایه دربازه 0 تا 1024 است. ولتاژ خروجی این پایه به طور مستقیم متناسب با دمای محیط است.
رله 5 ولت
رله 5V، یک رله الکترومغناطیس است که با ولتاژ 5 ولت کار کرده و دارای یک کانال سوییچینگ است. این نوع رله، به طور معمول در مدارهای الکتریکی و الکترونیکی برای کنترل دستگاه هایی که با تغذیه بالا کار میکنند و یا کنترل بارهایی که با یک سیگنال ضعیف کار میکنند، استفاده میشود. این سیگنال ضعیف معمولا از طرف میکروکنترلر یا منبع کنترل دیجیتالی دیگری تامین میشود.
رله یک کاناله یک روش مقرون به صرفه برای کنترل ولتاژ و جریان بالا با استفاده از ولتاژ و جریان پایین است. این رله، در کنترل بارهایی مانند موتور، فن، لامپ یا بارهای AC نیز کاربرد دارد.
- VCC : این پایه تغذیه ماژول را تامین میکند. ولتاژ ورودی 5 ولت است.
- GND : این پایه، پایه زمین مشترک است.
- IN : این پایه، پایه کنترلی برای مدیریت خروجی رله است. ما به این پایه از طریق میکروکنترلر، سیگنال ON یا OFF را میفرستیم.
- COM : این پایه، پایه مشترک ماژول رله است.
- NC : این پایه، معمولا به پایه COM وصل میشود، مگر اینکه رله برای قطع ارتباط فعال شده باشد.
- NO : این پایه معمولا آزاد است و به جایی وصل نمیشود و هنگامی که رله فعال است، به COM تغییر میکند.
توجه داشته باشید که ترتیب پایه ها ممکن است در بعضی از ماژول های رله متفاوت باشد پس برای اتصالات درست و مطمئن، به دیتاشیت یا حاشیه نویسی PCB مراجعه کنید.
مدار اتصال پنکه کنترل شده با دما Arduino
مدار کامل برای ساخت این فن، به شما ارائه شده است. ما از نرم افزار fritzing برای مدل سازی بخش عمده ای از مدار استفاده کرده ایم. تنها فن و دوشاخه با استفاده از فتوشاپ به تصویر اضافه شده اند. مدار شامل آردوینو، یک رله، یک سنسور دمای LM35 به همراه یک فن و یک دوشاخه است.
مدار فن کنترل شده با دما بسار ساده است. سنسور LM35 سه پایه VCC، GND و خروجی آنالوگ دارد. پایه VCC به پایه 5V آردوینو متصل خواهد شد. پایه GND به پایه GND آردوینو و پایه خروجی آنالوگ هم به پایه A0 آردوینو متصل میشود.
رله هم سه پایه دارد : VCC، GND و پایه ورودی دیجیتال. پایه VCC به پایه 5V آردوینو، پایه زمین به پایه GND و پایه ورودی دیجیتال به پایه 2 آردوینو متصل خواهد شد.
نحوه کار فن اتوماتیک کنترل شده با دما
این پروژه، یک سیستم کنترل دما است که از سنسور LM35، میکروکنترلر آردوینو و یک رله برای رگوله و تنظیم کردن فن AC براساس دمای محیط استفاده میکند. سنسور LM35 نقش مهمی در این سیستم دارد. این سنسور به طور مداوم دمای محیط را زیر نظر میگیرد و ولتاژ خروجی آنالوگی را که متناسب با دمای محیط است، تولید میکند. این مقدار آنالوگ برای پردازش به آردوینو ارسال میشود. آردوینو این داده را به عنوان ورودی دریافت کرده و آن را به درجه سلسیوس تبدیل میکند. نتیجه نهایی را با دمای آستانه که از قبل تعریف کرده ایم ( مثلا 40 درجه) مقایسه میکند.
در سناریوی اول، اگر دمای خوانده شده از روی سنسور LM35 از مقدار آستانه ( در اینجا 40 درجه سلسیوس) بیشتر باشد، آردوینو رله را تحریک میکند تا فن AC را روشن کرده و به حالت ON ببرد. این کار باعث تولید یک مکانیزم سرمایشی میشود تا دمای محیط کاهش یافته و در بازه دلخواه باقی بماند.
در سناریوی دوم، آردوینو از ارسال هرگونه سیگنال به رله خودداری کرده و فن خاموش و در حالت OFF میماند. این اتوماسیون تضمین میکند که فن فقط در مواقع ضروری کار کرده، انرژی را ذخیره میکند و همچنین دمای محیط در بازه معقولی باقی بماند.
کد فن کنترل شده با دما با استفاده از آردوینو
کد کامل این پروژه، در انتهای همین مطلب موجود است.
در این قسمت کد فن کنترل شده با دما را برایتان توضیح میدهیم.
const int lm35_pin = A0; // LM35 output pin const int relay_pin = 2; // Relay control pin (change to the appropriate pin)
این دو خط از کد، دو ثابت از نوع int را تعریف میکنند. lm35_pin به پایه A0 نسبت داده شده است. ( پایه A0 اغلب نشان دهنده ورودی آنالوگ آردوینو است.) relay_pin هم به پایه 2 آردوینو نسبت داده شده است. این پایه از آردوینو معمولا نشان دهنده پایه خروجی دیجیتال است.
void setup() { Serial.begin(9600); pinMode(relay_pin, OUTPUT); // Set the relay pin as an output digitalWrite(relay_pin, LOW); // Turn off the relay (fan) }
تابع ()setup یک تابع استاندارد آردوینو است که در هنگام آغاز برنامه یک بار فراخوانده میشود. در این تابع:
Serial.begin(9600) : ارتباط سریال را با نرخ باد 9600 بیت در ثانیه آغاز میکنیم. این قسمت داده را برای نمایش روی سریال مانیتور ارسال میکند تا اشکال زدایی و دیباگ کردن انجام شود.
PinMode( relay_pin, OUTPUT) : پایه relay_pin را به عنوان خروجی پیکربندی میکنیم. یعنی این پایه با ارسال سیگنال های دیجیتال در کنترل دستگاه ( فن ) نقش خواهد داشت.
digitalWrite( relay_pin , LOW) : relay_pin را روی حالت LOW تنظیم میکنیم. یعنی در ابتدای کار رله خاموش است.
void loop() { int temp_adc_val; float temp_val; temp_adc_val = analogRead(lm35_pin); // Read temperature temp_val = (temp_adc_val * 4.88); // Convert ADC value to equivalent voltage temp_val = (temp_val / 10); // LM35 gives an output of 10mV/°C Serial.print("Temperature = "); Serial.print(temp_val); Serial.println(" Degree Celsius"); if (temp_val < 40) { Serial.println("Fan off"); digitalWrite(relay_pin, LOW); // Turn off the relay (fan) } else { Serial.println("Fan on"); digitalWrite(relay_pin, HIGH); // Turn on the relay (fan) } }
تابع ()loop، یک تابع دیگر استاندارد آردوینو است که بعد از تابع ()setup به صورت مداوم اجرا میشود. در این تابع :
int temp_adc_val و float temp_val : این دو، متغیرهای صحیح و اعشاری برای ذخیره مقدار دما هستند.
temp_adc_val = analogRead(lm35_pin) : در این خط، ولتاژ آنالوگ را از سنسور دمای LM35 که به پایه A0 آردوینو متصل است (lm35_pin) را میخوانیم. سنسور LM35 یک ولتاژ آنالوگ خروجی متناسب با دما ایجاد میکند.
temp_val = (temp_adc_val * 4.88) : داده آنالوگ خوانده شده را اسکیل کرده تا ولتاژ را بر حسب میلی ولت داشته باشیم. فرض میکنیم که سنسور LM35 به ازای هر درجه سلسیوس، 10 میلی ولت ولتاژ تولید میکند.
temp_val = (temp_val / 10) : ولتاژ را به دما بر حسب درجه سلسیوس تبدیل میکنیم. ( با تقسیم بر 10)
Serial.print و Serial.println های متعددی در کد نوشته شده که برای نمایش مقدار دما و همچنین یک پیام در سریال مانیتور استفاده میشوند.
دستور if موجود در کد، بررسی میکند که دما (temp_val) از 40 درجه سلسیوس کمتر هست یا خیر. اگر هست، “Fan off” را چاپ کرده و relay_pin را به حالت LOW ببرد و رله ( که متصل به فن است) را خاموش کند.
و اگر دما بزرگتر یا مساوی 40 درجه سلسیوس بود، “Fan on” را چاپ کرده و relay_pin را به حالت HIGH ببرد و رله (فن) را روشن کند.
این کد فن را براساس دمای خوانده شده توسط سنسور LM35 کنترل میکند. کد به طور مداوم اجرا شده، دما را از روی سنسور میخواند و فن را براساس دمای آستانه تعیین شده در دستور if، کنترل میکند.
عملکرد فن کنترل شده با دما با استفاده از آردوینو
همانطور که میتوانید مشاهده کنید، با بیشتر شدن دمای LM35 از 40 درجه، فن روشن شده و با کمتر شدن دما از دمای آستانه، فن خاموش میشود. تبدیل فن دستی به فن اتوماتیک، یک پروژه ساده و درعین حال یک راه عالی برای افزایش راحتی و آسودگی در محیط کار و زندگی و یک تجربه جذاب است. امیدواریم این پروژه، برای شما آموزنده و سودمند بوده باشد.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام وقت بخیر من رله دو کاناله دارم باید چه کنم تا فن روشن شود
سلام عزیز
سوال و تصویر رله خود را در انجمن قرار بدهید
سلام اگر بخواهیم برای دما محدوده حد بالا وحد پایین بگزاریم چگونه انجام می شود
سلام عزیز
دو شرط قرار بدهید
به این مدار LCD هم میشه اضافه کرد؟
بله میتوانید اضافه کنید نیاز به تغییر کد هست. برای یادگیری برنامه نویسی آردوینو دوره آموزش آردوینو را مشاهده کنید.
پایه VCC رله یک کاناله 5 ولت به کدوم یک از پایه های برد آردوینو نانو متصل میشه؟
چون برد آردوینو نانو پایه ۲ نداره.
سلام عزیز
برد نانو پایه 2 دارد دقت کنید.
سلام. وقتتون بخیر. یه سوال داشتم.
این پروژه رو میشه با برد آردوینو نانو انجام داد ؟
سلام عزیز
بله
سلام آیا میشه دمای ۴۰ درجه را تغیر داد
سلام عزیز
بله
برای یادگیری آردوینو دوره آردوینو را مشاهده کنید
درود. مطالب و ایده ها بسیار جالب بودند . این پروژه در کولر های گازی هم اجرا میشه ؟
سلام عزیز
خوشحالیم که مطالب برای شما مفید بوده
بله