توضیحات

icon فایل هایی که با لینک مستقیم در سایت قرار گرفته اند بدون پسورد می باشند.

ترمومتر و ترموستات با Bascom AVR

 

ترمومتر این پروژه دمای محیط را از ۰ تا ۹۹ درجه سانتی گراد با دقت ۰٫۵ درجه سانتیگراد اندازه گیری کرده و آن را بر روی LCD نمایش می دهد.

همچنین از این پروژه میتوان بعنوان یک ترموستات نیز استفاده نمود. تا پائین یا بالارفتن دما از حد مشخص را کنترل نمود.

 

این پروژه با میکروکنترلر AVR و با استفاده از کامپایلر Bascom AVR طراحی شده است.

برای Setpoint این پروژه دو دما قابل تنظیم می باشد. برای تنظیم بیشترین مقدار دما و کم ترین مقدار دما می توان از تک سوییچ ها استفاد کرد. مقادیر تنظیم شده در حافظه EEPROM داخلی میکروکنترلر ذخیره خواهد شد. تا با قطع تغذیه مدار، این مقادیر محفوظ بماند.

 

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

 برای استفاده از خروجی این سیستم باید از شماتیک زیر استفاده کرد.


برنامه این پروژه به روش ساب روتین نوشته شده است.
 

سابروتین چیست:
در گذشته جهت جابجایی در قسمت های مختلف برنامه از دستورات goto و jamp استفاده می کردند. این کار باعث پیچیده شدن برنامه و ناخوانی آن می شد. برای رفع این مشکل ساختار زیربرنامه و تابع ایجاد شد.
در این روش یک برنامه تشکیل شده از یک Main که هسته اصلی برنامه است و تعداد زیادی از زیر برنامه ها.
هر زیربرنامه فقط یک کار انجام میدهد و بعد از اتمام کار، برنامه به همان جایی که فراخوانی شده بود بر میگردد.
برنامه هایی که به روش ساب روتین نوشته می شوند، از خوانایی بالاتری برخوردار بوده و مشکلات برنامه را سریعتر می توان پیدا کرد. از یک زیربرنامه می توان برای برنامه های دیگر نیز استفاده کرد. و این روش سرعت تهیه برنامه های بعد را نیز افزایش می دهد.
توجه داشته باشید که بعد از استفاده از زیربرنامه ، در آخر باید از دستور Return استفاده کنید تا برنامه به جای اول خود برگردد.

 

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

در برنامه نویسی این پروزه کوچک به تعداد ۱۲ عدد زیر تابع استفاده شده است.

جهت مشاهده سورس این پروژه اینجا کلیک کنید.

زیر تابع های این پروژه از قرار زیر است:

.       • Display_start_text
.       • Eeprom_default
      • Eeprom_save
.       • Eeprom_load
.       • Up_maximum_temperature
.       • Down_maximum_temperature
.       • Up_minimum_temperature
.       • Down_minimum_temperature
.       • Red_temp
.       • Show_temp
.       • Setting_fan
.       • Setting_hiter

 

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

 

اهداف آموزشی:

.       •  آشنایی با LCD کاراکتری و نحوه راه اندازی آن
      •  آشنایی با ADC میکروکنترلر
      •  آشنایی با سنسور دمای LM35 و نحوه راه اندازی آن
      •  آشنایی با رله و نحوه راه اندازی آن
      •  نحوه خواندن و نوشتن بر روی حافظه EEPROM داخلی میکروکنترلر

.       •  آشنایی با روش برنامه نویسی ساب روتین

 

محتویات فایل دانلود:

.       •  سورس برنامه با کامپایلر بیسکام

.       •  شبیه سازی پروژه با نرم افزار پروتیوس


جهت دانلود فایل های این پروژه اینجا کلیک کنید. ( ۲۲۴KB )

 

تهیه و تنظیم: علیرضا جودی

 

منبع:

 http://projects.m32.ir/1310/ 

 

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

 

 

آبان ۱۴ام, ۱۳۹۱ | 16,343 views | دسته: ADC، Alphanumeric LCD، Bascom AVR
برچسب ها: ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ، ،


نظرات دیگران در مورد این مطلب:
علی :

با سلام
دقت اندازه گیری این مدار حدود چقدر هست
تو فایل پروتیوس که امتحان کردم دما انتخابی رو به ۱ درجه افزایش میده
ولی دمای حداقل و حداکثر رو با۰٫۵ در جه افزایش میده
ایا امکانش هست دمای اولی رو هم ۰٫۵ درجه افزایش داد

 

پاسخ:

در مورده دقت اندازه گیری این مدار:

از آنجایی که ADC داخلی میکروکنترلر ۱۰ بیتی می باشد و ولتاژ مرجع +۵ ولت در نظر گرفته شده با یک محاسبه ساده می توان میزان دقت نمونه برداری مدار را به دست آورد

C1

در مورده دقت اندازه گیری دما:

دقت اندازه گیری سنسور LM35 مطابق با توضیحات دیتاشیت ۰٫۵ درجه سانتی گراد می باشد. شاید در شبیه ساز پروتیوس مقدار دما به اندازه ۱ درجه تغییرات داشته باشد ولی در استفاده عملی از این سنسور، میزان تغییرات ۰٫۵ درجه می باشد.

علی :

سلام
مرسی از توضیحی که دادید یک سوال هم داشتم
دمای که بین
بیشترین > ؟ > کمترین
قرار میگیره همون دمای انتخابی ما هست یعنی من اگر می خوام دما تو ۳۷٫۵ ثابت باشه باید دما رو اینجا وارد بکنم
باتشکر از سایت خوبتون

 

پاسخ:

بیشترین مقدار دمای مورد نیاز > دمای محیط > کمترین مقدار دمای مورد نیاز

بیشترین مقدار دمای مورد نیاز: این مقدار بیشترین حد مجاز را تعیین میکند و توسط کاربر قابل تنظیم می باشد.

دمای محیط: این مقدار توسط سنسور اندازه گیری شده و نشان دهنده دمای فعلی محیط می باشد.

کمترین مقدار دمای مورد نیاز: این مقدار کم ترین مقدار مجاز را تعیین میکند و توسط کاربر قابل تنظیم می باشد.

فرزین :

سلام پروژه رو دانلود کردم اما نمی تونم pcb رو ازش در بیارم اگه راهنمایی کنید یا فایلش رو بذارید ممنون میشم

zz :

سلام
در برنامه بسکام علت اینکه دما که توسط دستور getadc گرفته شده تقسیم بر ۲٫۰۴۸ می شود چیست؟
من مدار رو بستم و کامل جواب گرفتم ولی نمی دانم چرا رله ای که دستور از پایه ۲۸ میکرو می گیرد کامل ثابت نمی شود و دائما مانند چراغ چشمک زن کلید میزند فقط در صورتی ثابت می شود که یک یخ روی سنسور قرار دهم یعنی سرمای مطلق.این عیب را چگونه برطرف کنم؟در ضمن رله ها سالم است و مدار چندین بار تست شده و از سالم بودن و صحیح بودن همه مراحل کارم اطمینان دارم.

علی :

سلام آقای مهندس
خسته نباشین
۳ سوال داشتم
۱-رله ۱۲ ولت ۱۰ آمپره یا ۲۲۰ولت ۱۰ آمپر ؟
۲-فن مورد استفاده ۱۲ ولته یا ۲۲۰ ولت؟
vcc -3 جند ولته؟
مرسی

 

پاسخ:

۱- رله ۵ ولت ۱۰ آمپر

۲- فن مورده استفاده ۲۲۰ ولت می باشد که نحوه استفاده آن در شماتیک اشاره شده است.

۳- VCC یعنی ولتاژ +۵ ولت

ali :

سلام استاد
خسته نیاشید
من این مدار رو بستم
اما به یک مشکل برخوردم
زمانی که سنسور دما رو به پایه ۳۳ وصل میکنم عدد ۴۹۹ رو بعنوان دما نشون میده
زمانی که پایه ۳۳ میکرو به هیچی وصل نباشه یعنی lm35 رو جدا کنم دما رو ۲۰۰ نشون میده و
زمانی که پایه ۳۳ رو به زمین مدار وصل میکنم دما رو ۰ نشون میده
با تشکر

 

پاسخ:

لطفا پایه های ۳۰ و ۳۲ از میکروکنترلر را به تغذیه VCC متصل نمایید. این پایه های برای تامین تغذیه مبدل ADC داخلی میکروکنترلر می باشد.

ali :

آقای مهندس فن و هیتر رو جدا کردم
پایه های ۳۰ و ۳۲ و ۱۰ رو به هم وصل کردم و به vcc
ولی ۴۹۹ رو نشون میده
روی هزار سوراخ مدار رو بستم
منبع تغذیه هم ۵ولت ۱ آمپره
دمای مین و ماکس رو میتونم کم و زیاد کنم
یعنی همه چی عالیه فقط دمای محیط مشکل داره
با stk500 پروگرم کردم
با یک میکرو دیگه هم چک کردم ولی فایده ای نداشت
توی بسکام refrence رو internal کردم و طبق و ولتاژ مرجع جدید برنامه رو نوشتم ولی بازهم ۴۹۹ رو نشون داد
به نظ شما مشکل از کجاست؟
مرسی

 

پاسخ:

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

لطفا تمام قسمت های سخت افزاری مداراتان را بارها و بارها بررسی نمایید چون حدس ما ایراد در نحوه بستن شماتیک می باشد.

مطمئنن دو موردی که در زیر گفته می شود را بررسی کرده اید ولی جهت اطمینان می پرسیم:

۱٫ از بابت اتصال پایه های ۳۰ و ۳۲ میکروکنترلر ATmega32 یا ATmega16 به تغذیه +۵ ولت مطمئن هستید؟

۲٫ مطابق برنامه نمونه برداری از ورودی آنالوگ از کانال ۷ انجام میگیرد یعنی پایه ۳۳ از میکروکنترلر مورد نظر. آیا سنسور به این پایه متصل شده است؟

ali :

سلام استاد.
ممنون از لطف و توجهتون.
مدارو طبق راهنمایی شما مجدد بستم. درست شد اما یه مشکلی که داره اینه که دمایی که روی ال سی دی نمایش داده میشه خیلی نوسان داره. مثلا دمای اتاق رو ۲۴، ۲۵،۲۶ نمایش میده. برای پایداریش ممکنه لطف کنید و راهنماییم کنید؟
با تشکر بی پایان .

 

پاسخ:

لطفا در مسیر خروجی سنسور که به میکروکنترلر متصل می شود یک عدد خازن ۴٫۷uF قرار دهید. قطب منفی خازن به GND و قطب مثبت خازن به خروجی سنسور وصل شود. انتظار داریم که خروجی پایدار شود.

alsharifi :

با سلام , من در رابطه باتنظیم ترمومتر دستگاه هواساز خود ( ecotec – sic 07 ) اطلاعاتی می خواستم . با تشکر

 

پاسخ:

متاسفانه تجربه کار با این دستگاه را نداریم

amir :

خیلی خیلی آلیه من از ۲۰ بهتون میدم۱۹٫۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹

jaffar :

سلام.خیلی ممنون از اینکه چنین پروژه های ارزشمند و کمیابی روی سایت قرار میدهید.میخواسم که برای این پروژه PCB رسم کنم آما چون تازه واردم نتونستم خوب رسم کنم،از شما میخواستم که برای این پروژه مدار چاپی هم رسم کنید.از لطفتان ممنونم.باتشکر

hani :

