Arduino und Stromausfall

Guten Abend

Kann man ein Pufferelko am Arduino anschließen, um Zählerwerte im Fall eines Stromausfall auf SD-Karde ab zu speichern?

Das ist nicht so einfach, weil ein großer Kondensator beim Einschalten den Spannungsanstieg verlangsamt und der Arduino dadurch nicht richtig resetiert/startet.

Beschreib mal Dein Projekt genauer.

Grüße Uwe

Hallo Uwe

Ich möchte die Betriebsstunden vom Heizstab meines Aquarium er fassen, so weit klappt das auch schon. Ich lasse ein mal am Tag die Betriebsstunden auf SD-Karte schreiben. Nur wenn jetzt um 20 Uhr der Strom ausfällt dann sind die 20 Stunden weg. Daher würde mich interessieren ob man ein Pufferelko Batterie oder der gleichen anschließen kann, da mit im Fall eines Stromausfall die Betriebsstunden auf SD-Karte geschrieben werden können?

Warum schreibst du nichtmal pro stunde ins interen EERpom?

Dann verlierst du maximal 1h pro Stromausfall und mit einmal pro Stunde schreiben hält das EEProm mindestens 10 jahre.

Oder schreibst alle meßpunkte ins EEprom und dann einmal pro tag in die SD-Karte.
Grüße Uwe

uwefed:
Oder schreibst alle meßpunkte ins EEprom und dann einmal pro tag in die SD-Karte.
Grüße Uwe

Weil das interne EEProm nur 100.000 Schreibzyklen garantiert.
Wenn er jede Minute Schreibt, hat er das in 70 Tagen erreicht.

guntherb:

uwefed:
Oder schreibst alle meßpunkte ins EEprom und dann einmal pro tag in die SD-Karte.
Grüße Uwe

Weil das interne EEProm nur 100.000 Schreibzyklen garantiert.
Wenn er jede Minute Schreibt, hat er das in 70 Tagen erreicht.

Nein 5000 Tage.
Wenn ich den Meßwert in eine (oder mehrere) Zellen schreibe und für jeden Meßwert einen neue Zelle verwende lösche ich sie nur 2-mal am Tag. Ich will ja alle Meßwerte abspeichern und nicht nur die Summe.
Grüße Uwe

ok, da hast du recht, mit Zellen wechslen funktioniert das.

Weißt du, wie das mit dem Löschen des EEProms funktioniert?
Wird beim EEPROM.write() nur diese einzelne Zelle gelöscht? oft kann ein Flash (das interne EEPorm ist ja eine Simulation im Flash) ja nur Blockweise gelöscht werden.

Wird beim EEPROM.write() nur diese einzelne Zelle gelöscht? oft kann ein Flash (das interne EEPorm ist ja eine Simulation im Flash) ja nur Blockweise gelöscht werden.

Gute Frage. Ich weiß es nicht.
Grüße Uwe

guntherb:
(das interne EEPorm ist ja eine Simulation im Flash)

Hast du dazu weiter Informationen? Ich bin immer davon ausgegangen, dass das EEPROM vom Flash losgelöst sei und hier nichts simuliert wird.

sth77:

guntherb:
(das interne EEPorm ist ja eine Simulation im Flash)

Hast du dazu weiter Informationen? Ich bin immer davon ausgegangen, dass das EEPROM vom Flash losgelöst sei und hier nichts simuliert wird.

Davon habe ich auch noch nie gehört. Bitte um Quellen der Info.
Grüße Uwe

Tja, da habt ihr mich erwischt.

Ich habe, bezüglich ATMEGA hier keine Informationen.
ich kenne es aber aus meinem Beruf von anderen microcontrollern (z.B. infineon Tricore), dass hier ein flash zur simulation des internen EEProms genommen wird.

Der Grund ist, soweit ich mich entsinnen kann, dass EEPROM Speicher eine andere Aufbaustruktur haben und mit der Zellenstructur von microcontrollern nicht zusammen erzeugt werden können. Ich habe jetzt keine Unterlagen hier, kann mich aber im Laufe der nächsten Woche mal schlau machen.

Kein Beweis für meine Behauptung, aber immerhin Indizien:
typische EEproms haben Data Retention >200 Years und 1.000.000 Erase/Write Zyklen.
Flasch-speicher haben typisch 20 bis 100 Jahre Data Retention und 10.000 bis 100.000 Erase/Write Zyklen.
Das im aAT_mega verbaute "EEPROM" liegt mit seinen angegebenen 100.000 E/W Zyklen deutlich unter dem, was normale, externe EEPROMS können, ist aber mit multipaging erreichbar.
Bei Konkurrenzprodukten (aus dem Gedächtnis, aktuell ohne Beleg) wird das EEPROM simuliert, in dem ein Flash-bereich reserviert wird, der um Faktor 8-16 größer ist als der angegebene EERpom Speicher, und dann die genutzten Flash-pages immer weitergeschalten werden. Dies geschieht automatisch von der Controller-Hardware und kann vom User nicht beeinflußt werden.

