Speichern im Eprom

Hallo,

Ich habe einen Zähler programmiert. Der zählt wie oft etwas durch die Lichtschranke läuft.
Ich habe ein kleines Display, das mir anzeigt durch eine zentrale Uhr RTC DS3231 wie viele Teile Insgesamt durch gelaufen sind und dann wird dieses durch die Uhr aufgesplittet in die verschiedenen Monate das heißt mir zeigt es an wie oft im November, Dezember ... Teile durch gelaufen sind.

Nun meine eigentlich Frage leider ist durch Spannungsausfall schon paar mal passiert das dann meine Werte alle weg sind. Jetzt würde ich gerne wissen ob man diesen Werte Speichern kann z.B ins EEprom oder gibt es da eine bessere Möglichkeit.

Ich habe jetzt jetzt gedacht, was ich über die letzten Uhr einen Befehl aus gebe der mir sagt um 12 Uhr mittags jeden Tag werden die 13 verschiedene werte Zustände und wie wieder zurückgehaltenesen. Dann muss ich eine Sicherheit das mir nur paar Stunden fehlen fällt die Spannung weg sein.

Ist dies möglich und wenn ja wie.
Es geht um 13 verschiedene Werte die ich Speicher gehört.
Januar, Februar, März ... in den Monaten stehen immer werte von ungefähr 400 drin
und dann noch den Gesamtwert steht jetzt bei 10000.

Mfg Andre :slight_smile: :slight_smile:

You can save your latest monthly values to EEPROM. There is a limit to the number of writes - about 100K, but if you write the current month number hourly, it would persist for years.

(deleted)

Hey Peter,

Das mit der SD-Karte ist eine super Idee ist es möglich wenn ich die Daten auf die SD-Karte schreibe auch die Daten wieder auszulesen und damit sorge das mein Display am Adruino immer den richtigen Wert anzeigt.

(deleted)

Andreb97:
Das mit der SD-Karte ist eine super Idee ist es möglich wenn ich die Daten auf die SD-Karte schreibe auch die Daten wieder auszulesen und damit sorge das mein Display am Adruino immer den richtigen Wert anzeigt.

Warum soll das nicht gehen ?
Alles andere wäre doch sinnlos.

Du kannst aber zum Speichern auch ein F-Ram verwenden.
Das kann z.B. per I2C angesteuert werden und bis zu 1 Billion Schreibzyklen.

Was für einen Controller verwendest du ?

Arduino UNO verwende ich

Andreb97:
Arduino UNO verwende ich

Ok, dann passt das mit dem F-Ram.
Tutorial

(deleted)

EEPROM:

  • einmal am Tag den Wert im Epprom Updaten
  • Zusätzlich eine kleine Schaltung die bei Wegfall der Versorgungsspannung noch rasch den letzten Wert ins EEPROM speichert. Den Arduino über eine Diode an die Spannungsversorung legen, dazu noch einen Elko zum puffern. Vor der Diode die tatsächliche Versorgungsspannung angreifen und über einen Spannungsteiler an einen Digitaleingang geben. Fällt der Digitaleingang weg, schnell noch schreiben. Die Kapazität des ELKO muss halt reichen, aber mehr als ein paar 1000uF braucht es da auch nicht.

Daten extern verfügbar machen

  • wenn ein nachträgliches (externes) Auswerten gewünscht ist, schlage ich statt der SD vor, die Daten mittels LAN oder WIFI an einen zentralen Server zu senden.

Die rtc hat auch ein eeprom an Bord, AT24C32 mit 1 Mio. Schreibzyklen.

Das kann man bei dem DS3231-Modul auch problemlos (wenn man Löten kann) gegen ein 64 KBit oder 256 KBit FRAM-Modul austauschen kann, mit > 1 Billion Schreibzyklen.

Gruß Tommy

Die RTC DS3232 ist gleich der DS3231 hat aber 236 byte Bateriegepuffertes RAM.
Leider gibt es (fast) keine fertigen Platinen mit dem DS3232. Notfalls einen DS3231 herunterlöten und einen DS3232 drauflöten.
Ich habe gefunden:

https://futurlec.com/mini-ds3232.shtml
Leider sind diese Module weder leicht zu bekommen noch preislich vergleichbar mit den weitverbreiteten DS3231

Grüße Uwe

HotSystems:
Du kannst aber zum Speichern auch ein F-Ram verwenden.
Das kann z.B. per I2C angesteuert werden und bis zu 1 Billion Schreibzyklen.

Interessanter weise sind nicht nur die Schreibzyklen der begrenzende Faktor.
Da FRAM Zellen beim lesen zwangsläufig gelöscht werden, folgt auf jedes lesen ein verborgenes schreiben.
OK, das sind immer noch ein Haufen Zyklen ....