PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RTC Abfrage ergibt unterschieliche Zeit....



oderlachs
19.04.2013, 09:52
Hallo Freunde ,

wiedermal stehe ich vor einem Problem und weiss keinen Rat. Ich habe einen Anwendung, in der ich die aktualle Zeit per I2C vom TinyRTC Modul abfrage. Nachdem ich die Zeit gesetzt habe mittels einem Programm von C.Kühnel und mein Programm benutze ist eine Differenz von 5 Min zu vermerken. Die RTC-Zeit wird gesetzt mit der aktuellen PC Zeit, zur Zeit des Uploads zum Arduino.
Die verwendeten Libraries sind in beiden Fällen gleich.

Hier der Script zum RTC Setzen:


//
// Title : Setzen von Datum und Uhrzeit bei RTC DS1307
// Author : Claus Kühnel
// Date : 2010-05-29
// Id : SetRTC.pde
// Version : 0018
// Micro : Arduino 2009 w/ ATmega328
//
// DISCLAIMER:
// The author is in no way responsible for any problems or damage caused by
// using this code. Use at your own risk.
//
// LICENSE:
// This code is distributed under the GNU Public License
// which can be found at http://www.gnu.org/licenses/gpl.txt
//
#include <Wire.h>
#include "RTClib.h"

#define VT100 0 // set to 1 for VT100 terminal

RTC_DS1307 RTC;

void setup () {
Serial.begin(9600);
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);

delay(1000);

#if VT100
Serial.print(27, BYTE);
Serial.print("[1K");
Serial.print(27, BYTE);
Serial.print("[H");
#else
Serial.println();
#endif
}

und hier der meinige:





#include <Wire.h>

#include "RTClib.h" // muss installiert sein im Programm Verzeichnis


/* ================================================== ======================== */
/* */
/* Bezeichnung Pin Arduino Erklaerung zur Bezeichnung */
/* ================================================== ======================== */
/* +5V +5V */
/* GND GND */
/* SDA A4 // I2C Ltg SDA */
/* SCL A5 // I2C Ltg SCL */
/* Rx D0 */
/* TX D1 */
/* Pumpe 13 LED onBoard und Ausgang zum Pumpenrelais */
/* */
/* */
/* */
/* */
/* */
/* ================================================== ======================== */
/* */
/* Definitionen : */
/* */
/* ================================================== ======================== */
/* */
#define Pumpe 13
/* */
/* ================================================== ======================== */
RTC_DS1307 RTC;
void setup()
{
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(Pumpe,OUTPUT);
}


void loop()
{
DateTime now = RTC.now();
// Ausgabe der akt.Zeit über USB Kabel an Terminal (Arduino IDE oder andere)
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();
if (lese_Zeit()== true)
digitalWrite(Pumpe,HIGH);
else
digitalWrite(Pumpe,LOW);
delay(2000);
}



boolean lese_Zeit()
{
// Festlegung der Pumpzeit 1 Minute um 8.30 Uhr , LED leuchtet und
// die Pumpe pumpt für 1 Minute Wasser in den Tagestank (ca 10l/min.)

DateTime now = RTC.now();
if (now.hour()== 8 &&now.minute()==30)
return true;

else
return false;



}




kann mir jemand einen Rat geben, wo die abweichende Zeit herkommt, das ist zwar für meine Anwendung erstmal nicht so wichtig minuten genau zu sein, es interessiert mich aber doch. Denn solche Abweichung ist ja enorm. In weiterem Ausbau der Anwendung brauche ich schon minutengenaues timing.

Gruss und Dank

Gerhard

Nachtrag: Wechsel der Haltebatterie (CR2032) bzw des Modules ergab auch keine Lösung, nun bin ich sprachlos.

Gerhard
Es hat sich urplötzlich erledigt und funktioniert, aber keine Ursache gefunden...:confused:
Mein kompletter Porgrammcode HIER


(http://oderlachs.de/gartenwunder/html/garduino.html)