رفتن به مطلب

ساعت و دماسنج و کرنومتر با ATMEGA8 avr


setiya

ارسال های توصیه شده

stopwatch-icon-100x100.jpg

در این پروژه از ای سی Atmega8 و سنسور دمای lm35 استفاده شده که کرنومتر و ساعت و دما بر روی ال سی دی کارکتری ۱۶*۲ نمایش داده میشود و زبان برنامه نویسی بیسیک است و کامپایلر نرم افزار بسکام میباشد.

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

منظور از حالت آسنکرون این است که تایمر دو میکرو کلاک خود را از کریستال ساعت در یافت میکند که فرکانس کریستال ساعت۳۲٫۷۶۸ کیلوهرتز است و به پایه های TOsc1 و Tosc2 متصل میشود که در میکرو ATMEGA8 پایه های ۹ و ۱۰ هستند.

0-yazdkit.jpg

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

1-yazdkit.jpg

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

زمانی که میکرو روشن شد ابتدا سه متغییر ساعت و دقیقه و ثانیه به صورت زیر مقدار دهی میشود.

2-yazdkit.jpg

و بر روی ال سی دی عبارت Hello را نمایش می دهد و بعد از ۲ ثانیه وارد بخش اصلی برنامه می شود که این قسمت در یک do – loop قرار دارد که در این بخش میکرو مدام مقدار دما را از سنسور دما lm35 که یک سنسور دمای متداول آنالوگ می باشد مقدار دما را میخواند و کلیدهای ورودی را چک میکند و مقدار ساعت و دقیقه و ثانیه را نمایش میدهد.

3-yazdkit.jpg

مقدار متغییر های ساعت هر یک ثانیه یک بار مقدار دهی جدید میشود یعنی به ثانیه یک عدد اضافه میگردد و اگر مقدار ثانیه بزرگتر ۵۹ شد مقدار ثانیه را صفر میکند و به دقیقه یک عدد اضافه میکند و همینطور مقدار دقیقه و ساعت محاسبه میگردد که تمامی این کارها در لیبل SEctic اتفاق میافتد.

مقدار ساعت بر حسب ۲۴ ساعت نمایش داده میشود.

در این پروژه سه کلید برای تنظیمات و همچنین کرنومتر استفاده شده است که در زیر به ریز جزییات ان میپردازیم.

نام کلید ها عبارت است از

۱:Key set

2:Key up

3:Key down

4-yazdkit.jpg

ابتدا که میکرو روشن شد بعد از نمایش Hello بر روی خط اول ال سی دی زمان و در خط دوم دمای محیط نمایش داده میشود.

اگر در این حال کلید Key set را فشار دهید وارد قسمت تنظیمات ساعت میشود که روی ال سی مقدار ساعت را نشان میدهد و مقدار دقیقه و ثانیه به صورت* (ستاره ) نمایش داده میشود و بازدن کلید های Key up و key down مقدار ساعت را کم و زیاد میکنید.

حال اگر دوباره کلید Key set را بزنید وارد قست تنظیم دقیقه می شود که در این حالت بر روی ال سی دی مقدار دقیقه نمایش داده میشود و مقدار ساعت و ثانیه به صورت * (ستاره ) نمایش داده میشود که با زدن کلید های Key up و key down مقدار دقیقه کم و زیاد میشود.

بعد از تنظیم دقیقه کلید Key set را فشار دهید که مقدار جدید ساعت جایگزین مقدار قبلی میشود و از قسمت تنظیمات خارج میشوید و میکرو دوباره به روال اصلی خود برمیگردد و بر روی ال سی دی مقدار ساعت و دما را نشان میدهد.

اما اگر در زمانی که میکرو دارد ساعت و دما را نشان میدهد به جای کلید Key set کلید Key up را فشار دهید وارد قسمت کرنومتر (stop watch ) میشوید و بر روی ال سی مقدارزیر نمایش داده میشود.

5-yazdkit.jpg

دورقم صفر از سمت راست به چپ برای شمارش بر حسب میلی ثانیه

دو رقم صفر بعدی برای شمارش ثانیه

دورقم بعد بعدی برای شمارش دقیقه

دو رقم بعد برای شمارش ساعت میباشد.

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

6-yazdkit.jpg

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

زمانی که در حالت کرنومتر هستید اگر کلید Key set را فشار دهید کرنومتر شروع به کار میکند و بر روی ال سی مقادیر در حال شمارش نمایش داده میشود و برای متوقف کردن کرنومتر باید کلید key down را فشار دهید که زمان شمارش داده شده تا ان موقع بر روی ال سی دی ثابت میشود.

برای خروج از حالت کرنومتر و نمایش دما و ساعت باید کلید key up را بزنید.

برای اندازه گیری دما از سنسور lm35 استفاده شده است که خروجی ان ولتاژ انالوگ میباشد و نسبت به هر ۱درجه سانتی گراد ، خروجی ان ۱۰ میلی ولت افزایش میابد که این ولتاژ توسط ADC میکرو اندازه گیری میشود.

lm35dz.jpg

8-lm35-yazdkit.jpg

رفرنس ولتاژ ADC میکرو ۵ ولت میباشد که طبق رابه روبرو ۵۰۰۰mv / 1023 = 4.88mv هر پله adc از ۱۰۲۳ پله به ازای ۴٫۸۸ میلی پر میشود.

یعنی اگر دما برابر ۱ درجه سانتیگراد باشد ولتاژ خروجی سنسور۱۰ میلی ولت است که به ورودی ADC شماره یک وصل شده است ۲ تا خانه از ADCرجیستر پر میشود.

به همین دلیل برای نمایش مقدار واقعی دما باید مقدار خانه های پر شده در ADC را بر عدد ۲ تقسیم کنید مثلا برای اندازه گیری دمای ۱ درجه باید مقدار adc را که برابر ۲ است را بر ۲ تقسیم کنیم تا جواب بدست امده که۱ می باشد همان مقدار دمای اندازه گیری توسط سنسور است.

7-yazdkit.jpg

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

9-lcd-yazdkit.jpg

نکته مهم : در برنامه فرکانس میکرو ۴ مگاهرتز تعیین شده است که باید در فیوز بیت مقدار فکانس را ب روی ۴ مگ باید تنظیم نمایید و همچنین فیوز بیت CKOP را نیز فعال نمایید .

توجه : مقدار فرکانس میکرو را به غیر از ۴ مگ تنظیم نکنید چون تایمر یک بر طبق فرکانس ۴ مگ نوشته شده و تنظیم شده است.

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...