ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

ساخت ساعت و تقویم شمسی دیجیتال

در این بخش تیم الکترونیک و برنامه نویسی الکترونیک ۹۸, اقدام به طراحی و انتشار پروژه ای کاربردی و حرفه ای با عنوان, ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307, برای شما علاقه مندان به پروژه های میکروکنترلر AVR کرده است. در این پروژه می خواهیم زمان و تاریخ را به صورت شمسی توسط آی سی ساعت DS1307 و میکروکنترلر AVR بر روی یک LCD کاراکتری نمایش دهیم و همچنین بتوانیم دمای محیط را کنترل و دو رله را در زمان های دلخواه روش و خاموش کنیم.

بعد قبل
ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307
ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307
ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307
بعد قبل

آی سی ساعت DS1307

ساعت زمان واقعی سریال DS1307, یک ساعت / تقویم BCD کم مصرف با 56 بایت حافظه NV RAM است. آدرس و داده از طریق ارتباط I2C منتقل می شوند. این تراشه ساعت / تقویم, اطلاعات ثانیه, دقیقه, ساعت, روز, ماه و سال را فراهم می کند. آی سی ساعت DS1307 به طور خودکار برای ماه های کمتر از 31 روز و سال های کبیسه تنظیم شده است. ساعت می تواند به هر دو صورت 12 و 24 ساعته با علامت قبل / بعد از ظهر به کار گرفته می شود. این تراشه دارای مدار داخلی تشخیص نقص تغذیه نیز می باشد و در صورت بروز قطع تغذیه, باطری پشتیبان را به طور خودکار در مدار قرار می دهد.


نقشه شماتیک پروژه

نقشه شماتیک پروژه ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

لیست قطعات مورد نیاز

مقاومت 1 کیلو اهم با توان 0.25 وات و تلرانس 5 درصد4 عدد
مقاومت 10 کیلو اهم با توان 0.25 وات و تلرانس 1 درصد4 عدد
مقاومت 330 اهم با توان 0.25 وات و تلرانس 1 درصد2 عدد
مقاومت 4.7 کیلو اهم با توان 0.25 وات و تلرانس 1 درصد2 عدد
پتانسیومتر خوابیده 10K کیلو اهم تک‌دور مدل DIP2 عدد
دیود 1N40076 عدد
خازن الکترولیتی 470uf میکروفاراد 16 ولت1 عدد
خازن عدسی 100nF نانوفاراد2 عدد
رگولاتور ولتاژ 5 ولت L78051 عدد
سنسور اندازه گیری دما LM35DZ1 عدد
آی سی شمارش و نگهداری ساعت و تقویم DS1307 مدل DIP1 عدد
آی سی ULN2804A مدل DIP اورجینال1 عدد
مقاومت 1 کیلو اهم با توان 0.25 وات و تلرانس 5 درصد1 عدد
میکروکنترلر ATMEGA32A مدل DIP تایوانی با 40 پایه1 عدد
سوکت آی سی 40 پایه مدل معمولی1 عدد
سوکت آی سی 8 پایه مدل معمولی1 عدد
سوکت آی سی 18 پایه مدل معمولی1 عدد
ترمینال پیچی 2 پین مدل KF300 رنگ آبی1 عدد
ترمینال پیچی 3 پین مدل KF300 رنگ آبی4 عدد
لامپ LED قرمز سایز 3mm میلی متر مدل مات4 عدد
LCD کاراکتری مدل 16×2 با Backlighting آبی1 عدد
پین هدر نری صاف 1x40 با ارتفاع 11 میلیمتر - مشکی1 عدد
پین هدر مادگی صاف 1x40 با فاصله پایه 2.54 میلیمتر - مشکی1 عدد
کریستال 3.2768MHz مگاهرتز1 عدد
تک سوئیچ 4 پایه DIP سایز 6x6x5 میلیمتر4 عدد
رله 12V ولت معمولی تک کنتاکت با جریان 10 آمپر4 عدد
آداپتور 12V ولت 2A آمپر مدل بین راهی ساخت ایران1 عدد

ویژگی های برجسته آی سی ساعت DS1307

:: توانایی شمارش ثانیه, دقیقه, ساعت, روز, ماه, سال, سال کبیسه تا سال 2100 میلادی

:: مصرف کمتر از 500nA در حالت استفاده از باتری پشتیبان

:: محدوده دمای صنعتی 40- تا 85+ درجه سانتی گراد

:: آشکار ساز خودکار نقص تغذیه و مدار کلید زنی باتری

:: 56 بایت حافظه NV RAM برای ذخیره اطلاعات

:: بسته بندی های 8 پایه PDIP و SOIC

:: سیگنال خروجی مربعی برنامه پذیر

:: ارتباط I2C


نقشه جاگذاری قطعات بر روی برد PCB

نقشه جاگذاری قطعات بر روی PCB پروژه ساعت و تقویم شمسی دیجیتال با آی سی ساعت DS1307

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

هویه1 عدد
سیم لحیم1 عدد
کف چین1 عدد
قلع کش1 عدد

ساخت دماسنج با قابلیت کنترل دمای محیط

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

به عنوان مثال اگر دمای محیط در حالت عادی 25 درجه سانتی گراد باشد و همچنین دمای پائین بر روی 20 درجه سانتی گراد و دمای بالا بر روی 28 درجه سانتی گراد از سوی کاربر تنظیم شده باشد رله مربوط به کنترل دما بالا و پایین غیر فعال است, حال اگر دمای محیط کمتر از دمای پایین یعنی 20 درجه سانتی گراد باشد رله دمای پائین فعال می شود و یا در صورت اینکه دمای محیط بیشتر از دمای بالا یعنی 28 درجه سانتی گراد باشد رله مربوط به کنترل دما بالا فعال شده و در نتیجه وسیله برقی متصل به دستگاه که می تواند یک فن یا هیتر یا هر وسیله دیگری باشد روشن و یا خاموش شود.

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

روشن و خاموش کردن وسایل برقی در ساعات مشخص

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

برای انجام تنظیمات ساعت و دما در این پروژه از چهار میکروسوئیچ استفاده شده است, که توسط میکروسوئیچ Menu می توانیم وارد منوی تنظیمات شویم و توسط سه کلید دیگر می توانیم در منوها پیمایش کنید و یا مقادیر مربوط به زمان ها و دما ها را کاهش یا افزایش دهیم.

نحوه تبدیل تاریخ میلادی به شمسی در تراشه DS1307

برای شروع ارسال داده در پروتکل I2C از دستور I2cstart و برای ارسال یک بایت داده از دستور I2cwbyte استفاده می کنیم. با دستور I2crbyte نیز می توان یک بایت داده را از باس TWI خواند. آدرس دستور نوشتن در آی سی ساعت DS1307 مقدار D0H و آدرس خواندن DTH است.

آی سی ساعت DS1307 تاریخ را بر مبنای سال میلادی گزارش می دهد و ما برای مشاهده به صورت سال شمسی باید تاریخ فوق را تبدیل کنیم. در تاریخ میلادی هر سال از 365 روز تشکیل شده و هر چهار سال یک بار سال کبیسه داریم که یک روز بیشتر از سال های معمول دیگر است. در سال میلادی این یک روز سال کبیسه به روزهای ماه دوم سال اضافه می شود. ماه دوم سال در سال های معمول 28 روز و در سال کبیسه 29 روز است.

علت ایجاد سال کبیسه این است که چرخش زمین به دور خورشید 365 روز و 5.8125 ساعت طول می کشد این 6 ساعت اضافه در هر چهار سال یک روز می شود که باعث ایجاد سال کبیسه می شود. همان طور که مشاهده می کنید این ساعت اضافی دقیقا 6 ساعت نیست و تقریبا 0.1875 ساعت کمتر از 6 ساعت است که در 128 سال تقریبا یک روز شده و باعث حذف یک سال کبیسه می شود! این قاعده در تقویم شمسی نیز وجود دارد.

در ابتدا باید تشخیص دهیم که سال میلادی کبیسه است یا نه ! برای اینکار باقی مانده تقسیم سال میلادی بر اعدا 4، 100 و 400 را محاسبه میکنیم. اگر سال بر 4 بخش پذیر باشد، کبیسه است به شرط اینکه بر 100 بخش پذیر نباشد یعنی نمی توان گفت سال 2000 کبیسه است چون بر 4 و 100 بخش پذیر است. حال اگر سال مورد نظر بر 100 و 400 بخش پذیر باشد، سال کبیسه است. به بیان دیگر می توان گفت سالی کبیسه است که باقی مانده آن بر 4 برابر صفر و باقی مانده آن بر 100 غیر صفر باشد یا اینکه همزمان باقیمانده تقسیم آن بر 100 و 400 صفر باشد.

پس از انجام این عملیات باید با توجه به اینکه سال کبیسه است یا نه، تعداد روزهای ماه دوم را 28 یا 29 قرار داد و تعداد روز گذشته از سال میلادی را محاسبه کرد. برای اینکار روزهای هر ماه را در یک آرایه نوع بایت با طول 12 ذخیره کرد و با توجه به عدد ماه، روزها را با هم جمع و در نهایت روز گذشته از ماه جاری را نیز جمع می کنیم. به عنوان مثال روزهای گذشته از سال میلادی را در تاریخ 2012/4/3 را بدین صورت 94=3+31+29+31 محاسبه می کنیم.

با توجه به اینکه سال 2012 کبیسه است، ماه دوم را 29 روزه محاسبه و روزهای گذشته از سال 2012 در این تاریخ 94 به دست آمد. در ادامه باید روزهای گذشته سال شمسی را محاسبه کنیم! اولین روز شمسی 79 روز بعد از آغاز سال میلادی است. این عدد برای سال کبیسه یا غیر کبیسه یکسان است. چون وقتی سال 2012 کبیسه است، سال 1391 نیز کبیسه است.

سال شمسی 621 سال عقب تر از سال میلادی است. بنابراین با کم کردن عدد 621 از سال میلادی، سال شمسی به دست می آید. ولی باید توجه داشت که اگر تعداد روز سال میلادی کمتر از 79 باشد هنوز نوروز نرسیده و ما در سال قبلی شمسی هستیم و باید سال میلادی را منهای 622 کنیم.

در ادامه اگر تعداد روز از 79 بیشتر بود عدد 79 را از آن کم کرده تا روزهای گذشته از سال شمسی به دست آید. اگر عدد کمتر از 79 بود باید دید که سال قبلی میلاد کبیسه بود یا نه. اگر سال قبل کبیسه باشد روز سال شمسی از جمع روز سال میلادی با عدد 287 به دست می آید و اگر کبیسه نباشد با عدد 286 جمع می شود.


ویدیو ضبط شده از نحوه راه اندازی و عملکرد پروژه

در زیر یک ویدئو از نحوه عملکرد پروژه ساخته شده مدار کنترل دما و ساعت دیجیتالی با آی سی DS1307 ضبط شده است, که می توانید برای درک بیشتر از نحوه عملکرد پروژه به صورت آنلاین مشاهده و یا از انتهای همین پست دانلود نمائید.

همانطور که در تصاویر موجود از پروژه ساخته شده مشاهده می کنید جهت نمایش اطلاعاتی نظیر ساعت و دما از یک LCD کارکتری 2 در 16 استفاده شده است. همچنین لازم به ذکر است در فایل پیوست این پروژه نقشه شماتیک و فایل برنامه میکروکنترلر که به زبان بیسیک BASIC و در محیط نرم افزار BASCOM-AVR نوشته شده موجود می باشد. همچنین فایل شبیه سازی پروژه که با نرم افزار Proteus Professional طراحی شده است نیز موجود می باشد, فقط دقت کنید برای اجرای برنامه شبیه ساز به نرم افزار Proteus ورژن هشت و بالاتر احتیاج دارید.


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

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

 اطلاعات پروژه

 رمز فایل : www.electronics98.com (این مطلب فاقد فایل جهت دانلود است)

 محیط برنامه نویسی : Bascom-AVR

 برنامه نویسی شده به زبان : Basic

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 18 دسامبر 2017

41 دیدگاه

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

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

  3. خیلی ممنونم لطف بی انتهای شما

  4. سلام مجدد استاد اکبری. ببخشید من همین مدار ساعت دیجیتال و تقویم شمسی رو بستم و پروگرامرم هم مثله شما هاتل هست و طبق توضیحاتی که داخل فیلم دادین پروگرام کردم آیسی رو. دوتا مشکل هست. اول اینکه کلا زمان رو نمی شماره و دوم اینکه برای تاریخ از سال ۱۳۷۹ میاره و برای ماه و روز رو در هم میاره ینی مثلا ۱۹۰۲ این ینی ماه ۱۹ که ما نداریم. به نظر شما مشکل کجاست میشه راهنماییم کنین خیلی به این مدار نیاز دارم

  5. ممکنه از آی سی ds1307 باشه چون من اورجینال رو نخریدم و مغازه دارا میگفتن تو ۱۰۰ روز ۱۰۰ ثانیه عقب میوفته. حالا برای مشکل اول که زمان رو نمیشماره ینی ساعت روی 0:0:0 هست و تکون نمیخوره احتمال هست از آیسی ساعت باشه یا از میکرو و نحوه پروگرام کردنه؟ ممنون میشم جواب بدید

  6. برای تقویم هم راه حل بدید چون موقع تنظیم تاریخ من مشکل دارم و عدد ۱۹۰۲ رو برای من به جای ماه و روز میاره

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

  8. سلام مجدد ممنون چشم حتما

  9. سلام جناب مهندس. آیسی ds1307 رو عوض کردم و مدار طبق توضیحات شما داخل فیلم عمل کرد خیلی خیلی ممنون

  10. دوستان توصیه میکنم برای عمل کرد هر چه بهتره این مدار از قطعات اورجینال و درجه یک استفاده کنید درسته گرون تره اما نتیجه مطلوب میگیرید

  11. با سلام و احترام
    خیلی ممنون از لطف و محبت شما.

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

 به کاربران و سایر اشخاص احترام بگذارید. پیام‌هایی که شامل محتوای توهین‌آمیز و کلمات نامناسب باشند، حذف می‌شوند.

 از ارسال لینک‌های سایت‌های دیگر و ارایه‌ی اطلاعات شخصی خودتان مثل شماره تماس، ایمیل و آی‌دی شبکه‌های اجتماعی پرهیز کنید.