ساعت روی DS3231 و میکروکنترلر AVR. همگام سازی زمان ماژول DS3231 با اجزای کامپیوتر برای اتصال

در بسیاری از پروژه های آردوینو، نظارت و ثبت زمان وقوع رویدادهای خاص مورد نیاز است. ماژول ساعت واقعی مجهز به باتری های اضافی، به شما امکان می دهد تاریخ فعلی را بدون توجه به در دسترس بودن برق خود دستگاه ذخیره کنید. در این مقاله در مورد رایج ترین ماژول های RTC DS1307، DS1302، DS3231 که می توان با برد آردوینو استفاده کرد صحبت خواهیم کرد.

ماژول ساعت یک برد کوچک است که به عنوان یک قاعده شامل یکی از ریزمدارهای DS1307، DS1302، DS3231 است، علاوه بر این، روی برد عملاً می توانید مکانیزم نصب باتری را پیدا کنید. چنین تابلوهایی اغلب برای ردیابی زمان، تاریخ، روز هفته و سایر پارامترهای زمان‌سنجی استفاده می‌شوند. ماژول‌ها با برق مستقل کار می‌کنند - باتری‌ها، باتری‌ها، و حتی اگر برق آردوینو خاموش باشد به شمارش ادامه می‌دهند. رایج ترین مدل های ساعت DS1302، DS1307، DS3231 هستند. آنها بر اساس یک ماژول RTC (ساعت زمان واقعی) متصل به آردوینو هستند.

بر خلاف شمارشگرهای معمولی و ژنراتورهای ساعت که «تیک» را می‌خوانند، ساعت‌ها بر حسب واحدهایی محاسبه می‌شوند که برای افراد معمولی مناسب است - دقیقه، ساعت، روزهای هفته و موارد دیگر. آردوینو دارای تابع millis() ویژه ای است که می تواند بازه های زمانی مختلف را نیز بخواند. اما عیب اصلی این عملکرد این است که با روشن شدن تایمر به صفر می رسد. با کمک آن فقط می توانید زمان را بخوانید. تعیین تاریخ یا روز هفته غیرممکن است. برای حل این مشکل از ماژول های ساعت بیدرنگ استفاده می شود.

یک مدار الکترونیکی شامل یک میکرو مدار، یک منبع تغذیه، تشدید کننده کوارتزو مقاومت ها تشدید کننده کوارتز در فرکانس 32768 هرتز کار می کند که برای یک شمارنده باینری معمولی مناسب است. مدار DS3231 دارای کوارتز داخلی و تثبیت حرارتی است که امکان مقادیر بسیار دقیق را فراهم می کند.

مقایسه ماژول های محبوب RTC DS1302، DS1307، DS3231

در این جدول لیستی از محبوب ترین ماژول ها و ویژگی های اصلی آنها را ارائه کرده ایم.

نام فرکانس دقت پروتکل های پشتیبانی شده
DS1307 1 هرتز، 4.096 کیلوهرتز، 8.192 کیلوهرتز، 32.768 کیلوهرتز به کوارتز بستگی دارد - معمولاً مقدار آن به 2.5 ثانیه در روز می رسد، رسیدن به دقت بالاتر از 1 ثانیه در روز غیرممکن است. همچنین دقت به دما بستگی دارد. I2C
DS1302 32.768 کیلوهرتز 5 ثانیه در روز I2C، SPI
DS3231 دو خروجی - اولی 32.768 کیلوهرتز، دومی قابل برنامه ریزی از 1 هرتز تا 8.192 کیلوهرتز ± 2 ppm در دمای 0 تا 40 درجه سانتیگراد.

3.5 ± پی پی ام در دمای 40- تا 85 درجه سانتیگراد.

دقت اندازه گیری دما - ± 3C

I2C

ماژول DS1307

DS1307 ماژولی است که برای زمان بندی استفاده می شود. این بر اساس تراشه DS1307ZN مونتاژ شده است، قدرت از آن تامین می شود باتری لیتیومیبرای اجرا عمر باتریدر یک دوره زمانی طولانی باتری روی برد در سمت عقب نصب شده است. این ماژول دارای یک تراشه AT24C32 است - این یک حافظه EEPROM غیرفرار 32 کیلوبایتی است. هر دو ریز مدار توسط یک گذرگاه I2C متصل می شوند. DS1307 دارد مصرف برق کمو دارای ساعت و تقویم تا سال 2100 است.

ماژول دارای پارامترهای زیر است:

  • منبع تغذیه - 5 ولت؛
  • محدوده دمای عملیاتی از -40C تا 85C؛
  • 56 بایت حافظه؛
  • باتری لیتیومی LIR2032;
  • حالت های 12 و 24 ساعته را اجرا می کند.
  • پشتیبانی از رابط I2C

این ماژول در مواردی توجیه می شود که داده ها به ندرت، در فواصل زمانی یک هفته یا بیشتر خوانده شوند. این به شما امکان می دهد در مصرف برق صرفه جویی کنید، زیرا استفاده بدون وقفه حتی با باتری به ولتاژ بیشتری نیاز دارد. وجود حافظه به شما امکان ثبت نام را می دهد پارامترهای مختلف(مثلاً اندازه گیری دما) و اطلاعات دریافتی را از ماژول بخوانید.

تعامل با سایر دستگاه ها و تبادل اطلاعات با آنها با استفاده از رابط I2C از پین های SCL و SDA انجام می شود. مدار حاوی مقاومت هایی است که به شما امکان می دهد سطح سیگنال مورد نیاز را ارائه دهید. این برد همچنین دارای یک مکان مخصوص برای نصب سنسور دمای DS18B20 است. اولین گروه از مخاطبین شامل پین های زیر است:

  • DS – خروجی سنسور DS18B20؛
  • SCL - خط ساعت؛
  • SDA - خط داده؛
  • VCC - 5 ولت؛

گروه دوم مخاطبین شامل:

  • SQ - 1 مگاهرتز؛
  • BAT - ورودی برای باتری لیتیومی.

برای اتصال به برد آردوینو، به خود برد (در این مورد آردوینو Uno را در نظر می گیریم)، ​​یک ماژول ساعت بیدرنگ RTC DS1307، سیم و یک کابل USB نیاز دارید.

برای اتصال کنترلر به آردوینو، از 4 پین استفاده می شود - VCC، زمین، SCL، SDA.. VCC از ساعت به 5 ولت در آردوینو وصل می شود، زمین از ساعت به زمین از آردوینو، SDA - A4، SCL متصل می شود. - A5.

برای شروع کار با ماژول ساعت، باید کتابخانه های DS1307RTC، TimeLib و Wire را نصب کنید. همچنین می توانید از RTCLib برای کار استفاده کنید.

بررسی ماژول RTC

وقتی اولین کد را اجرا می کنید، برنامه در هر ثانیه یک بار داده ها را از ماژول می خواند. ابتدا، در صورتی که در حالی که برد آردوینو به کامپیوتر وصل نیست، باتری را از ماژول خارج کرده و آن را با دیگری جایگزین کنید، می توانید نحوه عملکرد برنامه را مشاهده کنید. باید چند ثانیه صبر کنید و باتری را خارج کنید، در نهایت ساعت دوباره راه اندازی می شود. سپس باید یک مثال از منوی Examples→RTClib→ds1307 انتخاب کنید. مهم است که سرعت انتقال را به درستی روی 57600 bps تنظیم کنید.

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

زمان 0:0:0 نشان خواهد داد. این به این دلیل است که ساعت قدرت خود را از دست می دهد و شمارش زمان را متوقف می کند. به همین دلیل، در حین کار کردن ماژول، باتری نباید خارج شود.

برای تنظیم زمان روی ماژول، باید خط را در طرح پیدا کنید

RTC.adjust(DateTime(__DATE__, __TIME__));

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

تنظیم به درستی انجام شده است و نیازی به پیکربندی مجدد ساعت بیدرنگ نیست.

