INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
DS1307 Uhrzeit nach Start
14.07.2015, 20:06
Beitrag #1
DS1307 Uhrzeit nach Start
Hallo Gemeinde,

Ich bin ganz neu hier und möchte erstmal alle rechtherzlich begrüßen Smile
Folgendes Problem:

Beim RTC Modul DS 1307 habe ich das Problem, dass nach einem Poweroff immer eine gewisse Uhrzeit angezeigt wird. Es handelt sich um die Uhrzeit, die beim synchronisieren mit dem pc gespeichert wurde.

Eigentlich sollte doch die Batterie auf der Rückseite doch die Uhrzeit weiter zählen oder?

Bitte um Hilfe Smile

Ich bedanke mich schon mal.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.07.2015, 20:26 (Dieser Beitrag wurde zuletzt bearbeitet: 14.07.2015 20:31 von HaWe.)
Beitrag #2
RE: DS1307 Uhrzeit nach Start
hallo,
nein, die Uhr speichert nichts, sie sorgt nur dafür, dass irgendwelche gespeichrte Daten nach dem Ausschalten nicht verloren gehen.
Ich selber benutze den RTC DS3231.
Wenn ich hier 1x die Zeit initialisiert und im RTC-EEPROM gespeichert habe, merkt er sich diese als Referenzzeit, z.B. so:
Code:
setDS3231time(0,42,20,  2,  13,07,15);  // (2 == )Montag, 20:42:00 Uhr 13.07.15

dier dazu nötig Code ist dieser hier:
Code:
void setDS3231time(byte second, byte minute, byte hour, byte dayOfWeek, byte
dayOfMonth, byte month, byte year)
{
  // sets time and date data to DS3231
  Wire.beginTransmission(ADDR_RTCDS3231);
  Wire.write(0); // set next input to start at the seconds register
  Wire.write(decToBcd(second)); // set seconds
  Wire.write(decToBcd(minute)); // set minutes
  Wire.write(decToBcd(hour)); // set hours
  Wire.write(decToBcd(dayOfWeek)); // set day of week (1=Sunday, 7=Saturday)
  Wire.write(decToBcd(dayOfMonth)); // set date (1 to 31)
  Wire.write(decToBcd(month)); // set month
  Wire.write(decToBcd(year)); // set year (0 to 99)
  Wire.endTransmission();
}
diesen Befehl muss ich nur 1x eingeben, aber 1x eingegeben werden muss er.
Softwaremäßig synchronisieren alleine reicht sicher nicht aus.

Danach bleibt diese dann auch für folgende Programme permanent im RTC-EEPROM erhalten, bis ich sie irgendwann wieder neu überschreibe und im RTC-EEPROM neu speichere.

Für deine RTC gibt es sicherlich sehr ähnliche Routinen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
15.07.2015, 08:04 (Dieser Beitrag wurde zuletzt bearbeitet: 15.07.2015 08:38 von HaWe.)
Beitrag #3
RE: DS1307 Uhrzeit nach Start
ich wollte eigentlich oben schreiben:

nein, die BATTERIE speichert nichts, sie sorgt nur dafür, dass irgendwelche gespeichrte Daten nach dem Ausschalten nicht verloren gehen.

Ich wollte es noch editieren/korrigieren, aber die Frist für nachträgliche Korrekturen ist hier im Forum viel zu kurz!!!

also: du musst im Programm nur ab und zu synchronisieren, aber wenn du sie synchronisiert hast, dann auch zusätzlich auf der Uhr speichern.
Dann erst sorgt die Batterie dafür, dass die gespeicherten Werte nicht gelöscht werden und dass die Uhr auch ohne externe Stromversorgung weiterläuft.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.07.2015, 22:35
Beitrag #4
RE: DS1307 Uhrzeit nach Start
Hallo,

