Ich arbeite an einem ATMega-Projekt, bei dem die Zeit erhalten bleibt, und ich versuche, es so zu gestalten, dass Sie die Wahl zwischen Software Time (Millis () -basiert), DS1307 oder DS3231 (ChronoDot) haben.
Im einfachsten Fall möchte ich Header für einen ChronoDot zum Einlöten zur Verfügung haben und dann irgendwie in der Software erkennen, ob der ChronoDot angeschlossen ist, und auf diese umstellen. Es ist normalerweise leicht genug zu überprüfen, ob entweder der DS1307 oder der DS3231 vorhanden ist, da sie dasselbe I2C-Register verwenden, aber nach dieser ersten Überprüfung weichen sie ein wenig voneinander ab und letzteres weist mehr Funktionen auf. Ich möchte also immer noch feststellen, welche verbunden ist. Im Allgemeinen plane ich, einen Platz direkt an Bord zu haben, um den DS1307 als Standardoption einzulöten, und die DS3231-Unterstützung würde mit einem vollständigen ChronoDot nur über zwei 4-polige Header erfolgen. Der ChronoDot würde im Wesentlichen über die Stelle passen, an die der DS1307 normalerweise gehen würde (in diesem Fall wäre er nicht bestückt). Der Hauptgrund, warum ich mich speziell auf den ChronoDot konzentriere, ist, dass er ' Es ist beliebt, leicht zu erwerben und erfordert für den Endbenutzer kein SMD-Löten (dies gilt für ein Kit). Also, hier ist was ich denke ...
Sowohl der DS1307 als auch der DS3231 haben eine Vbat-Leitung auf dem Chip, die aber für nichts wirklich benötigt wird. Der ChronoDot hat jedoch einen tatsächlichen VBat-Pin auf dem Breakout-Board. Ich könnte vielleicht nur Vbat vom ChronoDot-Header und nicht vom DS1307 anschließen und es an einen digitalen Eingangspin meines ATMega anschließen. Aber haben Sie diesen Eingangspin durch einen Widerstand auf Masse gezogen (nicht wirklich sicher, welchen Wert ... vielleicht 4,7k?). Wenn meine EE-Theorie korrekt ist, kann ich diesen Pin lesen und wenn ich ein Tief bekomme, gibt es keinen Chronodot, aber wenn ich ein Hoch bekomme, gibt es einen.
Etwas wie das:
simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab
Meine Hauptfrage hier ist, ob dadurch nur die Pufferbatterie der RTC entladen wird. Normalerweise wird der Pufferbatterie kein Strom entnommen, während die 5-V-Hauptstromversorgung bereitgestellt wird. Würde dies jedoch dazu führen, dass die Batterie ständig mit Strom versorgt wird, wenn sie an einen digitalen Eingang angeschlossen wird? Oder gibt es einen Modus, in den ich den Stift nach dem Lesen einfügen müsste, um ihn sozusagen zu "trennen"? Ich weiß, dass ich es auf Ausgang umstellen könnte, aber ich glaube, wenn es auf Ausgang und niedrig eingestellt ist, würde ich die Batterie grundsätzlich erden.
Wie auch immer, meine EE-Kurse sind lange her. Jede Hilfe zur Theorie hier wäre dankbar.
Nahezu jedes dieser Messschemata mit Widerständen führt, wenn es dauerhaft angeschlossen bleibt, zu einer inakzeptablen Stromaufnahme und einer Verkürzung der Lebensdauer der kleinen Lithiumbatterie, die diese Geräte mit Strom versorgt.
Die Lösung besteht dann darin, dass der Messkreis nur in kurzen Abständen kurz Strom zieht, wenn Sie tatsächlich eine Messung durchführen.
Für einen digitalen Test kann dies so einfach sein wie die Verwendung eines internen, per Software konfigurierbaren Pulldowns und die Konfiguration als Pulldown für einen kurzen Zeitraum rund um den Test. Sie müssen jedoch mögliche Komplikationen einer Spannung am Pin untersuchen, wenn die MCU, die die Messung durchführt, nicht mit Strom versorgt wird / sich im Ruhemodus befindet.
Eine analoge Messung würde schwieriger werden, aber ähnliche Ideen könnten angewendet werden. Sie können beispielsweise den unteren Widerstand eines Spannungsteilers (hochohmig im Verhältnis zu den E / A) an einen Ausgangspin anschließen und ihn nur für eine Zeit um die Messung niedrig ansteuern. Oder Sie können sogar eine RC-Schaltung mit einem kleinen Kondensator mit geringer Leckage und einem einzelnen E / A-Pin aufbauen, den Sie als Ausgang niedrig ansteuern, dann als Analogeingang konfigurieren und nach einiger Zeit die Spannung messen können. Wenn die digitale Schwellenspannung des Geräts konstant ist (achten Sie auf die Temperatur!), Können Sie auf diese Weise sogar eine analoge Messung mit einem digitalen Eingang durchführen, indem Sie die Zeit messen, die der Kondensator benötigt, um sich auf die Schwellenspannung aufzuladen.
quelle
Der DS3231 hat eine Innentemperatur, die Sie ablesen können. Sie können über I2C einen Befehl zum Ablesen der Temperatur ausgeben. Wenn Sie eine Antwort erhalten, haben Sie den DS3231, wenn nicht, den DS1307.
quelle