زمان خواندن. پس از پیکربندی ماژول، درخواست های زمانی می توانند ارسال شوند. این کار با استفاده از تابع now() انجام می شود که یک شی DateTime را که حاوی اطلاعات زمان و تاریخ است برمی گرداند. تعدادی کتابخانه وجود دارد که برای خواندن زمان استفاده می شود. به عنوان مثال، RTC.year() و RTC.hour() - آنها به طور جداگانه اطلاعات مربوط به سال و ساعت را به دست می آورند. هنگام کار با آنها، ممکن است مشکلی ایجاد شود: به عنوان مثال، درخواست نمایش زمان در ساعت 1:19:59 انجام می شود. قبل از نشان دادن زمان 1:20:00، ساعت ساعت 1:19:00 را نشان می دهد، به این معنی که در اصل یک دقیقه از دست می رود. بنابراین، استفاده از این کتابخانه ها در مواردی که مطالعه به ندرت اتفاق می افتد - هر چند روز یک بار توصیه می شود. توابع دیگری برای فراخوانی زمان وجود دارد، اما اگر نیاز به کاهش یا اجتناب از خطا دارید، بهتر است از now() استفاده کنید و خواندن های لازم را از آن استخراج کنید.

پروژه نمونه با ماژول ساعت i2C و نمایشگر

این پروژه یک ساعت معمولی است زمان دقیق، و نقطه بین اعداد در فواصل یک ثانیه چشمک می زند. برای اجرای پروژه به یک برد آردوینو Uno، یک نشانگر دیجیتال، یک ساعت بیدرنگ (در این مورد ماژول ds1307 که در بالا توضیح داده شد)، یک سپر برای اتصال (در این مورد از Troyka Shield استفاده می شود) نیاز دارید. باتری برای ساعت و سیم

این پروژه از یک نشانگر چهار رقمی ساده روی تراشه TM1637 استفاده می کند. این دستگاه دارای رابط دو سیم است و 8 سطح روشنایی مانیتور را ارائه می دهد. فقط برای نمایش زمان در قالب ساعت: دقیقه استفاده می شود. استفاده از نشانگر آسان است و به راحتی قابل اتصال است. استفاده از آن برای پروژه هایی مفید است که در آن تأیید داده های دقیقه ای یا ساعتی مورد نیاز نیست. برای بدست آوردن بیشتر اطلاعات کاملنمایشگرهای LCD برای نشان دادن زمان و تاریخ استفاده می شوند.

ماژول ساعت به پین ​​های SCL/SDA که متعلق به گذرگاه I2C هستند متصل است. همچنین باید زمین و برق را وصل کنید. به همان روشی که در بالا توضیح داده شد به آردوینو متصل می شود: SDA – A4، SCL – A5، زمین از ماژول به زمین از آردوینو، VCC -5V.

نشانگر به سادگی متصل می شود - پین های CLK و DIO آن به هر پایه دیجیتال روی برد متصل می شوند.

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

#شامل #include "TM1637.h" #include "DS1307.h" //شما باید تمام کتابخانه های لازم برای کار با ساعت و نمایشگر را در آن قرار دهید. char compileTime = __TIME__; //زمان تالیف. #define DISPLAY_CLK_PIN 10 #define DISPLAY_DIO_PIN 11 //اعداد از خروجی های آردوینو که صفحه نمایش به آن متصل است. void setup() ( display.set(); display.init(); //صفحه را متصل و پیکربندی کنید. clock.begin(); //ساعت را روشن کنید. ساعت بایت = getInt(compileTime, 0)؛ دقیقه بایت = getInt( compileTime, 2) = getInt(compileTime, 4) //دریافت ساعت، دقیقه، ثانیه اطلاعات دریافت شده در حافظه داخلی، شروع زمان خواندن ) void loop() ( int8_t timeDisp; //نمایش در هر یک از چهار رقم. clock.getTime(); //پرس و جو برای دریافت زمان. timeDisp = clock.hour / 10؛ timeDisp = ساعت. ساعت % 10؛ timeDisp = ساعت .minute / 10; timeDisp = clock.minute % 10 //عملیات مختلف برای به دست آوردن ده ها، واحدهای ساعت، دقیقه و غیره display.display(timeDisp). (clock.second %) 2 POINT_ON: POINT_OFF)؛//روشن کردن و خاموش کردن کولون بعد از یک ثانیه + int(string) - "0"؛ //عملیات برای نوشتن صحیح زمان در یک عدد صحیح دو رقمی در غیر این صورت، فقط چند کاراکتر روی صفحه نمایش داده می شود.

پس از این، طرح باید بارگذاری شود و زمان بر روی مانیتور نشان داده می شود.

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

برای نوشتن و خواندن زمان به یا از حافظه غیر فرار، باید توابع EEPROMWriteInt و EEPROMReadInt را اضافه کنید. آنها برای بررسی اینکه آیا هش با هش ثبت شده در EEPROM مطابقت دارد یا نه، مورد نیاز است.

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

در نتیجه، کد باید یک کتابخانه جدید را مشخص کند (برای صفحه‌های کریستال مایع این LiquidCrystal است)، و خطوطی را به تابع ()loop اضافه کند تا تاریخ را به دست آورد.

الگوریتم عملیاتی به شرح زیر است:

  • اتصال تمام اجزا؛
  • بررسی کنید - زمان و تاریخ روی صفحه نمایشگر باید هر ثانیه تغییر کند. اگر صفحه نمایش می گوید زمان اشتباه، باید تابع RTC.write (tmElements_t tm) را به طرح اضافه کنید. مشکلات مربوط به زمان های نادرست به این دلیل است که ماژول ساعت هنگام خاموش شدن، تاریخ و زمان را به 00:00:00 01/01/2000 بازنشانی می کند.
  • تابع نوشتن به شما امکان می دهد تاریخ و زمان را از رایانه دریافت کنید و پس از آن پارامترهای صحیح روی صفحه نمایش داده می شوند.

نتیجه گیری

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

ویژگی های متمایز:

  • دقت ± 2 ppm در محدوده دمایی 0 تا +40 درجه سانتی گراد
  • دقت 3.5 ± ppm در محدوده دمایی -40 درجه سانتیگراد تا +85 درجه سانتیگراد
  • ورودی برای اتصال یک منبع تغذیه مستقل برای اطمینان از عملکرد مداوم
  • محدوده دمای عملیاتی تجاری: از 0 درجه سانتی گراد تا +70 درجه سانتی گراد صنعتی: -40 درجه سانتی گراد تا +85 درجه سانتی گراد
  • کم مصرف
  • ساعت واقعی شمارش ثانیه، دقیقه، ساعت، روزهای هفته، روزهای ماه، ماه و سال با تصحیح سال کبیسه تا 2100
  • دو زنگ هشدار روزانه
  • خروجی موج مربعی با فرکانس قابل برنامه ریزی
  • رابط سریع (400 کیلوهرتز) I 2 C
  • برق 3.3 ولت
  • سنسور دما دیجیتال با دقت اندازه گیری ±3 درجه سانتی گراد
  • ثبت نام حاوی اطلاعات مربوط به تنظیم مورد نیاز
  • ورودی/خروجی nonRST تنظیم مجدد

کاربرد:

  • سرورها
  • کنتور برق الکترونیکی
  • تجهیزات تلماتیک
  • سیستم های GPS

نمودار اتصال معمولی برای DS3231:

توضیحات کلی:

DS3231 یک ساعت بیدرنگ (RTC) با دقت بالا با رابط داخلی I 2 C، نوسانگر کریستالی جبران شده دما (TCXO) و تشدید کننده کوارتز است. این دستگاه دارای ورودی برای اتصال یک منبع تغذیه خودکار پشتیبان است که امکان اندازه گیری زمان و دما را حتی زمانی که ولتاژ منبع تغذیه اصلی خاموش است را می دهد. تشدید کننده کوارتز داخلی باعث افزایش طول عمر دستگاه و کاهش مقدار مورد نیاز می شود عناصر خارجی. DS3231 در نسخه های دمایی تجاری و صنعتی موجود است و در بسته بندی 300 میل 16 پین SO بسته بندی می شود.

RTC شمارش ثانیه ها، دقیقه ها، ساعت ها، روزهای هفته، روزهای ماه و سال را فراهم می کند. تاریخ پایان ماه به طور خودکار با در نظر گرفتن سال های کبیسه تعیین می شود. ساعت واقعی در قالب 24 یا 12 ساعت با نشان دادن نیمه فعلی روز (AM/PM) کار می کند. دستگاه دارای دو آلارم روزانه و خروجی موج مربعی با فرکانس قابل برنامه ریزی می باشد. تبادل داده با دستگاه از طریق یک رابط داخلی سازگار با سریال I 2 C انجام می شود.

