Start Elkretssimulator Karnaughdiagram Quine McCluskey


RTC DS3231 Realtidsklocka

Alla datorer, nästan, har en klocka i sig. Med hjälp av denna klocka kan du t.ex. starta vissa funktioner på vissa klockslag. Du känner igen att en sådan här klock-krets finns, t.ex. på ett moderkort till en PC, genom att det sitter ett lithiumbatteri (som går att byta ut) i närheten.



Poängen med att placera klockan i en helt egen autonom krets, med egen strömförsörjning, det är att man kan vara säker på att klockan tickar på oavsett om datorn är påslagen eller inte. Poängen med det, i sin tur, det är förstås att du slipper ställa klocka och datum varje gång du startar datorn. Om klockan tickar på i en egen krets, då kan datorn haverera utan att klockan havererar. När man slår på burken igen, så går klockan rätt. Och klockan är ofta en ganska viktig grej. Hur jobbigt är det inte att ställa om klockradion varje gång kontakten dragits ur? Vissa klockradios kommer ihåg vad klockan är och behöver, typ, "aldrig", någonsin ställas. Superbekvämt! DS3231 är ett chip som håller reda på klockan och som får sin ström från ett eget batteri. Typiskt drar en sådan här krets väldigt lite ström, så batteriet räcker oftast långt tid.

Datablad för ds3231 hittar du här. Vi har alltså en billig krets här som håller mycket exakt koll på klockan även när strömmen är avslagen. Kretsen är kopplad till ett eget batteri, som dessutom håller väldigt längre.



Vi kommunicerar med en sådan här krets med hjälp av ett protokoll via I2C seriekommunikation.

Nedan ser du baksidan på kretskortet, där det finns plats för ett lithiumbatteri.



Och såhär ser framsidan ut.



Dels finns här kretsen själv, DS3231, och dels finns en del kringkomponenter bl.a. ett EEPROM. På kortet finns också 3 stycken jumpers med vars hjälp du kan justera IC2 -adressen. Detta kan vara användbart om din I2C -buss används för flera olika kretsar/sensorer och du inte vill att dessa skall krocka med varandra.

Det är enkelt koppla in kretsen via I2C -bussen till arduinon.



För enkelthetens skull installerar vi färdiga bibliotek till denna krets. Det gör vi genom att välja bilbliotekshanteraren ("hantera bibliotek").



I sökrutan kan du skriva "rtclib" och får då upp några resultat som matchar detta. Klicka på installera.



Detta bibliotek förutsätter i sin tur att du har installerat tinywire. Välj installera alla.

Nu kan vi avända detta bibliotek för att kommunicera med kretsen. Det är rätt så enkelt.

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

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {
			"Söndag", 
			"Måndag", 
			"Tisdag", 
			"Onsdag", 
			"Torsdag", 
			"Fredag", 
			"Söndag"};

void setup () 
{
  Serial.begin(9600);
  delay(1000);
  if (! rtc.begin()) 
  {
    Serial.println("RTC -kretsen är inte inkopplad");
    while (1);
  }

  if (rtc.lostPower()) 
  {
    Serial.println("RTC har förlorat sin ström");  
    // Ställ klockan på RTC -kretsen. Observera att när detta gjorts
    // så behövs inte nedanstående rad längre.
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    //rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0));
  }
}

void loop () 
{
    DateTime now = rtc.now();
    
    Serial.println("Datum och klockslag: ");

    Serial.print(now.day(), DEC);    
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print(' ');
    Serial.print(now.year(), DEC);
    
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
      
    Serial.println();
    delay(10000);
}

Vilket ger följande utskrift.



Lycka till!