Vielen lieben Dank. Dann hab ich die Funktion der Batterie falsch verstanden. Ich dachte sie liefert weiter Strom und zählt die Zeit weiter.
Also vielen Dank.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.07.2015, 08:49 (Dieser Beitrag wurde zuletzt bearbeitet: 17.07.2015 09:14 von HaWe.)
Beitrag #5
RE: DS1307 Uhrzeit nach Start
nein, eine Batterie tut nur eins: sie liefert Strom.
Aber eine Batterie zählt oder rechnet doch keine Zeit aus!!
Sie liefert Strom, in diesem Falle für den "Zeitgeber" der Uhr.
Aber wenn du die veränderten Uhrzeit-Daten nicht auf der Uhr speicherst, will soll die Uhr dann davon wissen?
Ungespeichert merkt sie sich nur das, was VORHER als letztes von irgendwem (z.B. vom Hersteller) gespeichert worden ist.
Am besten, du stellt hier einfach mal deinen Sketch ein, um es zu verdeutlichen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.07.2015, 09:33
Beitrag #6
RE: DS1307 Uhrzeit nach Start
Natürlich läuft die Uhr auf Basis der Batterie weiter! Nur du musst wenn du den Sketch übertragen hast die Zeile "Set Time" (mit der du die Uhr gestellt hast) auskommentieren und den Sketch nochmal übertragen.
Sonst wird bei jedem Startvorgang vom Arduino die alte Uhrzeit immer wieder als aktuelle übernommen.

also Uhr stellen und übertragen:

Code:
setDS3231time(0,42,20,  2,  13,07,15);  // (2 == )Montag, 20:42:00 Uhr 13.07.15

dann auskommentieren und wieder übertragen:

Code:
//setDS3231time(0,42,20,  2,  13,07,15);  // (2 == )Montag, 20:42:00 Uhr 13.07.15

Dann funktionierts. Würde aber trotzdem auf die DS3231 umsteigen da diese sehr genau ist, die DS 1307 musst du jeden Monat nachstellen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18.07.2015, 23:28
Beitrag #7
RE: DS1307 Uhrzeit nach Start
Ich hab mir auch als 1. die DS1307 gekauft. Allerdings war diese wie von Scherzheinz beschrieben, total ungenau. Die musste man jede Woche mindestens einmal stellen.
Hab dannach dann die DS3231 gekauft, und die läuft bis heute noch auf die Sekunde genau. Nur der Temperatursensor ist nutzlos, viel zu ungenau. Aber er erfüllt seinen zweck.

Ich hab damals die "DS1307" librarie genommen um die Uhr zu stellen. Da konnte man die Zeit direkt per Seriellen monitor eingeben. Fande ich schöner.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.07.2015, 08:02
Beitrag #8
RE: DS1307 Uhrzeit nach Start
Es gibt mehrere Möglichkeiten die Uhr zustellen. Es gibt auch ein sketch der die Uhr mit der Systemzeit vom PC abgleicht.
Der Temperaturfühler ist nur da um die "Betriebstemperatur" des Quarzes zu messen um die Genauigkeit sicherzustellen. Deshalb ist sie genauer als die DS1307.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Schrittmotor ruckelt beim Start und im laufenden Betrieb - Arduino+Motor Shield grt35a 3 264 21.09.2016 06:56
Letzter Beitrag: Bitklopfer
  PC verliert nach Neustart den Arduino Mathias 5 260 13.07.2016 16:59
Letzter Beitrag: hotsystems
  LCD zeigt nach einiger Zeit unlesbaren Code an kaplopez 19 3.380 03.07.2015 09:41
Letzter Beitrag: fraju
  I2C-Problem - DS1307, BMP180, BH1750 drFlexus 2 1.237 04.04.2015 17:22
Letzter Beitrag: P.Martin
  DS1307 RTC korrekt anschließen (Verständnisfrage) sepro 11 2.956 16.07.2014 14:21
Letzter Beitrag: fp.blues2013

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste