DS1307 Stromausfallproblem

Der DS1307 verfügt über zwei Stromquellen: die Haupt-VCC-Quelle und die Backup-Batterie. Letzteres versorgt den DS1307 mit Strom, wenn der Hauptstrom ausfällt, damit die Uhr weiter ticken kann.

Ich habe ein Problem mit der RTC DS1307, wenn die Hauptstromversorgung plötzlich ausfällt und dann die Zeit auf dem LCD-Display einfach einfriert. Manchmal, wenn das passiert (Ausschalten), läuft die RTC weiter (es scheint, dass der DS beim Ausschalten der Hauptstromversorgung hängen bleibt).

Dies ist die genaue Schaltung, die ich verwendet habe, und die Batterie liefert 3,0 V:

Schema

Der Code, den ich verwendet habe, steht genau im Blog-Beitrag: DS1307 Real Time Clock Working .

Was könnte das Problem sein?

Sind Sie sich zu 100 % sicher, dass es der DS1307 ist, der glitcht? Haben Sie eine unabhängige I2C-Schnittstelle an die SCL- und SDA-Leitungen angeschlossen und versucht, den IC abzufragen? Ihre Frage widerspricht sich auch: An einer Stelle sagen Sie, das Teil behält das Timing bei, wenn der Strom ausfällt, und dann sagen Sie in Klammern: "Hängt, wenn der Hauptstrom (ist) aus" - ist es hängen geblieben oder nicht?
@Madmanguruman: was könnte noch sein? Ich habe einen anderen ATmega ausprobiert und das Problem tritt immer noch auf. Ich verbinde ihn mit Arduino Uno und mit dem seriellen Monitor - RTClib-Beispiel - sendet er korrekte Daten (Zeit) an den Computer kann ich sagen, es ist zufällig!!

Antworten (4)

Schema ist gut. Führen Sie diese Checkliste durch:

  • Überprüfen Sie Ihre Stromversorgung auf saubere Wellen, insbesondere zu Verbindungs- und Trennungszeiten. Wenn es für mehr als 1 V ansteigt, fügen Sie einen 4,7-uF-Kondensator hinzu. Wenn das Problem dadurch nicht behoben wird, wechseln Sie die Stromversorgung und erneuern Sie DS1307.

  • Überprüfen Sie die 3-V-Batteriestromfähigkeit, nur keine Spannung, DS1307 benötigt mindestens 200 uA.

  • Überprüfen Sie, ob die 3-V-Fledermaus einen unerwünschten Pfad hat, der sie entlädt. Besonders wenn Sie Protoboard verwenden.

  • Überprüfen Sie die I2C-Befehle/Software.

danke für deine hilfe ich aber eine 4,7 uF parallel zur quelle und es löst das problem danke für deine hilfe

Normalerweise tritt diese Art von Problem auf aufgrund von:

  1. Netzteil verarbeitet keine Transienten bei Stromausfall und wenn es wiederhergestellt wird.
  2. Schlechte Zelle
  3. Manchmal liegt es an dem Software-Bug ...
danke ... aber ich habe meine stromversorgung und die batterie überprüft und es gibt kein problem ... ich habe es durch einen c4.7uf parallel zum 5-v-hauptregler gelöst

Stellen Sie sicher, dass Sie den I2C-Bus beim Start ordnungsgemäß zurücksetzen. Wenn Sie es nicht sind, werden Sie sehen, dass die Datenleitung die ganze Zeit niedrig ist, wenn Ihr Programm gesperrt ist. Sie können dieses Problem beheben, indem Sie vom Master Taktimpulse senden, bis alle Geräte die Datenleitung freigegeben haben.

danke .... aber der I2C-Bus wird ordnungsgemäß zurückgesetzt. Ich habe die Lösung gefunden, eine 4,7uF-Parallele zur Quelle hinzuzufügen

Haben Sie darauf geachtet, wie im Datenblatt empfohlen vorzugehen:

UHR UND KALENDER


Bit 7 von Register 0 ist das Takthaltebit (CH). Wenn dieses Bit auf 1 gesetzt ist, ist der Oszillator deaktiviert. Wenn er auf 0 gelöscht wird, ist der Oszillator aktiviert. Bitte beachten Sie, dass der anfängliche Einschaltzustand aller Register nicht definiert ist. Daher ist es wichtig, den Oszillator (CH-Bit = 0) während der Erstkonfiguration zu aktivieren.


Mit anderen Worten, wenn Sie bei Ihrer Softwareinitialisierung vergessen haben, das CH-Bit zurückzusetzen, würde der Oszillator nicht funktionieren (und der Bitwert ist beim Einschalten zufällig).

Vielen Dank für Ihre Antwort, ich habe die "CH" -Bit-Initialisierung vorgenommen und eine gute Lösung gefunden, indem ich 4,7 uF parallel zum 5-V-Regler (an der Hauptquelle) hinzugefügt habe, und es funktioniert gut
Schön, dass du es gelöst hast.