Auch hier hat in den letzten jahren eine Entwicklung stattgefunden. Als vor ca. 10-15 Jahren die ersten Controller mit integrierten EEPROM aufkamen, waren die noch recht schlecht, und wurden in der Automotive-Industrie (zumindest bei meiner Firma) nicht verwendet. weil die Zyklen zu wenige waren. Lieber hat man externe serielle EEPROMs verwendet, auch wenn die teuerer und langsamer waren.

Inszwischen hat sich die Flash-technologie deutlich weiterentwickelt, und damit auch die Flash-EEproms. Auch in der Automobilindustrie werden sie inzwischen verwendet.

Ok, das war jetzt ein langer Aufsatz.

Uwe, wenn du möchtest kannst du das hier auch abtrennen und einen neuen Fred aufmachen. Ich werde versuchen noch Dokumente zu finden.

Grüße

Gunther

mit eiem externen Chip hast du dir quasi das Stichwort selbst gegeben :wink:
Ich wollte dir einen 24x oder 93x vorschlagen. Ein kleines DIL EEPROM. Die 24'er sind I2C und die 93'er SPI. Kosten nur ein paar Cent und wenn der Chip breit ist, nimmst du den nächten und optimierst das Programm weiter. Und wenn du einen größeren nimmst und immer eine neue Zelle, dann sollte er recht lange halten :slight_smile:
... oder du schreibst in der ersten Runde eine 1 in die Zelle, in der 2. eine 2. usw. da brauchst du theoretisch nicht mal ne SD-Karte.

Gruß Gerald

oder ein FRAM von RAMTRON. Das kanst Du fast unendlich (10^14) oft schreiben und verliert die Daten nicht bei Stromausfall.
Grüße Uwe

Hallo Ingo!

Um zum eigentlichen Thema zurückzukommen: Wenn du keine großen Verbraucher auf den 5V des Arduino hängen hast dann kannst du ihn Arduino auch mit nem kleinen Akkupack (4 NiMh Zellen), einer (am besten Schottky-Diode) und nem Widerstand puffern. Das läuft je nach Stromaufnahme und Akkukapazität eine ganze Weile. Diode und Widerstand (ca. 100 Ohm) parallel schalten, Anode an den Pluspol des Akkus, Kathode an die +5V anschließen. Massen von Akku und Arduino verbinden.
Solange die 5v Versorung vorhanden ist werden die 4 Akkus schön auf ca. 1,25V gehalten, bricht dann die 5V Schiene weg, so übernimmt der Akku über die Diode (ca. 0,3-0,4V Spannungsabfall) die Versorgung des Arduino. Das sollte bei 16MHz bis ca. 4,4V Akkuspannung (also ca. 4V am Arduino) funktionieren, darunter könnte es dann sein daß er stehenbleibt.

Wennn du sichergehen willst dann würde es sich anbieten, die 5V mit einem Spannungsteiler 3,9k/1k auf knapp 1,1V runterzuteilen. Dann anschließend mit einem freien Analogeingang und der interen 1,1V Referenz die Spannung messen. Arduino - AnalogReference. Durch den etwas krummen Spannungsteiler erhälst du ca. 1,02V bei 5V Versorgung, das müßte einem Meßwert von 1002 oder 1003 entsprechen und kann je nach Genauigkeit des 5V Reglers etwas schwanken. Wenn du jetzt noch per IF Abfrage checkst, wenn der Meßwert unter ca. 850 = ca. 4,23V fällt und an der Stelle schon mal deine Messungen sicherst sollte nix mehr passieren können.

jaybee79:
Wenn du sichergehen willst dann würde es sich anbieten, die 5V mit einem Spannungsteiler 3,9k/1k auf knapp 1,1V runterzuteilen. Dann anschließend mit einem freien Analogeingang und der interen 1,1V Referenz die Spannung messen. Arduino - AnalogReference. Durch den etwas krummen Spannungsteiler erhälst du ca. 1,02V bei 5V Versorgung, das müßte einem Meßwert von 1002 oder 1003 entsprechen und kann je nach Genauigkeit des 5V Reglers etwas schwanken. Wenn du jetzt noch per IF Abfrage checkst, wenn der Meßwert unter ca. 850 = ca. 4,23V fällt und an der Stelle schon mal deine Messungen sicherst sollte nix mehr passieren können.

Das brauchst Du gar nicht machen; einfach Secret Arduino Voltmeter - Instructables (intern die Versorgungspannung messen).
Grüße Uwe

Hallo alle mit einander,

Da sind mehrere gute Vorschläge da bei und der von jaybee ist ja das was ich gesucht habe, dem werde ich wohl auch umsetzten. Den Akku kann ich den an den VIN Pin anschlißen oder muß ich den Parallele zum Netzteil anschließen?

jaybe79 hat es doch schon beschrieben. Akku kommt an +5V und GND, unten auf der schwarzen Stiftleiste, NICHT an die Klinkenbuchse. Die +5V vom Netzteil kommen über die Shottkydiode an + vom Akku, Masse bleibt.

Gruß Gerald