سلام استاد. می خوام تو این پروژه فقط هیتر کنترل بشه و فن حذف بشه.چه تغییراتی باید انجام بدم ؟در ضمن این پروژه رو میخوام تو دستگاه جوجه کشی بکار ببرم آیا ممکنه؟باتشکر

meysam :

سلام
من به یه ترمومتر دما نیاز داشتم! رنج ۰ تا ۲۵۰ درجه سانتی گراد،ایا این پروژه قابلیت ارتقاع به این رنج رو داره؟
اگر نه،پروژه ای دیگه ای برا رسیدن به این رنج سراغ دارید؟
با تشکر

meysam :

ببخشید ترمومتر نه،ترموستات میخواستم.اشتباه نوشتم.

محسن :

سلام
میشه علت اضافه و کم کردن یک به
Minimum_temperature_high
Minimum_temperature_low
Maximum_temperature_high
Maximum_temperature_low
رو تویه زیر برنامه ی ( Setting ها) فن و هیتر رو توضیح بدین؟

میلاد :

سلام اگه میشه این پروژه رو با سنسور ds18b20 نیز اجرا کنید خیلی کاربردیه. ممنون

محمد علی :

سلام ممنون از سایت خوبتون میخواستم بدونم از کجا میتونم pcbمدارو بگیرم با تشکر

 

پاسخ:

این مطلب آموزشی فقط تا شبیه سازی و رسم شماتیک تهیه شده است. رسم PCB به علت زمان بر بودن خارج از توان ما می باشد.

محمد :

سلام من این مدارو روی atmega8 منتقل کردم و برنامشو کمی تغیر دادم مخصوصا توی نحوه نمایش اطلاعات روی lcd عالی کار میکنه اگه لازم داشتین بگین تا لینک دانلودشو بزارم ممنون از پروژه خوبت ممنون عالی کار میکنه

Lili :

سلام …من میخوام تغییرات دمارو.روی سون سگمنت سه تایی نمایش بدم یعنی ی مدار اعلام حریق بستم و ج گرفتم و میخواستم کمکم کنید چه تغییراتی تو برنامه بدم ک بشه از سون سگمنت جای ال سی دی استفاده کرد و میکرو هم atmega8باشه…

 

پاسخ:

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

http://projects.m32.ir/3122/

http://projects.m32.ir/454/

http://projects.m32.ir/1151/

http://projects.m32.ir/1226/

reza :

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

 

پاسخ:

فایل این پروژه بررسی شد. سورس پروژه با نام T5.bas در فولدر Compiler_Bascom AVR v1.11.9.0 موجود است.

 

reza :

با تشکر فراوان از سایت عالیتون
در برنامه نویسی این پروژه با برنامه bascom از روش سابروتین استفاده شده است
لطفا در صورت امکان در موزد برنامه نویسی این پروژه یک توضیح مختر ایمیل کنید برام
خیلی ممنون و متشکر

 

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

آرش :

با عرض سلام خدمت اساتید
من به یه برنامه روی ای سی ۸mega نیاز داشتم که رنج دما ما بین ۰ تا ۶۰۰ سانتی گراد باشه و اتوماتیک کردن در دمای دلخواه ما بین ۰ تا ۶۰۰ . اگه سورس دارین واسه سون سگمنت ۴ ردیفه لطفا برا منم ارسال کنین ! تشکر فراوان

امیر شمس :

اقا واقعا دستتون درد نکنه ///… عالی بود ینی … ایشالله هرچی از خدا میخواین بهتون بده

امير :

سلام ممنونم از مطالب مفیدتان
من این مدار را باشبیه ساز کامل تست کردم ‘ درست است ‘ ولی زمان اجرا متاسفانه با توجه به چندین بار کنترل مدار برنامه اجرا نمی شود و صفحه نمایشگر خاموش است از پتانسیومتر نیز برای کنتراست استفاده کردم پایه های ۱۰ و ۱۱ میکرو نیز به تغذیه وصل کردم
لطفا راهنمایی فرمایید سپاسگزارم .


افزودن نظر: