آیا تا به حال به این موضوع فکر کردهاید که چه چیزی ساعت کامپیوتر یا تلفن همراه شما را همیشه تنظیم و دقیق نگهمیدارد؟ آیا قطعه خاصی وظیفه تنظیم دقیق ساعت را به عهده دارد؟
در پاسخ به این سوال باید بگوییم بله، قطعهای به نام ماژول RTC این وظیفه را به عهده دارد، این ماژول انواع و اقسام مختلفی دارد و یکی از آنها ماژول ساعت DS3231 است که در این بلاگ قصد داریم مفصل درباره راه اندازی ماژول ساعت DS3231 صحبت کنیم.
پس اگر میخواهید با نحوه راهاندازی این ماژول و قطعات آن آشنا شوید تا انتهای این بلاگ با ما باشید.
ماژول ساعت فوق دقیق DS3231
ماژول RTC انواع و اقسام مختلفی دارد که ماژول ساعت DS3231 یکی از پرکاربرترین آنهاست، ماژولی بسیار دقیق با توان مصرفی پایین است که برای تنظیم ساعت از آن استفاده میشود. این ماژول قادر است تا اطلاعات مربوط به روز، ساعت، دقیقه، ثانیه و حتی ماه و سال را نگهداری کند و بر اساس سال کبیسه بودن یا نبودن تنظیم میشود.
سخت افزار
ماژول ساعت DS3231بسیار قوی است و دارای یک رابط دو سیمه C12 است که به راحتی میتواند با هر میکروکنترلری ارتباط برقرار کند و در پروژههای دیگر برای اندازهگیری دقیق زمان از آن استفاده میشود. این ماژول برای ایجاد زمان از کریستال خارجی ۳۲٫۷۶۸ Khz استفاده میکند که امروزه به دلیل نامرغوب بودن این کریستالها فرکانس آنها همیشه کمی متفاوت است. این تغییر کوچک گاهی اوقات باعث اختلاف در اندازهگیری زمان واقعی میشود .
این ماژول دارای دو فرمت ساعت 12 ساعته و 24 ساعته است که بر اساس منطقه مورد نظر تنظیم خواهد شد.
برای تهیه و خرید انواع ماژول کلیک با بهترین قیمت کلیک کنید.
DS3231 RTC Chip
یک chip یا تراشه بسیار دقیقی در مرکز ماژول وجود دارد که یکی از مهمترین قطعات برای راه اندازی ماژول ساعت DS3231 است. این تراشه میتواند همه توابع زمانی را مدیریت کند و به وسیله رابط دو سیم c12 به راحتی به هر میکروکنترلری وصل میشود، chipتوسط شرکت maxin ساخته شده است.
یکی دیگر از مهمترین ویژگیهای این تراشه نگهداری ثانیه، دقیقه، ساعت، روز، ماه و سال بوده و دارای قالب 12 ساعته و 24 ساعته است. از ویژگیهای جالب این تراشه میتوان به پایه SQW آن اشاره کرد، این پایه خروجی مربعی شکلی دارد و فرکانسهای مختلفی را پشتیبانی میکند. از این پایه میتوان برای وقفه ناشی از آلارم در کاربردهای مبتنی بر زمان استفاده کرد.
TCXO
در بیشتر ماژولهای RTC یک کریستال 32 هرتز برای محاسبه زمان وجود دارد که دمای خارجی میتواند بر فرکانس و نوسان آن تاثیر بگذارد. این تغییر فرکانس شاید در ابتدا کم به نظر برسد اما مجموعهای از این خطاها دیگر کم و ناچیز نخواهد بود.
برای جلوگیری از چنین خطاهایی در راه اندازی ماژول ساعت DS3231از یک اسیلاتور کریستال 32 کیلوهرتز و TCXO استفاده میکنند، تا نسبت به تغییرات دمای بیرون در امان باشد.
TCXO داخل تراشه RTC قرار میگیرد و حجم آن را افزایش میدهد.
Onboard 24C32 EEPROM
ماژول ساعت DS3231دارای حافظه 32 بایتی(24C32 EEPROM) است که توسط شرکت Atmel ساخته شده و توانایی خواندن و نوشتن نامحدودی دارد. از این حافظه میتوان برای ذخیره کردن تنظیمات و هر اطلاعات دیگری استفاده کرد.
این حافظه برای تبادل اطلاعات از واسط c12 استفاده میکند و باس این حافظه همان باس راه اندازی ماژول ساعت DS3231است. برای تغییر آدرس واسط c12 در حافظه این ماژول باید3 جامپر لحیم شده A0,A1,A2 در پشت برد استفاده کنید، هر یک از پدهای پشت برد حافظه برای تغییر آدرس استفاده میشوند و با استفاده از لحیم پایه کوتاه میتوان آنها را ثابت کرد.
این سه بیت در انتهای آدرس c12 و در 7 بیت آخر قرار میگیرند، هر یک از این سه ورودی دو حالت میگیرد و به راحتی میتوانید برای 8 آدرس مختلف از آن استفاده کنید.
بکاپ باتری
ماژول ساعت DS3231 دارای یک ورودی باطری است و زمانی که تغذیه اصلی مدار قطع شود میتواند ساعت را دقیق نگهدارد. مداری در تغذیه داخلی وجود دارد که وضعیت vcc را دائما بررسی میکند و زمانی که تغذیه اصلی به هر دلیلی قطع شود به طور اتوماتیک تغذیه پشتیبان را وارد مدار میکند و مانع عقب ماندن ساعت میشود، به همین دلیل نیازی نیست نگران قطعی برق باشید.
در قسمت پایین برد یک نگهدارنده باطری وجود دارد که دارای باطری دکمهای لیتیم 22V – 3V میلیمتری بوده و برای باطریهای CR2032 بسیار مناسب است.
پایهها
هر ماژول ساعت DS3231 دارای 6 پایه است:
- پایه SCL که پایه کلاک سریال برای ارتباط c12 است.
- پایه VCC که به عنوان تغذیه ماژول شناخته میشود و دارای ولتاژ 3.3 ولت تا 5.5 ولت است.
- پایه GND که با عنوان پایه زمین مدار شناخته میشود.
- پایه SDA که با نام پایه سریال برای ارتباط C12 است.
- پایه SQW که با عنوان پایه موج مربعی شناخته میشود و قابلیت برنامهریزی دارد و دارای فرکانسهای 1، 4، 8 و 32 هرتز است.
- پایه 33K یک خروجی مرجع، دقیق و پایدار است.
راه اندازی ماژول DS3231 با آردوینو
برای راه اندازی ماژول ساعت DS3231 با آردوینو ابتدا باید قطعات مورد نیاز را بشناسید:
قطعههای مورد نیاز
- ماژول ساعت DS3231
- ماژول ساعت DS1307
- ماژول آردوینو UNO
- کابل USB نری نوع A به نری نوع B
- مینی برد بورد 400 سوراخ
- سیم جامپر نری به نری
شما میتوانید تمام قطعات ذکرشده را از فروشگاه جم ترونیک خریداری کنید.
اتصال پایهها
برای راه اندازی ماژول ساعت DS3231با آردوینو باید پایه VCC را به خروجیV5 آردوینو وصل کنید و پایه GND را به زمین متصل کنید. هر برد آردوینو پایههای I2C متفاوتی دارد و در زمان نصب و راه اندازی آن باید به این پایهها دقت کنید. چرا که یک اشتباه کوچک میتواند خسارت بسیاری به همراه داشته باشد.
روی بردهای آردوینو پایههای SDA و SCL ماژول ساعت DS3231درست روی پین هدر نزدیک پایه AREF قرار گرفته است. البته این پایهها مربوط به آردوینو R3 است و برای برد آردوینو Mega این پایهها کمی متفاوت است، در این آردوینو باید از پایههای دیجیتال SDA20 و SCL 21 استفاده میکنند.
کدنویسی
کدهای زیر نشان دهنده نحوه تنظیم و خواندن ساعت و تاریخ توسط این ماژول است:
توضیح کد
توابعی که در ادامه به معرفی آنها میپردازیم در بخشهای Setup و Loop برای ارتباط با ماژول استفاده میشوند:
begin : وظیفه اطمینان از اتصال RTC به عهده این تابع است.
LostPower: این تابع وظیفه خواندن رجیسترهای داخلی I2C ماژول را به عهده دارد و باید از این موضوع مطمئن شود که آیا تراشه، زمان را دنبال میکند یا خیر؟
Adjust: تنظیم ساعت و تاریخ به عهده تابع Adjust است، روشهای فراخوانی این تابع به شکل زیر است:
Now: این تابع توانایی آن را دارد تا تاریخ و زمان جاری را برمیگرداند.
Year: این تابع سال جاری را برمیگرداند.
Month: این تابع ماه جاری را برمیگرداند.
Day: این تابع روز جاری را برمیگرداند.
DayOfTheWeek: این تابع روز جاری در هفته را برمیگرداند و اطلاعات روزها را ذخیره میکند.
Hour: این تابع ساعت جاری را برمیگرداند.
Minute: این تابع دقیقههای جاری را برمیگرداند.
Second: این تابع ثانیههای جاری را برمیگرداند.
TimeSpan: از این تابع برای اضافه کردن زمان به زمان جاری یا کم کردن زمان از زمان جاری استفاده میشود.
استفاده از OLED برای نمایش زمان با ماژول ساعت DS3231
ماژول ساعت DS3231 بسیار پیشرفتهتر از DS1307 است، این ماژول علاوه بر امکانات پیشرفتهای که دارد دارای دقت بالاتری است. برای استفاده از این ماژول باید ابتدا با توابع آن آشنا شوید:
توابع مورد نیاز برای نمایش زمان
توابع مورد نیاز برای نمایش زمان در ماژول ساعت DS3231عبارتنداز:
- RTCDateTime: از این تابع برای دسترسی به مقادیر داخل ساعت استفاده میکنیم.
- clock.begin: این تابع فقط به وسیلهی تابع فوق ماژول ساعتds3231 فعال میشود.
- clock.setDateTime (__DATE__, __TIME__): با کمک این تابع ساعت و تاریخ ماژول را تنظیم میشود و برنامه را طوری تنظیم میکند که روی آردوینو به طور خودکار ساعت ماژول با ساعت کامپیوتر تنظیم خواهد شد و دیگر نیازی به تنظیم دستی نیست.
- clock.getDateTime: زمان و تاریخ را به کمک این تابع از ماژول دریافت میکنند.
- clock.readTemperature: مقدار دمای اندازهگیری شده توسط ماژول با این تابع نمایش داده میشود.
کدنویسی
جمعبندی
زمان یکی از مهمترین مواردی در دنیای دیجیتال و الکترونیک است. برای اجرای درست پروژههای الکترونیک زمان بسیار مهم است و باید به درستی تنظیم شود، معمولا تنظیم ساعت در کامپیوتر و گوشی به عهده ماژول است که با توجه به عملکرد و ویژگیهایشان، انواع مختلفی دارند. در این بلاگ به این موضوع پرداختیم که راه اندازی ماژول ساعت DS3231 چگونه است و برای انجام این کار به چه قطعاتی نیاز دارید. ما همواره سعی میکنیم کاملترین و بهترین آموزشها را برایتان فراهم کنید. پیشنهاد میکنیم برای مطالعه مقالههای بیشتر به مجله جم ترونیک سر بزنید. همچنین برای تهیه و خرید قطعات الکترونیکی کلیک کنید.