Goedkope tijd: de Dallas DS1307 Real Time Clock (RTC)

Kostprijs DATUM & TIJD op je ATmega328 / Arduino

  1. DS1307-RTC-IC ………………………………………………………..0,69 euro
  2. 32,768 KHz 32768HZ Tuning Fork Watch Crystal 12.5PF …….0,11 euro
  3. CR2032 GP 3v Lithium Battery Button Cell ……………………….0,12 euro
  4. CR 2032 CR2025 Computer Battery Socket Holder Case …….0,15 euro

Totaal: 1,07 euro

Voor 11,43 euro (excl. verzendkosten) kun je deze bij sparkfun.com kopen:

Zij hebben nog een 0,1 uF condensator tussen 5 Volt en aarde. Deze had ik nog liggen. Ze zijn net iets meer dan 4 cent per stuk.

Het enige dat je volgens het schema van adafruit.com moet toevoegen zijn 2 x een 2,2 K weerstand tussen 5 Volt en de SDA en SCL pinnetjes van de DS1307 chip. Dit schema is overigens van hun datalogger shield. Daar zit de DS1307 chip op & deze heb ik als KIT helemaal in het begin van mijn arduino-tijd (paar maanden terug) gebouwd.

2 x 2K2 1/4 watt 1% metaalfilm weerstandjes kost 3,14 cent. Wat de totale kosten voor een RTC met weerstandjes en condensator op 1,14 brengt.

Hier de  DATASHEET van de DS1307 RTC-IC

Zo sluit ik hem aan:

Als alles goed is aangesloten, heb je nog de juiste library nodig. Ik gebruik RTClib. Je moet dit uitgepakt in je libraries-directory van je arduino-map plaatsen. Zo dus:

De voorbeeld sketches komen dan na (her-) start van je arduino IDE onder File / Examples terug. Bij mij werkt het schitterend.

Hier de losse Sketch (zonder library) om je een indruk te geven:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
    DateTime now = RTC.now();

    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();

    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");

    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);

    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();

    Serial.println();
    delay(3000);
}

 

Categories: Arduino

2 Responses to Goedkope tijd: de Dallas DS1307 Real Time Clock (RTC)

  1. Gijs van Oort says:

    Waar koop je die onderdelen voor die prijs?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>