آموزش راه اندازی و پروژه ی ds1307 با آردوینو

آموزش راه اندازی ds1307 با آردوینو

آموزش راه اندازی و پروژه ی ds1307 با آردوینو

ماژول ds1307 چیست؟

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

مقاومت های پول آپ اون هم معمولا 4.7k انتخاب میشه ( در شبیه سازی خیلی اهمیت نداره اگه نذارین) و طبق شکل زیر به پایه های SDA , SCLوصل شدن.پایه ی SQW برای ایجاد شکل موج مربعی استفاده میشه.

 مدار ds1307

توی این بخش مطلب مجبورم یکم وارد جزئیات بشم ، دیگه دست من نیس اگه یکم نسبت به بقیه مطالب آردوینو  پیچیده میشه 😀 البته اینو هم باید بگم که حتی به این چیزا هم کار نداشته باشین بازم میتونین ساعت و تاریخ رو با این آی سی راه بندازین!

این جدول آدرس خانه های حافظه ی آی سی ds1307 هستش که توی دیتاشیتش موجوده:

دیتاشیت ds1307

برای کار با حافظه میتونیم از تابع های ارتباط دو سیمه (i2c) به رجیستر های تراشه دسترسی پیدا کرد و مقدارهای زمان یا ساعت رو خوند و نوشت.

این آی سی یک پایه هم داره که میشه ازش خروجی موج مربعی گرفت ، مثلا اگر بخوایم یک شکل موج مربعی توی پایه ی SQW درست کنیم توی آدرس شماره ی 7 حافظه ، مقدار مناسب برای ایجاد شکل موج مربعی با فرکانس دلخواه رو مینویسیم، بیت های RS0  و RS1 فرکانس شکل موج خروجی رو طبق شکل زیر تعیین میکنن:

ایجاد موج مربعی با ds1307

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

مثال :

میخوایم با استفاده از i2c یک شکل موج مربعی با فرکاننس 32768 هرتز روی پایه ی SQW ایجاد کنیم:

 

تابع now

با استفاده از این تابع میتونیم زمان حال رو بدست بیاریم. و مقادیر سال و ماه و روز و… رو با تابع های زیر میشه بدست آورد.

 

تابع adjust

با استفاده ازین تابع زمان مدنظر رو روی آی سی تنظیم میکنیم.

مثلا برای تنظیم ساعتds1307 تابع زیر رو فراخوانی میکنیم.

توجه داشته باشین که برای استفاده از این 2تابع معرفی شده باید حتما کتابخونه ی

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

اگر این کتابخونه هارو تابحال اضافه نکردید کافیه اون رو دانلود کنید و جایگزین پوشه ی libraries در محل نصب نرم افزار آردوینو کنید.

دانلود کتابخانه های پرکاربرد آردوینو

و در آخر یک پروژه رو هم براتون قرار دادم.

پروژه ی ds1307 با آردوینو

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

پروژه ی نمایش ساعت با ds1307 و آردوینو

نحوه اتصال پایه های lcd و ds1307 هم در فایل زیر وجود داره .

دانلود پروژه + شبیه سازی :

 

دانلود کد + فایل پروتئوس

حمیدرضا مودت

یک مهندس الکترونیک ، علاقه مند به یاد دادن و یاد گرفتن پیرامون دانش برق و الکترونیک

شما ممکن است این را هم بپسندید

8 پاسخ‌ها

  1. hossein گفت:

    مهندس میشه یه سوییج گذاشت که اگر مقدار سوییچ 1 شد روز رو از اول یعنی1 یعنی ساعت ریست به شه ؟؟

    • حمید گفت:

      آره با دستور RTC.adjust میشه .
      این کتابخونه رو من ننوشتم ، اگه دنبال سمپل میگردین ، انگلیسی سرچ کنین نمونه زیاده ..
      احتمالا بزودی این مطلب هم ویرایش میشه و چند نمونه کد اضافه میکنم ، فقط تاریخ دقیقشو نمیدونم 😀

  2. hossein گفت:

    خیلی ممنونم ازتون

  3. hossein گفت:

    سلام چطور میشه به مقدار عددی روز و ساعت دسترسی داشت؟؟

    • حمید گفت:

      منظورتون رو متوجه نشدم ؟
      اگر منظورتون روزیه که در اون قرار دارین ، در کد و کتابخانه ی قرار داده شده با دستور now.day() میشه به روز دسترسی داشت.
      اگه منظورتون هم نسبت به 365 روز ساله ، یعنی چ روزی از سال هستیم ، باید ضربدر ماه های گذشته بشه …

      • Hossein گفت:

        منظورم این هست که میخوام یا دستور if بگم که از روز اول تا هجدهم اینکارو بکن، از روز هیجدهم به بعد هم اینکارو

        • حمید گفت:

          خب دستور now.day به شما روز رو میگه ، میتونین اون رو داخل یک متغیر بریزین ، و در شرط هاتون مقدار اون متغیر رو بررسی کنین …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *