TinyRTC DS1307 Probleme mit Batterie-Pufferung

Liebe Arduino-Community,

ich stehe wiedermal auf'm "Schlauch" :stuck_out_tongue:

Ich besitze einen TinyRTC (DS1307), welcher sich auch einwandfrei mit der ds1307new.h-Library von DFRobot einstellen/auslesen lässt.

Sobald der TinyRTC Spannungsfrei ist, wird dieser nicht richtig gepuffert und hört auf zu "zählen".
Das merke ich daran, dass die Uhrzeit immer da weitergeht, wo diese zuletzt spannungsfrei wurde.

Ich bedanke mich schonmal im Voraus für Ideen :slight_smile:

Hast Du die Batteriespannung kontrolliert?
Grüße Uwe

embrio:
Sobald der TinyRTC Spannungsfrei ist, wird dieser nicht richtig gepuffert und hört auf zu "zählen".
Das merke ich daran, dass die Uhrzeit immer da weitergeht, wo diese zuletzt spannungsfrei wurde.

Hm, eigentlich müßte er ohne Spannung alles vergessen.
Miss mal deine Batteriespannung. Wie hoch ist die? Möglich, das die Knopfzelle leer ist, das das RAM noch gepuffert wird, aber der Oszillator nicht mehr schwingt.

Gruß Gerald

Hallo,
also wenn der tatsächlich Spannungslos ist, dann sollte da beim neustarten
nicht die alte Zeit stehen.
Es wird wohl so sein, das die alte Zeit im "Speicher" steht, und eben diese
holt sich wohl Dein Sketch- dann wird weiter gezählt.
Da könnte ein Fehler im Sketch dran schuld sein.
Gruß und Spaß
Andreas

Danke für Eure flotten Antworten und sorry für meine verspätete Antwort... :blush:

Ich habe alle Spannungen kontrolliert.
Die Akkuspannung am "BAT-Pin" machte mich etwas stutzig, die Akkuspannung selber habe ich aber als gut vernommen. Zusätzlich habe ich auch mal eine CR2032-Batterie getestet und selbes Phänomen festgestellt.

Die Spannungen sind wie folgt:
Akku: 3.8V
BAT-Pin: ~2.76V

Verwendet habe ich folgende Bibliothek:

embrio:
ds1307new.h-Library von DFRobot

Und das "Phänomen" habe ich auch beim mitgelieferten Beispielprogramm.
Im aktuellen Sketch hole ich mir die Zeiten wie folgt:

RTC.getTime();
std = RTC.hour;
min = RTC.minute;
sec = RTC.second;

Ich habe mal gelesen, dass es ein Bit gibt, welches den DS1307 in Ruhezustand versetzt, sobald dieser nur am Puffer "hängt". Vielleicht ist euch das ja bekannt? :slight_smile:

Die Umschaltung von Spannungsversorgung auf Batterie erfolgt beim DS1307 bei einer gewissen Spannung:

The nominal power-fail trip point (VPF) voltage at which access to the RTC and user RAM is denied is set by the internal circuitry as 1.25 x VBAT nominal.

VBAT Battery Voltage min: 2.0V, typ: 3V, max 3.5V

(aus dem Datenblatt: http://datasheets.maximintegrated.com/en/ds/DS1307.pdf )

Bei einer Batteriespannung von 3.8V funktioniert die Umschaltung nicht.

Was meinst Du mit

BAT-Pin: ~2.76V

??
Grüße Uwe

Also, der BAT-Pin enthält die Spannung, welche am DS1307 am VBAT (Pin 3) ankommt. :wink:

Die Batterie ist vor einem Spannungsteiler, daher gilt die Spannung von ~2.76V :slight_smile:
Das von mir gekaufte China-Modul dürfte in etwa diesem Schaltplan entsprechen:
http://www.sainsonic.com/zen/albums/ebay/tool_nerd/20-019-108/nps3FD1.pdf

embrio:
Die Batterie ist vor einem Spannungsteiler, daher gilt die Spannung von ~2.76V :slight_smile:

Hast Du Uwe nicht richtig verstanden?

Dann versuche ich es Dir nochmal anders zu erklären:
Laut Datenblatt für die DS1307 aktiviert sich das I2C-Interface der DS1307 erst dann, wenn die Betriebsspannung HÖHER ist als die Backup-Batteriespannung mal 1.25!

Wenn wir mal von 0,1 Volt "Sicherheitsabstand" ausgehen und Du mißt:
BAT-Pin: ~2.76V

Dann beträgt die MINDESTSPANNUNG zum Auslesen der Uhr über I2C im aktiven Betrieb:
(2.76V * 1.25)+0.1V = 3,55V

Miss bitte auch mal die Batteriespannug im Aktivbetrieb aus und nicht im Backupbetrieb! Die TinyRTC-Module sind nämlich nicht für eine "Stützbatterie" sondern für einen "Stütztakku" vom Typ "LIR" vorgesehen und sorgen für einen ständigen Ladestrom am Akku. Normalerweise steigt dadurch die Spannung am Stützakku im Aktivbetrieb an und liegt höher als im Backupbetrieb.

Falls z.B. die Spannung am Stützakku/Stützbatterie im Aktivbetrieb auf z.B. 3,06V steigt, würde die Mindestspannung zur sicheren Aktivierung des I2C-Interfaces betragen
(3.06V * 1.25)+0.1V = 3,925V

Und 3.06V wäre noch nicht einmal die Ladeschlussspannung, die ein LIR-Akku auf dem TinyRTC-Modul erreichen kann.

Die TinyRTC-Module sind daher NICHT für weniger als nominelle 5V Betriebsspannung (effektiv 4.7V+) geeignet.

Habe natürlich ein Stützakku :stuck_out_tongue: Batterie hörte sich nur besser an :smiley:
Habe aber in einen früheren Post auch mal Akku geschrieben :blush:

embrio:
Die Akkuspannung am "BAT-Pin" machte mich etwas stutzig, die Akkuspannung selber habe ich aber als gut vernommen. Zusätzlich habe ich auch mal eine CR2032-Batterie getestet und selbes Phänomen festgestellt.

Aber du hast recht, hätte da konsequenter sein müssen - kommt nicht wieder vor!

Im Betrieb (5V per USB) läuft auch alles prima!
Mein Problem ist lediglich, dass die Uhr intern nicht weiterläuft,
wenn die 5V nicht angeschlossen sind ...

embrio:
Im Betrieb (5V per USB) läuft auch alles prima!
Mein Problem ist lediglich, dass die Uhr intern nicht weiterläuft,
wenn die 5V nicht angeschlossen sind ...

Das klingt sehr merkwürdig.

Teste mal mit einem Sketch, der keine spezielle Library voraussetzt und mit dem die Uhr über Serial gestellt werden kann, ich habe hier mal was gepostet:
http://forum.arduino.cc//index.php?topic=192740.msg1426044#msg1426044

Tritt mit diesem Sketch dasselbe Problem auf?

So, ich hatte wieder mal etwas Zeit zum testen :slight_smile:

Dein Sketch läuft zwar für den normalen Betrieb, habe aber immer noch das selbe Problem wie vorher - und zwar, dass die Uhr stehen bleibt ... :~

embrio:
Dein Sketch läuft zwar für den normalen Betrieb, habe aber immer noch das selbe Problem wie vorher - und zwar, dass die Uhr stehen bleibt ... :~

Mir ist schleierhaft, was das sein kann.

Falls Du es noch nicht gemacht hast: Mal den Stützakku entfernen, 10 Minuten warten, Stützakku wieder einsetzen darauf achten, dass der Akku auch wirklich mit beiden Polen Kontakt zu seiner Fassung hat.

Und wenn das nichts hilft, anderes RTC-Modul besorgen...

Ich bin genau diesem Problem hinterher gelaufen. Ich habe alles nur so zusammen gesteckt. Das Problem war schließlich das beim "abstecken" mann sowas wie ein Prellen hatte das mochte meine RTC nicht. Mit einem 10µF Kondensator an der Spannungsversorgung ging die Uhr auch im Backup Modus perfekt. Evtl. hilft dir das weiter.
Bei mir war es aber kein Fertigmodul.
Gruß
DerDani

Ähm-is nicht wahr oder?
Meine (keine 1307) hat das Problem nämlich, in seltenen Fällen, auch.
Merk ich daran, dass sie dann plötzlich nach geht, und zwar eben die Zeit, die sie stromlos war.

Try and Tell
:slight_smile:
Gruß
Der Dani

Ich kram das mal wieder raus.
Hab heute mal wieder bissel mit meiner RTC rumgebastelt und: der Kondensator nutzt nüscht. :frowning:
Die Uhr bleibt, sowie ich das Ganze von der Stromversorgung trenne, stehen.
Sie stellt also nicht auf "0" sondern läuft genau da weiter, wo sie vor dem ausschalten war.

Den Elko habe ich zwischen Masse und 5V der RTC gebaut- geht trotzdem nich....noch jemand ne Idee?

Ich bin mittlerweile weg von den 1307 sind eher Eieruhren. Ich nutze nur noch diese Module (5erPack aus China im Lager).
Damit habe ich bisher keine Probleme gehabt
Gruß
DerDani

Mittlerweile sind DS1307 eher historische Teile, stimmt, aber hier geht es ja um den sportlichen Ehrgeiz.

..noch jemand ne Idee?

Die 1307 hat neben dem Vcc (5V) auch einen BAT (3V) Anschluss.
Wenn dort 3V (genaugenommen min. 2/3 Vcc ?) anliegen, sollte sich I2C abschalten, aber die Uhr intern weiterlaufen. (Meine Idee: Mal den Stütz-Akku eher zwischen GND und BAT probieren ?)

Halt stop.
Dani: ich benutze genau diese, von dir gezeigte.
Ich weiss, irgendwo hatte ich mal geschrieben, es sei eine 1307- ist aber ne 3231.
Exakt dieses Modul, mit dem zusätzlichen EEPROM.

Achtung diese Modul ist nicht 100% kompatibel zur 1307 man muss im Control Register aufpassen. Denn den zustand Stop bei Verlust Versorgung gibt es wirklich. Bit7 im Control Register EOSC.
wenn durch ne falsche Lib das Bit gesteuert wird läuft alles solange die Power da ist fällt die Pwer weg bleibt die Uhr stehen.
Schau mal ins Bild im Anhang
Gruß
DerDani