ARDUINOAVRSTM32بسکامکدویژن

راه اندازی ماژول ساعت ds3231 با STM32 -آردوینو-کدویژن-بسکام

پروژه ساعت بسیار دقیق با ماژول DS3231 + قابلیت تنظیم + تقویم شمسی

4.9/5 - (232 امتیاز)

RTC داخلی میکروکنترلرها

همانطور که می دانیم بیشتر میکروکنترلرهایی که برای پروژه های خود استفاده می کنیم ، دارای پریفرال یا بخش داخلی به نام (RTC(real time clock جهت ایجاد زمان واقعی هستند .

برای ایجاد زمان یک ثانیه واقعی نیاز به فرکانس 32.768KHz می باشد ، در میکروکنترلرهای که دارای RTC داخلی هستند این فرکانس از طریق یک نوسانساز RC داخلی (فقط در برخی از میکروکنترلرها وجود دارد) و یا از طریق کریستال های خارجی با نام کریستال ساعت تامین می شود . برای استفاده از کریستال ساعت خارجی ، دو پایه از میکروکنترلر به همین منظور اختصاص داده شده است .

شما نیز شاید تا کنون از کریستال های ساعت خارجی برای راه اندازی بخش RTC میکروکنترلر ها استفاده کرده باشید . تصویر زیر یک نمونه کریستال با فرکانس ۳۲٫۷۶۸ کیلو هرتز می باشد .

کریستال ساعت 32.768 کیلوهرتز
کریستال ساعت 32.768 کیلوهرتز

چرا ساعت RTC داخلی میکروکنترلر دقیق نیست؟

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

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

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

دلیل دیگر می تواند به خاطر ضربه و یا لرزش کریستال ایجاد شود ، اگر دستگاه شما سیار است سعی کنید کریستال ساعت را بر روی بورد کاملا به حالت خوابیده و فیکس قرار دهید تا لرزش و ضربه به بورد ، کمترین تاثیر را بر روی فرکانس کریستال و ساعت ایجاد کند .

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

 

معرفی آی سی ساعت RTC بسیار دقیق

ds3231 یک آی سی ساعت  (RTC(real time clock بسیار دقیق است و از یک رابط I2C دو سیمه برخوردار است که به راحتی با هر میکروکنترلر دلخواه شما ارتباط برقرار می کند . اکثر شما شاید با آی سی ساعت DS1307 آشنایی داشته باشید و حتی در کنار پروژه هایی که نیاز به اندازه گیری زمان دقیق و واقعی است از  آی سی DS1307 استفاده کرده باشید .

آی سی DS1307 برای ایجاد زمان یک ثانیه از کریستال خارجی ۳۲٫۷۶۸ Khz استفاده می کند . به دلیل نامرغوب بودن این کریستال ها همیشه فرکانس آن ها برابر ۳۲٫۷۶۸ کیلوهرتز نخواهد بود و چند هرتز با مقدار ایده آل تفاوت دارد . همین اختلاف باعث می شود تا مقدار ساعت قرائت شده از  آی سی DS1307 در مدت زمان طولانی با مقدار ساعت واقعی اختلاف داشته باشد . حتی تغییر دمای محیط نیز باعث تغییر روی فرکانس این کریستال می شود ، و باعث اختلاف در اندازه گیری زمان واقعی می شود .

برای رفع نواقص  آی سی ساعت DS1307 ، نسل جدید این آی سی با نام DS3231 ارائه شد ، که برای جبران سازی تغییر فرکانس کریستال به دلیل تغییر دما از روشی با نام TCXO : Temperature compenstated crystal osillator استفاده شده است .

با اندازه گیری دما و مدارات جبران ساز آنالوگ ، فرکانس خروجی نوسان ساز نسبت به تغییرات دما همواره ثابت و برابر با مقدار ۳۲٫۷۶۸ کیلو هرتز می باشد . به همین منظور کریستال به همراه سنسور دما به صورت داخلی درون آی سی ds3231 استفاده شده و دیگر نیاز به اتصال کریستال خارجی نمی باشد .

پسوند N در تراشه DS3231 می تواند در رنج دمایی بیشتری کار کند .

DS3231S……………………………..0°C to +70°C
DS3231SN………………………. -40°C to +85°C

معرفی ماژول ds3231

اگر برای تهیه  آی سی ساعت ds3231 به بازار مراجعه نمائید ، با ماژول هایی با نام ds3231 مواجه خواهید شد .  ماژول ds3231 ،بورد راه اندازی است که تشکیل شده از یک آی سی ساعت ds3231 به همراه یک باطری بک آپ ۳ ولتی و یک آی سی حافظه EEPROM با ظرفیت ۳۲ کیلو بایت ، با نام AT24C32 می باشد .

آی سی ds3231 اطلاعات ثانیه ، دقیقه ، ساعت ، روز ، تاریخ ، ماه و سال را محاسبه و حفظ می کند.

آی سی DS3231 مجهز به سنسور دمای داخلی ۱۰ بیتی با رزولوشن ۰٫۲۵ درجه سانتیگراد و دو آلارم با قابلیت تنظیم بر اساس سال ، ماه ، روز ، ساعت ، دقیقه و ثانیه می باشد .

تاریخ پایان ماه به طور خودکار برای ماههایی با کمتر از 31 روز تنظیم می شود ، از جمله اصلاحات برای سال کبیسه (تا 2100 معتبر).

فرمت ساعت تراشه ds3231 در دو قالب 24 ساعته یا 12 ساعته با نشانگر AM / PM می تواند کار می کند.

ماژول DS3231
ماژول DS3231

 

معرفی پایه های ماژول ds3231

ماژول ds3231 دارای 6 پایه به شرح زیر می باشد :

ds3231 pinout
ds3231 pinout

32K :  این پایه توسط بیت EN32KHZ در رجیستر Control/Status(0Fh) تعیین وضعیت می شود . اگر بیت  1=EN32KHZ باشد سیگنال موج مربعی با فرکانس 32.768 کیلو هرتز روی این پایه تولید می شود و اگر بیت 0=EN32KHZ باشد این پایه به وضعیت High-impedance در می آید .

SQW : این پایه دو وضعیت دارد . یک وضعیت برای خروجی موج مربعی و یک وضعیت برای وقفه آلارم ها استفاده می شود . توسط بیت INTCN در رجیستر Control(0Eh) تعیین وضعیت می شود . اگر بیت INTCN=0 باشد پایه SQW به عنوان خروجی موج مربعی عمل می کند و اگر بیت INTCN=1 باشد به عنوان اینتراپت آلارم ها عمل می کند . که بصورت ACTIVE LOW می باشد یعنی حالت فعال شدن این پایه با سطح صفر است . خروجی این پایه OPEN-DRAIN است و باید توسط یک مقاومت 10 کیلو اهم ، پول آپ شود .

SCL  : پایه کلاک برای ارتباط با میکروکنترلر با پروتکل I2C

SDA : پایه دیتا برای ارتباط با میکروکنترلر با پروتکل I2C

VCC :  پایه تغذیه ماژول است ، ولتاژ مناسب تغذیه ماژول 3.3 ولت می باشد .

GND : پایه گراند ماژول است و باید به زمین مدار متصل شود.

راه اندازی ماژول ds3231 با آردوینو

در سطح اینترنت کتابخانه های زیادی برای راه اندازی ماژول ds3231 با آردوینو وجود دارد . اکثر این کتابخانه ها کامل و بهینه نیستند و برخی از امکانات مثل توابع تبدیل تاریخ میلادی به شمسی و همچنین قابلیت تنظیم ساعت و تاریخ توسط کاربر را ندارند .

به همین منظور کتابخانه ای کامل و بهینه توسط سایت میکرونیک تهیه شده که کار کردن با توابع آن بسیار ساده و روان می باشد . این کتابخانه دارای توابع تبدیل تاریخ میلادی به شمسی و تبدیل تاریخ شمسی به میلادی می باشد . کاربر بسته به نیاز خود می تواند تنها با استفاده از یک دستور تاریخ پیشفرض ماژول که تاریخ میلادی هست را به تاریخ شمسی تبدیل کند و بر روی نمایشگر lcd نمایش دهد .

این ماژول دارای دو آلارم داخلی می باشد و با تنظیم کردن هر آلارم بر اساس تاریخ و ساعت مورد دلخواه ، زمانی که با ساعت جاری یکسان شد ، توسط پرچم وقفه در رجیسترهای داخلی آی سی ds3231 و یا ایجاد وقفه بر روی پایه sqw به ما آلارم می دهد . مثال  استفاده از آلارم ها به همراه نحوه کار با توابع آلارم ها آورده شده است .

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

راه اندازی ماژول ds3231 با آردوینو
راه اندازی ماژول ds3231 با آردوینو

 

راه اندازی ماژول ds3231
راه اندازی ماژول ds3231

قابلیتهای کتابخانه ماژول ds3231 برای بسکام

توابع خواندن و تنظیم کردن ساعت و تاریخ
تابع تبدیل تاریخ میلادی به شمسی
توابع خواندن و نوشتن در حافظه EEPROM  به صورت بایت و رشته
تابع خواندن سنسور دمای داخلی ds3231
توابع تنظیم کردن آلارم ها
به همراه مثال و نمونه کد برای هر قسمت
تشریح کامل رجیسترهای ماژول به زبان فارسی pdf
تشریح کامل استفاده از توابع کتابخانه

قابلیتهای کتابخانه ماژول ds3231 برای آردوینو

توابع خواندن و تنظیم کردن ساعت و تاریخ
توابع تبدیل تاریخ میلادی به شمسی و بالعکس
تابع خواندن سنسور دمای داخلی ds3231
توابع کار با آلارم ها
قابلیت نمایش روز هفته به انگلیسی و فارسی
نمایش ساعت و تقویم شمسی بر روی lcd کاراکتری 2*16
قابلیت تنظیم ساعت و تاریخ با دو عدد سوئیچ
تشریح کامل رجیسترهای ماژول به زبان فارسی pdf
تشریح کامل استفاده از توابع کتابخانه

قابلیتهای کتابخانه ماژول ds3231 برای کدویژن

توابع خواندن و تنظیم کردن ساعت و تاریخ
توابع تبدیل تاریخ میلادی به شمسی و بالعکس
تابع خواندن سنسور دمای داخلی ds3231
توابع خواندن و ست کردن آلارم ها
قابلیت نمایش روز هفته به انگلیسی و فارسی
نمایش ساعت و تقویم شمسی بر روی lcd کاراکتری 2*16
قابلیت تنظیم ساعت و تاریخ با دو عدد سوئیچ
تشریح کامل رجیسترهای ماژول به زبان فارسی pdf
تشریح کامل استفاده از توابع کتابخانه

قابلیتهای کتابخانه ماژول ds3231 برای  stm32

توابع خواندن و تنظیم کردن ساعت و تاریخ
توابع تبدیل تاریخ میلادی به شمسی و بالعکس
تابع خواندن سنسور دمای داخلی ds3231
توابع خواندن و ست کردن آلارم ها
قابلیت نمایش روز هفته به انگلیسی و فارسی
نمایش ساعت و تقویم شمسی بر روی lcd کاراکتری 2*16
قابلیت تنظیم ساعت و تاریخ با دو عدد سوئیچ
تشریح کامل رجیسترهای ماژول به زبان فارسی pdf
تشریح کامل استفاده از توابع کتابخانه
سازگار با نرم افزار cubemx و توابع HAL می باشد .

 

فیلم راه اندازی ماژول ds3231 و تنظیم بخشهای ساعت و تاریخ با دو عدد سوییچ ، توسط میکروکنترلر stm32 . کتابخانه و سورس کدها برای کدویژن و آردوینو نیز همین عملکرد را دارند .

نویسنده : حسین غیاثوند
خرید و دانلود در لحظه :

نوشته های مشابه

مشترک شدن
اطلاع رسانی کن
guest
28 دیدگاه
قدیمی ترین
جدیدترین محبوب ترین
بازخورد داخلی
مشاهده همه نظرات