ماژول DS3231 (RTC، ZS-042) یک برد کم هزینه با ساعت بی‌درنگ (RTC) بسیار دقیق است، با جبران دمایی نوسان‌گر کریستال و کریستال. ماژول شامل باتری لیتیومی، که عملکرد بدون وقفه را حتی در صورت قطع منبع تغذیه حفظ می کند. یک ژنراتور یکپارچه دقت دستگاه را بهبود می بخشد و تعداد قطعات را کاهش می دهد.

پارامترهای فنی

ولتاژ تغذیه: 3.3 ولت و 5 ولت
تراشه حافظه: AT24C32 (32 کیلوبایت)
دقت: ± 0.432 ثانیه در روز
فرکانس کوارتز: 32.768 کیلوهرتز
پروتکل پشتیبانی شده: I2C
ابعاد: 38mm x 22mm x 15mm

اطلاعات عمومی

اکثر ریز مدارها مانند DS1307 از یک نوسان ساز کوارتز خارجی با فرکانس 32 کیلوهرتز استفاده می کنند، اما یک اشکال قابل توجه دارند: هنگامی که دما تغییر می کند، فرکانس کوارتز تغییر می کند که منجر به خطا در زمان بندی می شود. این مشکل در تراشه DS3231 که شامل یک نوسانگر کریستالی و یک سنسور دما است که تغییرات دما را جبران می کند تا زمان دقیق باقی بماند (در صورت لزوم داده های دما را می توان خواند) برطرف شده است. تراشه DS3231 همچنین از اطلاعات ثانیه‌ها، دقیقه‌ها، ساعت‌ها، روز هفته، تاریخ، ماه و سال پشتیبانی می‌کند و همچنین بر تعداد روزهای یک ماه نظارت می‌کند و سال‌های کبیسه را تصحیح می‌کند. از ساعت ها در دو فرمت 24 و 12 پشتیبانی می کند و امکان برنامه ریزی دو آلارم نیز وجود دارد. ماژول بر روی یک باس I2C دو سیم کار می کند.


اکنون کمی در مورد خود ماژول بر روی تراشه DS3231N ساخته شده است. برای بالا کشیدن خطوط 32K، SQW، SCL و SDA، مونتاژ مقاومت RP1 (4.7 کیلو اهم) مورد نیاز است (به هر حال، اگر از چندین ماژول با گذرگاه I2C استفاده می شود، لازم است که مقاومت های کششی را روی ماژول های دیگر لحیم کنید) . مونتاژ دوم مقاومت ها برای سفت کردن خطوط A0، A1 و A2 لازم است تا آدرس تراشه حافظه AT24C32N را تغییر دهند. مقاومت R5 و دیود D1 در اصل برای شارژ مجدد باتری کار می کنند، زیرا یک باتری معمولی SR2032 سال ها کار می کند. یک تراشه حافظه AT24C32N نیز نصب شده است، این مانند یک جایزه است که ساعت RTC DS3231N کار کند. مقاومت R1 و Power LED سیگنال روشن شدن ماژول را نشان می دهد. همانطور که گفته شد، ماژول برای راحتی کار بر روی گذرگاه I2C، به دو کانکتور J1 و J2 هدایت شده است. هدف J1
32K: خروجی، فرکانس 32 کیلوهرتز
SQW: خروجی
SDA: خط داده (سریال Dфta)
VCC: منبع تغذیه ماژول "+".
GND: منبع تغذیه ماژول "-". هدف J2
SCL: ساعت سریال
SDA: خط داده سریال
VCC: منبع تغذیه ماژول "+".
GND: منبع تغذیه ماژول "-".


من کمی در مورد تراشه AT24C32N به شما می گویم، این یک تراشه با حافظه 32k (EEPROM) از سازنده Atmel است که در بسته بندی SOIC8 مونتاژ شده و بر روی یک اتوبوس دو سیمه I2C کار می کند. آدرس ریز مدار در صورت لزوم 0x57 است، می توان آن را به راحتی با استفاده از بلوزهای A0، A1 و A2 تغییر داد (این به شما امکان می دهد تعداد ریز مدارهای متصل AT24C32/64 را افزایش دهید). از آنجایی که تراشه AT24C32N دارای سه ورودی آدرس (A0، A1 و A2) است که می توانند در دو حالت، یا log "1" یا log "0" باشند، هشت آدرس برای تراشه در دسترس است. از 0x50 تا 0x57.

اتصال DS3231 به آردوینو

قطعات مورد نیاز:
آردوینو UNO R3 x 1 عدد.
ساعت واقعی در DS3231، RTC، SPI، AT24C32 x 1 pc.
سیم DuPont، 2.54 میلی متر، 20 سانتی متر، F-M (مونث - نر) x 1 عدد.
کابل USB 2.0 A-B x 1 عدد.

اتصال:
در در این مثالمن فقط از ماژول DS3231 و Arduino UNO R3 استفاده خواهم کرد، تمام داده ها به "Port Monitoring" منتقل می شوند. مدار پیچیده نیست، فقط چهار سیم مورد نیاز است، ابتدا باس I2C، SCL را در A4 (Arduino UNO) و SDA را در A5 (Arduino UNO) وصل می کنیم، تنها چیزی که باقی می ماند این است که منبع تغذیه GND را به GND و VCC را به GND وصل کنید. 5 ولت (از 3.3 ولت می توان نوشت)، مدار مونتاژ شده، اکنون باید قسمت نرم افزار را آماده کنیم.

هیچ کتابخانه ای وجود ندارد که با DS3231 در Arduino IDE کار کند، شما باید “DS3231” را دانلود کرده و به محیط توسعه آردوینو اضافه کنید.

تنظیم زمان DS3231
وقتی برای اولین بار آن را روشن می کنید، باید زمان را برنامه ریزی کنید، مثال را از کتابخانه DS3231 "File" -> "Examples" -> "DS3231" -> "Arduino" -> "DS3231_Serial_Easy" باز کنید، یا کپی کنید. کد از زیر

/* تست در تاریخ آزمایش 08/31/2018 روی Arduino IDE 1.8.0 انجام شد. */ #شامل // کتابخانه Wire DS3231 rtc (SDA, SCL) را وصل کنید. // راه اندازی DS3231 void setup() ( Serial.begin(115200); // راه اندازی یک اتصال سریال rtc.begin(); // Initialize rtc // تنظیم زمان rtc.setDOW(FRIDAY)؛ // تنظیم روز -of-week rtc(16, 29, 0); , 2018) void loop() ( Serial. print(rtc.getDOWStr()); // Send the day-week Serial.print(" "); Serial.print(rtc.getDateStr()); // ارسال تاریخ Serial.print(" -- ");

آزمایش بر روی Arduino IDE 1.8.0 انجام شد

تاریخ آزمون: 1397/08/31

#شامل // شامل کتابخانه Wire

DS3231 rtc (SDA، SCL)؛ // DS3231 را راه اندازی کنید

تنظیم خالی ()

سریال. start(115200); // یک اتصال سریال ایجاد کنید

rtc start(); // rtc را راه اندازی کنید

// زمان را تنظیم کنید

rtc setDOW (جمعه)؛ // روز از هفته را تنظیم کنید

rtc setTime(16, 29, 0); // زمان را روی 16:29:00 تنظیم کنید (قالب 24 ساعته)

حلقه خالی()

سریال. چاپ (rtc. getDOWStr ()); // ارسال روز هفته

سریال. چاپ ("");

سریال. چاپ (rtc. getDateStr ()); // تاریخ را ارسال کنید

سریال. چاپ ("-");

سریال. println(rtc. getTimeStr()); // زمان ارسال

تاخیر (1000); // یک ثانیه تاخیر

طرح را در کنترلر آردوینو آپلود کنید و "Port Monitoring" را باز کنید.

". بیایید با ماژول ساعت بیدرنگ DS3231 آشنا شویم. این مقاله حاوی دستورالعمل های ویدئویی، لیست برنامه ها، هدف و روش های اتصال ماژول ها از خانواده DS به آردوینو است.

ماژول ساعت واقعی DS3231

ماژول ساعت واقعی DS3231 چیست؟

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

ماژول DS3231در اصل یک ساعت معمولی است. بردهای آردوینو قبلاً دارای سنسور زمان داخلی هستند میلیسبا این حال، فقط زمانی کار می کند که برق به برد اعمال شود. اگر آردوینو را خاموش و سپس روشن کنید، زمان Millis به صفر می‌رسد. و DS3231 دارای یک باتری روی برد است که حتی زمانی که برد آردوینو قطع می‌شود، ماژول را «تغذیه» می‌کند و به آن امکان اندازه‌گیری زمان را می‌دهد.

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

