صفحه 1 از 4 123 ... آخرینآخرین
نمایش نتایج: از 1 به 10 از 36
Like Tree14 لایک

موضوع: ماژول ساعت DS1307 RTC + باتری (real-time clock )

  1. #1
    max
    max آنلاین نیست.
    Member
    تاریخ عضویت
    Jul 2013
    محل سکونت
    iran-shiraz
    نوشته ها
    70

    ماژول ساعت DS1307 RTC + باتری (real-time clock )

    كاربردDS1307 محصول dallas محاسبه و نگهداري زمان واقعي real time clock ميباشد. اين ماژول ميتواند ساعت ، دقيقه ، ثانيه ، روز ، ماه ، سال و ايام هفته را نگهداري و پردازش كند. باطري ليتيومي اين ماژول امكان تغذيه و نگهداري زمان ds1307 را به مدت چندين سال فراهم ميكند. اين ماژول از طريق ارتباط 2 سيمه I2C به آردوينو متصل ميشود. بر روي اين ماژول علاوه بر RTC ، يك EEPROM سريال به شماره 24C32 با حافظه 32 كيلوبيت تعبيه شده كه از طريق رابط I2C مشترك ميتوان به آن دسترسي داشت. همچنين امكان نصب سنسور دماي ديجيتال DS18B20 نيز بر روي ماژول وجود دارد. در صورت نصب سنسور دما ، پين DS ، اين سنسور را به آردوينو متصل ميكند.
    back-1.jpg
    مشخصات:
    رابط 2 سيمه I2C
    نگهداري ساعت ، دقيقه ، ثانيه
    نگهداري روز ، ماه ، سال
    تصحيح تقويم بر اساس سالهاي كبيسه
    محاسبه تقويم تا سال 2100 ميلادي
    محاسبه خودكار ماههاي كمتر از 31 روز
    56 بايت حافظه غير فرار در دسترس
    جريان مصرفي باطري backup كمتر از 500nA
    امكان دسترسي به EEPROM سريال .
    امكان نصب سنسور دما.
    rtc-ds1307_sch.jpg
    كافي است تنها براي يك بار ساعت و تاريخ را بر روي ماژول SET كنيد. اين اطلاعات براي چندين سال و تا زماني كه باطري backup توان لازم جهت تامين نيروي مورد نياز ds1307 را داشته باشد ، در دسترس شما قرار دارد.
    کد:
     /* 
     # Example code for DS1307 RTC MODULE
     # Company    : AftabRayaneh
     # Website    : http://shop.aftabrayaneh.com
     # Editor     : mohammad omidvar -max
     # Date       : 14.10.2013
     # Version    : 1.0
    */
    #include <DS1307RTC.h>
    #include <Time.h>
    #include <Wire.h>
    
    const char *monthName[12] = {
      "Jan", "Feb", "Mar", "Apr", "May", "Jun",
      "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    };
    
    tmElements_t tm;
    
    void setup() {
      bool parse=false;
      bool config=false;
    
      // get the date and time the compiler was run
      if (getDate(__DATE__) && getTime(__TIME__)) {
        parse = true;
        // and configure the RTC with this info
        if (RTC.write(tm)) {
          config = true;
        }
      }
    
      Serial.begin(9600);
      while (!Serial) ; // wait for Arduino Serial Monitor
      delay(200);
      if (parse && config) {
        Serial.print("DS1307 configured Time=");
        Serial.print(__TIME__);
        Serial.print(", Date=");
        Serial.println(__DATE__);
      } else if (parse) {
        Serial.println("DS1307 Communication Error :-{");
        Serial.println("Please check your circuitry");
      } else {
        Serial.print("Could not parse info from the compiler, Time=\"");
        Serial.print(__TIME__);
        Serial.print("\", Date=\"");
        Serial.print(__DATE__);
        Serial.println("\"");
      }
    }
    
    void loop() {
    }
    
    bool getTime(const char *str)
    {
      int Hour, Min, Sec;
    
      if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
      tm.Hour = Hour;
      tm.Minute = Min;
      tm.Second = Sec;
      return true;
    }
    
    bool getDate(const char *str)
    {
      char Month[12];
      int Day, Year;
      uint8_t monthIndex;
    
      if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false;
      for (monthIndex = 0; monthIndex < 12; monthIndex++) {
        if (strcmp(Month, monthName[monthIndex]) == 0) break;
      }
      if (monthIndex >= 12) return false;
      tm.Day = Day;
      tm.Month = monthIndex + 1;
      tm.Year = CalendarYrToTm(Year);
      return true;
    }

    براي دريافت اطلاعات ساعت و تاريخ از كد زير استفاده نماييد.
    کد:
     /*
     # 
     # Example code for DS1307 RTC MODULE
     # Company    : AftabRayaneh
     # Website    : http://shop.aftabrayaneh.com
     # Editor     : mohammad omidvar -max
     # Date       : 14.10.2013
     # Version    : 1.0
    */
    #include <DS1307RTC.h>
    #include <Time.h>
    #include <Wire.h>
    
    void setup() {
      Serial.begin(9600);
      while (!Serial) ; // wait for serial
      delay(200);
      Serial.println("DS1307RTC Read Test");
      Serial.println("-------------------");
    }
    
    void loop() {
      tmElements_t tm;
    
      if (RTC.read(tm)) {
        Serial.print("Ok, Time = ");
        print2digits(tm.Hour);
        Serial.write(':');
        print2digits(tm.Minute);
        Serial.write(':');
        print2digits(tm.Second);
        Serial.print(", Date (D/M/Y) = ");
        Serial.print(tm.Day);
        Serial.write('/');
        Serial.print(tm.Month);
        Serial.write('/');
        Serial.print(tmYearToCalendar(tm.Year));
        Serial.println();
      } else {
        if (RTC.chipPresent()) {
          Serial.println("The DS1307 is stopped.  Please run the SetTime");
          Serial.println("example to initialize the time and begin running.");
          Serial.println();
        } else {
          Serial.println("DS1307 read error!  Please check the circuitry.");
          Serial.println();
        }
        delay(9000);
      }
      delay(1000);
    }
    
    void print2digits(int number) {
      if (number >= 0 && number < 10) {
        Serial.write('0');
      }
      Serial.print(number);
    }

    جهت سفارش این کالا، به این بخش در فروشگاه آفتاب رایانه مراجعه نمایید.
    فایل های پیوست شده فایل های پیوست شده
    ویرایش توسط max : 10-14-2013 در ساعت 11:27 AM

  2. #2
    Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    78
    با سلام
    يك سوال : اگر باطري به طريقي از بين برود يا بيرون بيايد و بعدا جايگزين شود زمان تغيير مي كند يعني تاريخ و ساعت واقعي اشتباه نشان مي دهد و بايد براي اين موضوع چه راه حلي پيشنهاد مي دهيد
    با تشكر

  3. #3
    Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    78
    یک گوشه چشمی هم به سوالهای بنده بیاندازید . خیلی مخلصیم
    لایک کردن

  4. #4
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    سلام
    پاسخ بسیار ساده می باشد شاید برای همین کسی تا الان بهش توجه نکرده
    شما اگر ساعت خونتون به هم بریزه تنها کاری که انجام میدید تنظیم دوباره ساعت هست با توجه به کد ارائه شده هر زمانی که نیاز باشه شما می تونید ساعت و تاریخ ماژول رو برا اساس تاریخ و ساعت کامپیوترتون تنظیم کنید
    لایک کردن

  5. #5
    Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    78
    سلام
    مهندس جان مشكل اينجاست كه بنده مثلا پروژه را به كسي بفروشم سورس كد آن (كه با او نيست ) كه دوباره آنرا compile كند ؟
    لایک کردن

  6. #6
    مدیر اصلی
    تاریخ عضویت
    Aug 2012
    محل سکونت
    ایران
    نوشته ها
    440
    سلام
    باید نرم افزارتون رو طوری بنویسید که در صورت لزوم امکان ست کردن ساعت وجود داشته باشد
    مثل ساعت مچی ، با توجه به برنامه فوق و استفاده از کی پد و یا چند دکمه فشاری به سادگی امکان پذیر می باشد
    لایک کردن

  7. #7
    Member
    تاریخ عضویت
    Sep 2013
    نوشته ها
    78
    سلام
    مهندس جان يك كمي بشتر راهنمايي مي كنيد؟
    يعني بايستي چه چيزي بخرم ؟
    با تشكر

  8. #8
    Junior Member
    تاریخ عضویت
    Jul 2013
    نوشته ها
    16
    سلام میخوام رو ال سی دی نمایش بدم چه طوریه
    16:2

  9. #9
    Member
    تاریخ عضویت
    Aug 2013
    محل سکونت
    ایران
    نوشته ها
    65
    سلام
    ساعت وقتی بهم میریزه که شما ولتاژ ماژول رو قطع کنید و باطری هم در بیارید
    هر کدوم از این دو وجود داشته باشه ساعت بهم نمیخوره
    اما در هر صورت شما باید توی پروژه هاتون امکان تنظیم ساعت رو داشته باشید این خودش کار داره
    باید مثلا توی منویی از وسلیه که خودتون ساختید قسمتی طراحی کنید که بشه ساعت رو تنظیم کرد
    ویرایش توسط fea1845 : 08-02-2014 در ساعت 07:35 AM

  10. #10
    Junior Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    11
    سلام
    من یک برد مگا 2560 به همراه شیلد شبکه w5100 و همچنین این ساعت.
    از کد خودتون استفاده می کنم و در سریال این پیام نوشته می شود :
    DS1307 Communication Error
    Please check your circuitry

    باید عرض کنم من از یک سنسور ds18b20 به طور جدا استفاده می کنم یعنی به این ساعت وصل نکردم و دما بخوبی کار می کند.

    به پین های آنالوگ 4 و 5 وصل کردم مطمئنم که درسته و همچنین برای اطمینان پین ها رو جابجا کردم اما باز هم همین پیام در سریال می نویسد.
    و همچنین همیشه ساعت روی 13:43 دقیقه هست و هیچوقت جلو نمی رود؟
    منون می شوم راهنماییم کنید.
    ویرایش توسط mgh67 : 03-16-2015 در ساعت 05:57 AM
    لایک کردن

صفحه 1 از 4 123 ... آخرینآخرین

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO