Ich arbeite derzeit an einem eingebetteten Projekt, in dem ich einen Zähler habe, der die ganze Zeit aktiv sein wird. Wenn der Strom ausfällt, muss ich auch den letzten Zählerstand speichern und beim nächsten Start wieder laden. Damit hatte ich vor, EEPROM zu verwenden, in das ich meinen Zählerwert kontinuierlich schreiben werde. Aber ich habe irgendwo gelesen, dass das EEPROM eine Lese- / Schreibdauer von etwa 100.000 hat, und ich werde diesen Zähler wahrscheinlich 120.000 pro 24 Stunden aktualisieren. Also suche ich nach Alternativen, um diese Aufgabe zu erfüllen. Bitte geben Sie mir Ihren Vorschlag, dasselbe zu tun.
Eine andere Lösung könnte darin bestehen, einen Mikrocontroller mit nichtflüchtigem FRAM zu verwenden. FRAM leidet nicht unter den gleichen Einschränkungen bei Schreibzyklen wie EEPROM.
Einige der MSP430-Produkte von TI sind mit FRAM erhältlich, hier ist ein Link zu einer Anwendung, die der von Ihnen beschriebenen ähnelt:
MSP430 mit FRAM-Save-State bei Stromausfall
Hier ist der Wikipedia-Artikel zu FRAM: FRAM
Ich habe dieses Problem in einem aktuellen Projekt.
Die Art und Weise, wie ich damit umgehe, besteht darin, den Live-Wert des Zählers im RAM zu halten. Ich habe ein wenig Hardware hinzugefügt, damit der Mikrocontroller erkennen kann, dass die rohe Eingangsspannung niedrig ist. Wenn dies der Fall ist, stoppt es, was es tut, speichert den Live-Zählerwert im EEPROM und wartet dann, um die Rohspannung zu beobachten. Wenn es mit einer gewissen Hysterese wieder hochgeht, startet das Mikro im Wesentlichen neu. Andernfalls, wenn die Stromversorgung weiter abfällt, wird das Mikro schließlich gestoppt. Beim nächsten Neustart wird der Zählerwert aus dem EEPROM geladen und dann bis zum nächsten Ausschalten wieder live im RAM verwendet.
Es dauert nicht lange, einen kleinen Wert in das EEPROM zu schreiben. Höchstwahrscheinlich verfügt Ihr vorhandenes Stromversorgungssystem über genügend Energiespeicher, um einen Spannungsabfall zu erkennen, und hat dennoch genügend garantierte Laufzeit, bevor die Stromversorgung des Mikros unter die Betriebs- oder EEPROM-Schreibschwelle fällt.
In meinem Fall war die einzige zusätzliche Hardware eine Schottky-Diode, um zu verhindern, dass die Gleichstromversorgung auf dem Weg nach unten Ladung aus dem lokalen Reservoir saugt, und zwei Widerstände als Spannungsteiler, damit das Mikro die rohe Eingangsspannung lesen kann. Der Rest ist Firmware.
Es ist wichtig zu beachten, dass Sie die Spannung am Eingang zu der Endversorgung beobachten sollten, die das Mikro mit Strom versorgt, und nicht die Leistungsspannung des Mikros direkt. Wenn letzterer niedrig wird, kann es zu spät sein. Hoffentlich gibt es einen Spannungsbereich, der unter dem schlimmsten Fall liegt, wenn alles korrekt funktioniert, und über dem, was die Stromversorgung des Mikros benötigt, um eine geregelte Spannung für das Mikro zu gewährleisten. In meinem Fall war die Versorgung des Mikros ein Abwärtsregler, der von 48 V gespeist wurde, sodass es einen großen Bereich gibt, der unter dem Normalwert liegt, in dem das Mikro jedoch noch zuverlässig arbeiten kann.
Alte alte alte Lösung, CMOS-Zähler + Lithiumbatterie oder Ram + Lithiumbatterie.
Die Energieversorgung für das Speicherelement kommt von der normalen Energieversorgung, wenn sie verfügbar ist, oder von der Batterie, wenn sie nicht verfügbar ist.
Viele moderne Mikros im Ruhezustand behalten ihren Zustand mit einer sehr geringen Stromzufuhr bei. Sie können also diese Technik mit Stromausfallerkennung verwenden, um in den Ruhezustand zu wechseln, und dann eine Batterie verwenden, um den Zustand während der Ruhephase aufrechtzuerhalten, während die Hauptversorgung ausgeschaltet ist.
Microchip verfügt über eine Reihe von I 2 C-"EERAM"-Teilen, die es ermöglichen, Daten im SRAM zu speichern und sie dann bei Stromausfall in das EEPROM zu schreiben (unter Verwendung der in einem Kondensator gespeicherten Energie), um bei Stromrückkehr geladen zu werden. Dies scheint für Ihre Anwendung perfekt zu sein.
Ein repräsentatives Beispiel für diese Teile ist der 47L04 .
Eine andere Lösung.
Erkennen Sie einen Stromausfall und verwenden Sie eine Supercap oder eine Nicht-Supercap, um die Stromversorgung für einige Millisekunden aufrechtzuerhalten. Nutzen Sie diese Zeit, um Ihren Zählerstand in das EPROM zu schreiben. Nur beim Ausschalten in EPROM schreiben. Anzahl der EPROM-Zyklen = Anzahl der Abschaltzyklen.
Verwenden Sie einen FRAM-Chip wie den FM24C04B. Sie haben eine sehr hohe Schreibdauer und sind nicht flüchtig.
https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf
Sie können auch ein batteriegestütztes SRAM-Modul (NVRAM) verwenden. Zum Beispiel M48Z02-150PC1
Ich habe mich für "ds1307 RTC" entschieden. Weil es 54 Byte stromunterstützten SRAM hat. was einen unendlichen Lese-/Schreibzyklus ermöglicht.
Wenn Ihr eingebettetes Projekt NIC enthält, senden Sie Ihren Zähler an den Remote-Computer/Server. Es scheint, dass 120.000 Iterationen in 24 Stunden etwa eine Iteration in 0,72 Sekunden sind und für den Netzwerkverkehr in Ordnung sein sollten.
Der Server hat immer den letzten Wert des Zählers gespeichert. Keine Beschädigung des Zählerwerts bei Stromausfall, da ein gültiges Paket ausgegeben werden muss, um den Wert auf dem Server zu aktualisieren; erfordert jedoch ständige Konnektivität, oder es muss ein spezielles Zeitüberschreitungsprotokoll entwickelt werden. Als Bonus können Sie Ihr Gerät bei Bedarf auch aus der Ferne steuern.
A) Verwenden Sie einen 100-µF-Kondensator (oder größer), um den Zähler während der Ausschaltzeit einzuschalten. Oder welche Logik auch immer erforderlich ist, um den Zählerwert zu halten.
B) Verwenden Sie Magnetkernspeicher , die möglicherweise etwas schwierig einzurichten sind.
C) Machen Sie ein motorgesteuertes Potentiometer (wie ein Servo), irgendwann läuft Ihr Zähler über, oder? Bilden Sie das auf 360 Grad ab. Machen Sie dann eine Rückkopplungsschleife, damit Sie den Wert des Potentiometers digital einstellen und digital ablesen können.
D) Senden Sie Ihren Zählerwert einmal pro Minute an einen oder mehrere Server und lassen Sie sie sich den Wert während der Auszeit für Sie merken. Sobald die Stromversorgung wiederhergestellt ist, rufen Sie den Zählerwert zurück.
PlasmaHH
PlasmaHH
Bryan Böttcher
Eugen Sch.
RoyC
TurboJ
dandavis