مشخصات DS3231:

  • ماژول ساعت، دقیقه، ثانیه، تاریخ، ماه، سال را محاسبه می کند (سال های کبیسه تا 2100 در نظر گرفته می شود).
  • برای اتصال به دستگاه های مختلف، ساعت از طریق رابط I2C متصل می شود.

32 هزار- خروجی در نظر گرفته شده برای تامین منبع تغذیه خارجی> 12 ولت

S.Q.W.- خروجی سیگنال موج مربعی قابل برنامه ریزی

SCL– از طریق این پین، داده ها با ساعت از طریق رابط I2C رد و بدل می شوند.

S.D.A.- داده های ساعت از طریق این پین منتقل می شود.

VCC- منبع تغذیه برای ساعت واقعی، 5 ولت مورد نیاز. اگر ولتاژی به این پین داده نشود، ساعت به حالت خواب می رود.

GND- زمین

نمودار اتصال برای ساعت بیدرنگ DS3231 و یک برنامه ساده

پین های SDA و SCL در بردهای مختلف آردوینو:

S.D.A. SCL
سازمان ملل متحد A4 A5
مینی A4 A5
نانو A4 A5
Mega2560 20 21
لئوناردو 2 3

بیایید ماژول ساعت بلادرنگ را به Arduino UNO متصل کنیم. SDA - پین A4، SCL - پین A5.

برنامه زیر برای کارکرد مدل مناسب است (به سادگی می توانید برنامه را در Arduino IDE کپی کنید):

#شامل

void setup() (
تاخیر(300);
Serial.begin(9600);
time.begin();
}
حلقه خالی()



}
}

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

اول از همه، در sktech، کتابخانه را متصل کنید iarduino_RTC.h.

در آنجا نام دقیق ماژول خود را برای کار صحیح با آن مشخص کنید.

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

در طرح بعدی یک تابع اضافه می کنیم تنظیم زمان، که به شما امکان می دهد زمان شمارش معکوس اولیه را تنظیم کنید.

#شامل
زمان iarduino_RTC (RTC_DS3231)؛
void setup() (
تاخیر(300);
Serial.begin(9600);
time.begin();
time.settime(0,0,18,24,04,17,1); // 0 ثانیه، 0 دقیقه، 18 ساعت، 24 آوریل 2017، دوشنبه
}
حلقه خالی()
if(millis()%1000==0)( // اگر 1 ثانیه گذشته باشد
Serial.println(time.gettime("d-m-Y، H:i:s، D")); // نمایش زمان
تاخیر (1); // 1 میلی ثانیه مکث کنید تا زمان چندین بار در 1 میلی ثانیه نمایش داده نشود
}
}

در مثال، زمان از 0 ثانیه، 0 دقیقه، 18 ساعت، 24 آوریل 2017، دوشنبه شروع به شمارش می کند.

پست های درس:

  1. درس اول: .
  2. درس دوم: .
  3. درس سوم: .
  4. درس چهارم: .
  5. درس پنجم: .
  6. درس ششم: .
  7. درس هفتم: .
  8. درس هشتم: .
  9. درس نهم:

بسیاری از دستگاه ها نیاز به ثبت مداوم داده های زمانی دارند (تاریخ، زمان این عملکرد توسط ویژه انجام می شود). مدارهای الکترونیکیکه به آن ساعت واقعی می گویند. در حال حاضر، یک ساعت بی‌درنگ به شکل یک ریزمدار مجزا اجرا می‌شود که باید یک تشدیدگر کوارتز و یک منبع انرژی مستقل به آن اضافه کنید. در برخی از ریزمدارها، یک تشدید کننده کوارتز در داخل ساخته شده است. یکی از این ساعت ها روی یک تراشه DS3231SN من برای خودم خریدمپروژه ها . در مثال من یک ساعت بیدرنگ را به یک آنالوگ چینی متصل خواهم کردآردوینو UNO.

آنها یک ماژول کامل ZS-042 هستند که می توانند به دستگاه های مختلف و نه تنها به پلت فرم آردوینو متصل شوند.


ماژول بر روی یک میکرو مدار ساخته شده است DS3231SN که در اصل یک ساعت زمان واقعی است. بر خلاف مدل قدیمیبه عنوان مثال در تراشه DS1307، این ساعت ها دارای یک تشدید کننده کوارتز داخلی هستند که به همین دلیل ساعت دارای زمان دقیق است.

شما می توانید یک ساعت را در آردوینو بدون DS3231SN پیاده سازی کنید، اما اگر برق قطع شود، مقادیر تایمر بازنشانی می شوند.همین ساعت ها دارای برق پشتیبان هستند، بنابراین اگر برق قطع شود، به کار خود ادامه می دهند.

ساعت می تواند ساعت، دقیقه، ثانیه، تاریخ، ماه، سال را بشمارد (سال های کبیسه تا سال 2100 در نظر گرفته می شود). آنها در حالت 12 یا 24 ساعته کار می کنند، دارای دو ساعت زنگ دار هستند و همچنین دارای دماسنج داخلی با دامنه 40- تا 85+ درجه سانتیگراد هستند. برای اتصال به دستگاه های مختلف، ساعت از طریق متصل می شود.رابط I2C.


محل و هدف پین ها در ماژول ZS-042:

S.Q.W.- خروجی سیگنال موج مربعی قابل برنامه ریزی

SCLاز طریق این پین، داده ها با ساعت از طریق رابط I2C رد و بدل می شوند.

S.D.A.داده های ساعت از طریق این پین منتقل می شود.

VCCمنبع تغذیه برای ساعت واقعی، 5 ولت مورد نیاز. اگر ولتاژی به این پین داده نشود، ساعت به حالت خواب می رود.

GND- زمین

برای اتصال بهآردوینو UNO، پایه SDA ساعت را به پایه A4 و پایه SCL را به A5 وصل می کنیم. پین های GND(-) و VCC(+5v) برای منبع تغذیه استفاده می شوند.

پین های SDA و SCL در بردهای مختلف آردوینو:

S.D.A. SCL
سازمان ملل متحد A4 A5
مینی A4 A5
نانو A4 A5
Mega2560 20 21
لئوناردو 2 3

بیایید یک باتری CR2032 را در ساعت نصب کنیم.

در اتصال USBکابل به آردوینو، LED روی ساعت باید روشن شود. قدرت"(LED قرمز).

برای برنامه ریزی ساعت از طریق Arduino IDE، باید کتابخانه ها را نصب کنید.

دانلود کتابخانه زمان و DS1307RTC.

آخرین کتابخانه برای یک ساعت بر روی تراشه DS1307 نوشته شده است، اما پروتکل های تعامل آن با DS3231 سازگار است، بنابراین کتابخانه متناسب با ساعت ما خواهد بود.

کتابخانه ها باید دانلود شوند، بسته بندی شوند و در پوشه قرار گیرند.کتابخانه ها" هنگام راه اندازی Arduino IDE، آنها با مثال باید در " نمونه ها».

تاریخ و زمان را تنظیم کنید.

برای این کار بیایید کپی کنیم این کددر آردوینو IDE.

برای تنظیمات صحیح باید داده ها را در خط تغییر دهید

setTime(13,35,0,22,12,2016);



در پرانتز، که با کاما از هم جدا شده اند، موارد صحیح را تنظیم کنید: ساعت، دقیقه، ثانیه، تاریخ، ماه، سال. در مثال من، روی 13 ساعت و 35 دقیقه و 0 ثانیه، 22 دسامبر 2016 تنظیم شده است. طرح را در آردوینو آپلود کنید.

اکنون برای خواندن خوانش های ساعت می توانید از مثال استفاده کنید: فایل» - « نمونه ها» - « DS1307RTC» - « ReadTest" وبرای آن را در آردوینو آپلود کنید.

پنجره ای که باز می شود تاریخ و زمان فعلی را نمایش می دهد. اگر برق ماژول ساعت را از آردوینو خاموش کنید، آردوینو قادر به ردیابی مقادیر و پس از مدتی پیام " نخواهد بود. ... خطای خواندن!"(با رنگ قرمز مشخص شده است). پس از برقراری مجدد برق، تاریخ و زمان به شمارش معکوس ادامه خواهند داد. تاریخ و زمان بازنشانی نشد زیرا ساعت از باتری CR2032 تغذیه می کرد.