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 Status des letzten Zählers speichern und ihn beim nächsten Start wieder laden. Damit hatte ich vor, ein EEPROM zu verwenden, in das ich kontinuierlich meinen Zählerwert schreibe. Aber ich habe irgendwo gelesen, dass das EEPROM eine Lese- / Schreibdauer von ungefähr 100.000 hat, und ich werde diesen Zähler wahrscheinlich 120.000 pro 24 Stunden aktualisieren. Ich finde also Alternativen, um diese Aufgabe zu erfüllen. Bitte geben Sie mir Ihren Vorschlag, dasselbe zu tun.
8
Antworten:
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 Ihrer Beschreibung ähnelt:
MSP430 mit FRAM-Sicherungsstatus bei Stromausfall
Hier ist der Wikipedia-Artikel zu FRAM: FRAM
quelle
Ich habe dieses Problem in einem aktuellen Projekt.
Ich gehe damit um, indem ich den Live-Wert des Zählers im RAM behalte. Ich habe ein wenig Hardware hinzugefügt, damit der Mikrocontroller erkennen kann, dass die rohe Eingangsspannung niedrig ist. Wenn ja, stoppt es, was es tut, speichert den Live-Zählerwert im EEPROM und wartet dann auf die Überwachung der Rohstromspannung. Wenn es mit einer gewissen Hysterese wieder hochgeht, startet das Mikro im Wesentlichen neu. Andernfalls wird das Mikro schließlich gestoppt, wenn die Stromversorgung weiter ausfällt. 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 zu erkennen, dass die Spannung niedrig wird, und dennoch über eine ausreichende garantierte Laufzeit, bevor die Stromversorgung des Mikros den Betriebs- oder EEPROM-Schreibschwellenwert unterschreitet.
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 der Endversorgung des Mikros beobachten sollten, nicht direkt die Netzspannung des Mikros. Wenn letzteres sinkt, kann es zu spät sein. Hoffentlich gibt es einen Spannungsbereich, der unter dem schlechtesten Fall liegt, wenn alles richtig 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 Buck-Regler, der mit 48 V gespeist wurde. Es gibt also einen großen Bereich, der unter dem Normalwert liegt, in dem das Mikro jedoch immer noch zuverlässig arbeiten kann.
quelle
Alte alte alte Lösung, cmos Zähler + Lithiumbatterie oder Ram + Lithiumbatterie.
Die Stromversorgung für das Speicherelement erfolgt über die normale Stromversorgung, wenn diese verfügbar ist, oder über die Batterie, wenn sie nicht verfügbar ist.
Viele moderne Mikros im Schlaf behalten ihren Zustand mit einer sehr geringen Stromversorgung bei. Sie können diese Technik also mit Power-Down-Erkennung 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.
quelle
Der Mikrochip besteht aus einer Reihe von I 2 C "EERAM" -Teilen, mit denen Daten im SRAM gespeichert und bei Stromausfall in das EEPROM (unter Verwendung der in einem Kondensator gespeicherten Energie) geschrieben und bei Rückkehr der Stromversorgung geladen werden können. Dies scheint perfekt für Ihre Anwendung zu sein.
Ein repräsentatives Beispiel für diese Teile ist der 47L04 .
quelle
Eine andere Lösung.
Erkennen Sie den Stromausfall und verwenden Sie eine Super- oder Nicht-Super-Kappe, um den Strom für einige Millisekunden hochzuhalten. Verwenden Sie diese Zeit, um Ihren Zählerwert in das EPROM zu schreiben. Schreiben Sie nur beim Ausschalten in das EPROM. Anzahl der EPROM-Zyklen = Anzahl der Ausschaltzyklen.
quelle
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 batteriegepuffertes SRAM-Modul (NVRAM) verwenden. Zum Beispiel M48Z02-150PC1
https://www.mouser.com/ds/2/389/m48z02-955115.pdf
quelle
Ich habe mich für "ds1307 RTC" entschieden. Weil es 54 Byte Power-Backed-SRAM hat. Dies ermöglicht einen unendlichen Lese- / Schreibzyklus.
quelle
Wenn in Ihrem eingebetteten Projekt eine Netzwerkkarte vorhanden ist, senden Sie Ihren Zähler an einen Remotecomputer / Server. Es scheint, dass 120.000 Iterationen in 24 Stunden ungefähr eine Iteration in 0,72 Sekunden sind und für den Netzwerkverkehr in Ordnung sein sollten.
Auf dem Server wird immer der letzte Wert des Zählers gespeichert. Keine Zählerwertbeschädigung bei Stromausfall, da ein gültiges Paket ausgegeben werden muss, um den Wert auf dem Server zu aktualisieren. erfordert jedoch eine konstante Konnektivität, oder es muss ein spezielles Timeout-Protokoll entworfen werden. Als Bonus können Sie Ihr Gerät außerdem bei Bedarf von der Fernbedienung aus steuern.
quelle
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) Verwendung Magnetkernspeicher , könnten sie ein wenig sein iffy bis zu setzen.
C) Machen Sie ein motorgesteuertes Potentiometer (wie ein Servo), irgendwann läuft Ihr Zähler über, oder? Ordnen Sie das 360 Grad zu. Erstellen 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 diese den Wert für Sie während der Ausschaltzeit speichern. Sobald die Stromversorgung wieder hergestellt ist, holen Sie den Zählerwert zurück.
quelle