Werte Speichern

Hallo,

Ich habe einen Zähler gebaut der mehr den Wert auf ein Display anzeigt das Funktioniert auch alles.
Jetzt zu meiner Frage bei einem Stromausfall wird dieser Wert natürlich wieder auf 0 gesetzt jetzt wollte ich wissen wie ich diesen Wert dauerhaft speichern kann. Habe schon öfter gelesen das man den Wert auf den Eeprom speichern kann.
Wollte gerne wissen wie das geht und wie ich das am besten mache weil bei jeder Änderung der Zahl wäre dieser Schnell vollgeschrieben.

Andreb97:
... wie ich diesen Wert dauerhaft speichern kann.

Alternativ zu EEPROM ginge auch FRAM.

ein etwas älterer Post der sich mit der Verlängerung der Lebensdauer des Eeproms beschäftigt.

Kurz zusammengefasst: eine Eepromzelle kann 100.000 sichere Schreibzyklen verkraften. Wenn man nun die Zellen wechselt (1 zusätzliche Zelle mit der Info der Speicheradresse wird benötigt), kann man so die Anzahl der Schreibzyklen multiplizieren.

Um welche Werte und welchen erwarteten Einsatzzeitraum geht es denn grob?

derGeppi:
1 zusätzliche Zelle mit der Info der Speicheradresse wird benötigt

Und genau diese Zelle wird dann öfter als garantiert beschrieben und dürfte damit als Erste ausfallen.

Gruß Tommy

fang mit EEPROM PUT und GET an:

https://www.arduino.cc/en/Reference/EEPROMGet

Es gibt sogenannte FRAM-Chips. Die können eine Milliarde Schreibzyklen ab.

Wenn du hundert mal pro Sekunde in den Chip schreibst reicht das für
10^12/(876060100) = 19.000 Jahre.

zum Beispiel hier:
https://eckstein-shop.de/Adafruit-I2C-Non-Volatile-FRAM-Breakout-256Kbit-32KByte

Andere Idee wäre eine Pufferbatterie mit 6V zu verwenden die über zwei Dioden in Durchlassrichtung
an den 5V-Pin des Arduinos angeschlossen wird. Die Dioden sind notwendig um die Batterie gegen "Aufladen zu schützen" und den Arduino vor Spannungen größer 5V. Wann immer die Hauptstromversorgung läuft
bringt die Hauptversorgung 5,0V auf den Arduino wenn die Hauptversorgung ausfällt bringt die Pufferbatterie
6V -2 * 0.6V = 4,8V auf den Arduino. Damit kann er erst einmal weiter laufen.
An einem zusätzlichen PIN wird abgefragt ob Hauptstromversorgung läuft wenn nein momentanen Zählerstand
in den EEPROM speichern und dann auf ein bistabiles Relais einen Impuls geben der die Batterie abschaltet.
Damit reduzieren sich dann die Anzahl Schreibvprgänge auf die Anzahl Stromausfälle

Aber das mit dem FRAM ist wahrscheinlich einfacher

viele Grüße Stefan

Tommy56:
Und genau diese Zelle wird dann öfter als garantiert beschrieben und dürfte damit als Erste ausfallen.

Also ich dachte, da es sich ja um ein "Zählwerk" handelt, die Adresse des Speicherorts nur 1x pro Hunderttausend (o.ä.) in diese Zelle zu schreiben und erst bei Adressenwechsel erneut zu beschreiben.

Aber ich merk gerade, dass man sich damit wieder mehr Probleme schafft als löst. Ok, als theoretische Spielerei abgetan... :wink:

Andreb97:
Wollte gerne wissen wie das geht und wie ich das am besten mache weil bei jeder Änderung der Zahl wäre dieser Schnell vollgeschrieben.

Da bleibt eigentlich nur der FRAM oder der batteriegepufferte RAM einer DS1307.
Zum FRAM gibt es hier eine Diskussion mit Lib (bis zum Ende lesen)

Gruß Tommy

Man kann auch den Wegfall der externen Energie erkennen, den Wert ins EEPROM schreiben und dann den µC schlafen legen.

Diode, Kondensator und ein freier analoger Eingang, alternativ Schmitttrigger mit digitalem Eingang werden benötigt.

(deleted)

Für eine einzige Zahl dürfte eine SD sehr stark oversized sein.

Gruß Tommy

Tommy56:
Für eine einzige Zahl dürfte eine SD sehr stark oversized sein.

Aber der Wissensdurst ist doch schier unendlich, daher könnte man jede Änderung mit Uhrzeit und Datum speichern, zusätzlich auch noch Temperatur, Sonnenstand und Laune der Oma, was weiß ich :grin:

Da hast Du Recht, das war aber nicht die Aufgabenstellung.

Gruß Tommy

Ich verspürte Spannungen und wollte mit einem Scherz zur Entspannung beitragen.