ترموستات در دستگاه و سیستم هایی که در یک حد بالا و یا پایین مشخص سرد و یا گرم میشوند استفاده میشود. گرمایش ساختمان ها، گرمایش مرکزی، سیستم های تهویه؛ آبگرمن و تجهزیات آشپزخانه نمونه مصارف استفاده ترموستات میباشد. در این آموزش که مربوط به کیت دما رطوبت بر پایه آردوینو است، یک ترموستات دیجیتال آماده طراحی خواهیم کرد. در ادامه با مرجع تخصصی آردوینو به زبان فارسی دیجی اسپارک همراه باشید. سنسور LM35 از سری سنسورهای کاربردی است که در این آموزش برای طراحی ترموستات دیجیتال استفاده شده است.
سنسور دما LM35
برای ساخت ترموستات دیجیتال به سنسور دما نیاز داریم. سنسور دما LM35 سنسوری به نسبت ارزان با دقت بالا در حدود +- ۰٫۵ درجه سانتی گراد است. ولتاژ سنسور طبق دیتاشیت ۴ تا ۳۰ ولت است اما به صورت کلی از ولتاژ ۵ ولت جهت راه اندازی استفاده میشود. رنج دمای اندازه گیری شده توسط سنسور – ۵۵ تا + ۱۵۰ درجه سانتی گراد است. پایه دیتای سنسور خروجی آنالوگ Analog است و ولتاژ خروجی به صورت مستقیم و خطی است و به ازای هر یک درجه سانتی گراد افزایش دما ولتاژ ۱۰ میی ولت افزایش مییابد. به دلیل پشتیبانی از خروجی آنالوگ و استفاده از ADC با تمامی میکروکنترلرها قابل تست و راه اندازی است.
ولتاژ ورودی سنسور LM35 را ۵ ولت گذاشته و پایه دیگر را به زمین GND میکروکنترلر اتصال دهید. خروجی دیتا بر حسب سانتی گراد با ولتاژ ۰ mv تا ۱۰ mv تغییر کرده و قابلیت خواندن ولتاژ را دارد. به عنوان مثال اگر دمای اندازه گیری شده ۰ درجه سانتی گراد باشد، ولتاژ هم ۰ ولت خواهد بود و سپس با افزایش هر یک درجه سانتی گراد ولتاژ ۰٫۰۱ ولت افزایش مییابد. فرمول تبدیل ولتاژ به دما به صورت زیر است:
کاربرد سنسور LM35
- سنسور دمای LM35 برای اندازه گیری دمای محیط بسیار مناسب و دقیق است.
- استفاده به عنوان سیستم هشدار دما در جهت افزایش و کاهش دما
- مانیتورینگ دمای باتری
- اندازه گیری دمای HVAC Application
استفاده از سنسور LM35 در ترموستات دیجیتال
همانطور که در کاربرد سنسور LM35 اشاره شد، از این سنسور به عنوان سیتسم هشدار دمایی میتوان استفاده کرد. با توجه به ابعاد بسیار کوچک و اتصالات سه سیمه و در نهایت دقت اندازه گیری مناسب به راحتی میتوانید یک ترموستات دیجیتال طراحی کنید. دمای اندازه گیری شده توسط سنسور در بازه – ۵۵ تا + ۱۵۰ درجه است و میتوانید ترموستات را در این بازه منفی و مثبت طراحی و برنامه نویسی کنید. برای خروجی ترموستات فقط به یک رله نیاز خواهید داشت. یک خروجی رله برای اتصال فن در نقش سیستم خنک کننده و یا یک خروجی برای تولید گرما به کار میرود.
آردوینو Nano و نصب نرم افزار آردوینو
برد آردوینو میکروکنترلری با قابلیت دسترسی به پورت های دیجیتال و آنالوگ و پروتکلهای I2C و SPI است. در این آموزش از آردوینو Arduino مدل UNO استفاده شده است. برد آردوینو Arduino دارای تراشه Atmega328P است و با در اختیار داشتن پایههای کنترلی آنالوگ و دیجیتال I/O میتوان با سنسورهای مختلف ارتباط برقرار کرد. با در نظر گرفتن پروتکل ارتباطی، آنها را راه اندازی و کدنویسی کرد. محیط برنامه نویسی IDE Arduino است که نباز به دانش برنامه نویسی C++ خواهد داشت. با انتقال کد به محیط برنامه نویسی و کامپایل کد پروژه آماده اجرا خواهد بود.
برد آردوینو نانو NANO، یک برد کامل با ابعاد کوچک در حدود ۱۸ * ۴۵ میلی متر و مناسب پروژه های DIY است. آردوینو نانو NANO دارای ۸ عدد پایه آنالوگ و ۱۲ پایه دیجیتال است. با توجه به ابعاد بسیار مناسب آن از جمله بردهای پرطرفدار به شمار میآید. آردوینو نانو NANO دارای میکروکنترلر ATMEGA328 است و بر اساس AVR طراحی شده است. ولتاژ مورد نیاز جهت راه اندازی آردوینو نانو ۵ ولت DC است. حافظه فلش مموری Flash برابر با ۳۲KB که ۲KB آن توسط بوت لودر BootLoader مصرف میشود. همچنین حافظه SRAM برابر با ۲KB و حافظه EEPROM برابر با ۱KB است. سرعت پردازش فرکانس در برد آردوینو نانو ۱۶MHz از این رو سرعت پردازش دیتا بالا خواهد بود. برد آردوینو نانو NANO دارای ۸ پایه آنالوگ Analog و ۲۲ پایه دیجیتال است که ۶ تای آن پایه PWM میباشد. همین مورد برد آردوینو نانو NANO را با دیگر بردهای آردوینو Arduino متفاوت کرده است. جریان هر یک از پین های آردوینو در حدود ۴۰میلی آمپر است که باید در هنگام اتصال سنسور به پایه های جریان پایه ها از این مقدار بیشتر نشود. در ادامه در لینک زیر روش نصب نرم افزار آردوینو قرار گرفته شده است. نصب نرم افزار آردوینو Arduino
نمایشگر ال سی دی کاراکتری
در آموزش ترموستات دیجیتال با سنسور دما LM35 برای نمایش دیتای دریافتی سنسور دما از ال سی دی کاراکتری استفاده میکنیم. ال سی دی های کاراکتری در ابعاد و رنگ های مختلف تولید شده است و دارای ۱۶ پایه هستند. ال سی دی های کاراکتری با بردهای آردوینو سازگاری دارند. جهت سهولت در استفاده از ال سی دی های کاراکتری با توجه به حجم بالای سیم ها از مبدل I2C استفاده کنید. LCD کاراکتری ۱۶*۲ یکی از پرطرفدارترین نمایشگرها است. این LCD در بسیاری از مدارها کاربرد دارد. یکی از دلایل پر مصرف بودن این مدل ال سی دی در مقابل نمایشگرهایی همچون سون سگمنت، عدم محدودیت در نمایش کاراکترها میباشد. ال سی دی از ۱۶ پایه تشکیل شده است که با بردهای آردوینو نانو، آردوینو UNO و آردوینو Mega2560 قابل راه اندازی است. جهت راه اندازی و آموزش کار با نمایشگر ال سی دی کاراکتری بر روی لینک زیر کلیک کنید. آموزش راه اندازی ۳ مدل ال سی دی کاراکتری LCD با آردوینو Arduino
استفاده از رله Relay
رله نوعی کلید الکترونیکی عملگر است که به دو حالت خاموش و روشن میتوانید آنرا تغییر وضعیت دهید. برای ساخت ترموستات با سنسور دما LM35 و فرمان به وسایل برقی نیازمند رله هستیم. توسط رله میتوانید جریان را عبور و یا قطع کنید. تمامی ماژول های رله در تعداد پایههای خروجی برابر است و مدلهای مختلفی مانند رله تک کانال، رله دو کانال، چهار کانال و هشت کانال در بازار موجود است. مشخصا اتصال پایههای سنسور به پایههای ورودی رله بسیار ساده است. پایههایی که با IN مشخص شده است مستقیم به پایههای برد میکروکنترلر متصل میشود. در این آموزش از رله دو کانال استفاده شده است که هر کانال را جداگانه میتوانید به یک خروجی مانند فن، پمپ وصل کنید.
اتصالات ترموستات دیجیتال Thermostat
برای انصال سنسور LM35 و رله و ال سی دی به برد آردوینو از جدول زیر استفاده کنید. اتصالات بسیار ساده است اما با توجه به اینکه به چندین پایه VCC نیاز داریم و فقط یک پایه در برد آردوینو برای ۵ ولت در نظر گرفته شده است، بایستی از پایه ها اشتراک بگیرید. برای اینکار از جامپر و کابل های قلت به همراه برد بورد مخصوص استفاده کنید. سپس طبق جدول های زیر اتصالات را برقرار کنید.
کد آردوینو ترموستات دیجیتال LM35
برای اجرای برنامه ترموستات دیجیتال با سنسور دما LM35 کافیست نرم افزار آردوینو را باز کرده و سپس کد زیر را کپی و به نرم افزار انتقال دهید.
#include <LiquidCrystal.h> int reading = 0; int sensorPin = A0; int relay =7; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); pinMode(relay,OUTPUT); } void loop() { reading = analogRead(sensorPin); int celsius = reading/2; lcd.setCursor(0, 0); lcd.print("Temperature: "); lcd.setCursor(0,1); lcd.print(celsius, DEC); lcd.print((char)223); lcd.print("C"); if (celsius >35) { digitalWrite(7,HIGH); } else { digitalWrite(7,LOW); } delay(500); lcd.clear(); }
نصب کتابخانه LCD
در کد ترموستات دیجیتال با سنسور دما LM35 آردوینو از کتابخانه LiquidCrystal استفاده شده است. جهت نصب کتابخانه از منو نرم افزار آردوینو مسیر زیر را طی کنید.
Arduino/ Tools/ Manage libraries
سپس عبارت زیر را در صفحه باز شده فیلتر کنید و کتابخانه زیر را نصب کنید.
تحلیل کد آردوینو ترموستات
#include <LiquidCrystal.h>
تعریف مقادیر اولیه و مشخص کردن پایه ها:
int reading = 0; int sensorPin = A0; int relay =7; LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
تعریف تابع Voidsetup در این تابع نوع ال سی دی مورد استفاه و پین خروجی تعریف شده است:
void setup() { lcd.begin(16, 2); pinMode(relay,OUTPUT); }
بخش اصلی برنامه تعریف حلقه تکرار است. در این بخش دستورات فرمان به رله پس از افزایش و کاهش دما نوشته میشود. به اینصورت که در ابتدا مقادیر آنالوگ توسط پایه OUT سنسور دماسنج LM35 خوانده شده و خروجی به صورت ولتاژ توسط ADC نمایش داده میشود. همانطور که در توضیحات سنسور LM35 گفته شد طبق فرمول ولتاژ روی پایه آنالوگ به دما تبدیل شده و بر حسب سانیت گراد نمایش داده میشود. حال میخواهیم در صورتیکه دمای اندازه گیری شده توسط سنسور بیشتر از ۳۵ شد، پایه شماره ۷ آردوینو که به رله متصل است HIGH شده و سپس در صورتیکه دما کمتر از ۳۵ بود، پایه شماره ۷ آردوینو LOW شود. به همین سادگی با تعریف برنامه در ذهن خود توسط دستورات AnalogRead و DigitalWrite در برنامه نویسی آردوینو میتوانیم به یک خروجی فرمان دهیم.
void loop() { reading = analogRead(sensorPin); int celsius = reading/2; lcd.setCursor(0, 0); lcd.print("Temperature: "); lcd.setCursor(0,1); lcd.print(celsius, DEC); lcd.print((char)223); lcd.print("C"); if (celsius >35) { digitalWrite(7,HIGH); } else { digitalWrite(7,LOW); } delay(500); lcd.clear(); }
جمع بندی لیدی پای
طراحی ترموستات بسیار ساده است و تا به حال با سنسورهای مختلف در دیجی اسپارک ساخت ترموستات دیجیتال آموزش داده شده است. جهت دریافت دیتای دقیق بایستی دمای اندازه گیری شده توسط هر سنسور را از دیتاشیت آن ها دریافت کرده و دقت اندازه گیری را ملاک انتخاب سنسور قرار دهید. برای اتصال فن و یا سیتسم های گرمایشی به برد آردوینو مسقیم از پایه های برد آردوینو نمیتوانید استفاده کنید. برای اینکار بایستی از یک رله Relay استفاده شود که دارای تنوع مختلفی است. بسته به تعداد خروجی های مورد نیاز از رله های ۱ تا ۸ کانال میتوانید به راحتی استفاده کنید. نوع برد آدروینو مورد استفاده در این کدنویسی مهم نیست و کافیست در تنظیمات نرم افزار آردوینو Arduino، نوع برد را مشخص کنید.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام خانم مهندس من شنیدم این سنسور جنبه آموزش داره درسته؟ دقتش چقدره؟
با سلام
خیر این سنسور مصارف گوناگونی دارد و فقط مختص آموزش نیست. دقت بالا در حدود +- ۰٫۵ درجه سانتی گراد دارد.
سلام خسته نباشید من یک پروژه دارم مال درس میکرو هست . پروژه از این قراره اردینو با سنسور lm35 بتواند دمای هوا را سنس کند در صورت رسیدن به دمای مورد نظر المنت روشن شود و بعد از رسیدن به دمای مورد نظر المنت خاموش شود . میشود برای این موضوع من رو راهنمایی کنید ؟
با سلام
در این آموزش سوال شما کامل آموزش داده شده است. لطفا بررسی کنید.
سلام خسته نباشید
من این پروژه را انجام داده ام. برنامه هم کامل بر روی برد آپلود کردم ولی در نهایت ال سی دی هیچی نشان نمیدهد و فقط روشن است. شما میدونید مشکل از کجاست؟
سلام
آیا از مقاومت یا پتانسیومتر برای پایه VO استفاده شده است؟ در متن آموزش روش راه اندازی ال سی دی گفته شده است.
سلام
بله از پتانسیومتر ۱۰ کیلو برای پایه vo استفاده کرده ام. و طبق آموزش راه اندازی ال سی دی به پایه آند هم مقاومت ۲۲۰ اهم اضافه کرده ام ولی مشکل بر طرف نشده و همچنان ال سی دی مربع نشان میدهد. راه کار دیگه ایی برا حل این مشکل وجود داره؟ در ضمن برنامه درست کار میکند و دقیقا سر دمایی که در برنامه مشخص میشود رله را وصل میکند
قطعا مشکل از اتصالات است و حتی ممکن است یکی از سیم ها اتصالی داشته باشد قطعی در مدار ایجاد میشود. برای اتصال ولوم بایستی پایه آنالوگ به vo وصل شود. سپس پایه gnd ولوم به صورت جداگانه با سیم به gnd وصل شود و سپس پایه vcc ولوم به ۵ ولت وصل شود.
مجدد بررسی و نتیجه را بررسی کنید.
بله مشکل قطعی یکی از اتصالات بود. مشکل کاملا رفع شد و ال سی به درستی نمایش میدهد. ممنون از آموزش خوبتون.
با سلام
از اینکه این مورد را اطلاع دادید، صمیمانه سپاسگزارم.
سلام خسته نباشید ببخشید اگه بخوام به این پروژه یک فن ۱۲ ولت اضافه کنم ایا لازمه کد بیشتری بزنم یا نه ؟ در کل اگه میشه یک راهنمایی در این باره بکنین که باید چه کارهایی رو انجام بدم ممنون
با سلام
خیر نیازی به اضافه کردن کد نیست. در صورتیکه ولتاژ ۱۲ است از خروجی رله برای فرمان به فن استفاده کنید.
سلام و ضمن تبریک سال نو و تشکر از سایت خوبیتون
من میخوام این ترموستات را برای پکیج استفاده کنم ولی میخواهم که قسمت اول آن با دیسپلی که در اتاق یا پذیرایی باشه و کلید ست کردن و کم و یا زیاد کردن دمای فعال شدن برای تغییر داشته باشه و همچنین بصورت بیسیم بشه به رله که نزدیک پکیج است فرمان روشن یا خاموش بده درست کنم
خیلی خوب میشمه برنامه آردوینو آنرا بگذارید چون خیلی کاملتر خواهد شد
با تشکر قبلی
با سلام
کاربر گرامی ضمن تبریک سال نو، پروژه ی درخواستی شما نیاز به طراحی و دانش برنامه نویسی دارد که میتوانید به دلخواه درخواست خود را از طریق پرتال پشتیبانی اعلام کنید تا در صورت اجرا هزینه ی اجرای پروژه اعلام شود.
سلام ممنونم از آموزش های بسیار خوبتان
یک ابهام داشتم
int celsius = reading/2; در این بخش چرا مقادیر نصف شدن ؟
lcd.print(celsius, DEC); و این دستور چه کاری انجام میدهد ؟
با سلام
با توجه به اینکه ورودی انالوگ و از بازه ۰ تا ۱۰۲۴ است برای تبدیل ولتاژ به ۰ تا ۵ ولت مقادیر دریافتی از سنسور بر دو تقسیم میشود.
در خصوص سوال دوم دیتای خروجی بر حسب DECIMAL نمایش داده میشود.
سلام
من همه بخش هارو به هم متصل کردم و وقتی برد رو به لپ تاپ متصل میکنم هم بردم و هم lcd روشن میشن ولی بعد از اینکه نوع برد رو مشخص میکنم بازم گزینه port برام فعال نمیشه برای همین نمیتونم برنامه رو روی برد اپلود کنم
چند باری هم برنامه رو restart کردم ولی بازم مشکل حل نشد به نظر شما مشکل چیه و باید چیکار کنم؟
با سلام
از کدام مدل برد آردوینو استفاده میکنید؟ پیغام اروری که برای شما نمایش میدهد چیست؟ ارسال کنید تا بررسی کنم.
سلام من میخواستم یه پروژه درست کنم دقیقا هین طور فقط میخوام که به جای اینکه دمای مرجع داخل کد قابل تغییر باشه بتونم با دو تا کلید دمای مرجع رو کم و زیاد کنم بدون دست زدن به برنامه اصلی لطفا راهنمایی کنید با تشکر.
با سلام
در این خصوص باید با استفاده از کلید منو طراحی کنید و تغییرات در کد خواهید داشت.
سلام من این اموزش رومی خوام انجام بدم اگه میشه لیست قطعات مخصوصا مدل بردرو بگین
با سلام
در اخر آموزش تمامی قطعات استفاده شده لینک شده است.
آردوینو
سنسور دما
ال سی دی
رله
کیت برد بورد رنگی و ۶۰ رشته کابل نری به نری
بجای نمایشگر از سون سگمنت و اون یکی دیگه که الان یادم نیست اسمش میشه استفده کرد؟
با سلام
بله فقط بایستی کد برنامه را تعمیم دهید.
با سلام و خسته نباشید
من میتونم با این آموزش یه ترموستات دیجیتال برای آبگرمکن برقی بسازم؟ کدوم قسمت هاشو باید تغییر بدم؟
با سلام
در این خصوص باید بخش الکترونیکی مدار را تغییر دهید.