-         

Ergebnis 1 bis 1 von 1

Thema: RTC Abfrage ergibt unterschieliche Zeit....

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    RTC Abfrage ergibt unterschieliche Zeit....

    Anzeige

    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:
    Code:
    //
    // 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:

    Code:
    
    #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...
    Mein kompletter Porgrammcode HIER


    Geändert von oderlachs (19.04.2013 um 18:51 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. [ERLEDIGT] Spannungsmessen ergibt falschen Wert?
    Von Schmiddi im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 04.09.2012, 23:56
  2. Speichern im EEprom und von Zeit zu Zeit abfragen
    Von Duesentrieb im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 07.01.2010, 18:54
  3. uint8_t[4] -> float ergibt komische Rundungen
    Von PCMan im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 10.01.2009, 11:31
  4. DCF77 Config ergibt immer HIGH-PEGEL am INPUT-PIN ??
    Von tc-maxx im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 03.01.2009, 18:55
  5. Antworten: 10
    Letzter Beitrag: 25.02.2008, 16:33

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •