wie man einen Stromausfall erkennt und den Mikrocontroller dazu bringt, Daten im EEPROM zu speichern

Ich verwende Arduino Nano für ein Projekt, bei dem ich einen Zähler habe, der kontinuierlich zunimmt. Und ich möchte nach einem Stromausfall zählen. Daten ändern sich häufiger, daher ist das kontinuierliche Speichern im EEPROM keine Option, da das EEPROM eine Begrenzung des Lösch-/Schreibzyklus hat. Außerdem sind die Daten maximal 4 Byte groß.

Kann bitte jemand einen IC oder ein Schaltungsdesign vorschlagen, das einen Stromausfall erkennen und Arduino unterbrechen kann, damit es Daten im EEPROM speichern kann.

Ich denke, ich muss einen Kondensator verwenden, um Arduino mit Strom zu versorgen, nachdem der Strom ausgefallen ist, damit Arduino Daten im EEPROM speichern kann.

(1) „ Und ich möchte nach einem Stromausfall weiter zählen. “ Sollte dies lauten: „Ich möchte nach einem Stromausfall zählen“? (Die Art und Weise, wie Sie es geschrieben haben, legt nahe, dass Sie Impulse zählen möchten, nachdem die Stromversorgung entfernt wurde.) (2) Haben Sie herausgefunden, wie lange Sie in das EEPROM schreiben müssen? Machen Sie dies zu Ihrer Angabe für die Verlängerungszeit in Ihrer Frage.
Muss Leistungsanforderungen spezifizieren: Ein, Aus (in Flash schreiben) V, I, t, Fehler-V-Schwellenwert und somit Standby-Energiespeicher Q=CV oder Vbat nicht-voltativ für Poff-Dauer Schlafmodus. Sobald diese V, I, T-Dauern definiert sind, wählen Sie C oder cell batt (zwei verschiedene Methoden)
Angenommen, dies ist ein Bastlerprojekt, könnten Sie einen externen FRAM- oder MRAM-Speicher erwerben und dann so oft schreiben, wie Sie möchten. Zum Schutz vor Stromausfällen während des Schreibens besteht die einfachste Lösung darin, eine ausreichend große Reservekappe für die Versorgung vorzusehen.

Antworten (3)

Dies ist das Prinzipdiagramm , das Sie benötigen. Die Werte für R1 und R2 hängen von der Versorgungsspannung und der maximalen Eingangsspannung Ihrer CPU-Pins ab.
Der Wert von C1 hängt davon ab, wie viel Strom Ihre Schaltung verbraucht und wie lange Sie die Leistung aufrecht erhalten müssen und auf welchem ​​​​Niveau. Das Hinzufügen eines Reglers nach dieser Kappe kann Ihre Zeit erheblich verkürzen, sodass Sie kleinere Kondensatoren verwenden können.
Um den Wert von C (Ihre naheliegende nächste Frage) zu berechnen, benötigen wir alle Daten, die Tony Steward verlangt.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Ich bin mir nicht sicher, wie viel Strom mein Projekt verbraucht. Aber ich verwende eine Lesehexe, ein 16 * 2-LCD und ein Relais. Auf dieser Grundlage können Sie also abschätzen, wie viel Strom mein Projekt benötigen wird. Ich weiß, dass die Hintergrundbeleuchtung im LCD so viel Strom verbraucht, dass ich die LCD-Hintergrundbeleuchtung über eine direkte Stromquelle mit Strom versorge, anstatt den Ausgang des Kondensators mit Strom zu versorgen. Das LCD wird also ausgeschaltet, sobald der Strom ausfällt, was Arduino mehr Strom gibt, nachdem der Strom ausgefallen ist.
Ich bin mir nicht sicher, ob ich Ihre Schreibweise von "Prinzip" korrigieren soll. Meinst du, es ist ein Diagramm des Funktionsprinzips, wie es funktioniert, in diesem Fall klingt das Englisch etwas klobig. Oder meinen Sie, es ist das erste, das Hauptdiagramm, das Sie benötigen, bevor Sie es für die Besonderheiten der Anwendung verfeinern, in diesem Fall ist das Englisch in Ordnung, nur die Rechtschreibung ist falsch. Da Sie sich die Mühe gemacht haben, es fett zu setzen, wäre es schön, wenn die richtige Bedeutung richtig geschrieben wäre.
Ich sehe, wo du herkommst. Prinzip ist das Wort, das ich verwenden wollte. (Ich kenne den Unterschied, da meine Job-Kachel "Hauptingenieur" ist, aber es hätte leicht ein Rechtschreibfehler sein können). Da ich kein Muttersprachler bin, können Sie gerne das klobige Englisch korrigieren :-)
Ich glaube nicht, dass es so funktioniert, wie Sie es wünschen, wenn nichts anderes von der Stromversorgung gespeist wird und vor der Diode ein Kondensator vorhanden ist, bleibt die Stromversorgung +0,6 V über der CPU-VCC. Die Stromausfallerkennung wird niemals einen niedrigen Logikpegel haben. Vielleicht mit ADC lesen, aber es wird eine VCC-unabhängige ADC-Referenz benötigt.
Das wird aber nicht vernünftig funktionieren, da man beim zyklischen Schreiben auf ein Eeprom im schlimmsten Fall dieses irgendwann löschen muss. Dann muss die Zeit von der Spannungsverlusterkennung bis zum Einsetzen der MCU-Brownout-Erkennung größer sein als die Lösch-/Schreibzeit des Eeproms. Überhaupt kein ideales Design. Enge Kopplung zwischen allem: Stromverbrauch, Cap-Wert, EEPROM-Schreib-/Löschzeit und MCU-Brownout-Spannungspegel.

Sie können einen Kondensator und einen 3-poligen Spannungswächter für das Power-Good-Signal verwenden. Hier sind einige Beispiele von Texas Instruments.

Wie Oldfart und Tony betonten, müssen Sie die Spannung und den Stromverbrauch für weitere Details angeben.

Achtung, der Stromverbrauch ist höher beim Schreiben auf eeprom.

Ich nehme an, Sie versuchen, eine Art irreversiblen Zähler zu erstellen, also sind hier einige Ratschläge:

  • Machen Sie eine Art Backup, die Daten im Eeprom werden vor dem Schreiben gelöscht, so dass Sie, wenn etwas passiert, einen höheren Wert als den echten erhalten. Sie können alle Bits als Eprom-Wert invertieren, um FFFFFFFF auf 00000000 zu verringern
  • Fügen Sie eine Prüfsumme hinzu, um die Datenintegrität zu überprüfen.
  • Auch wenn es nicht ausgeschaltet ist, schreiben Sie den Wert von Zeit zu Zeit in das EEPROM, um im Fehlerfall einen aktuellen Wert zu haben.
  • Um das Lösch-/Schreiblimit zu erhöhen, verwenden Sie viele Stellen statt einer, beim Einschalten den höchsten Wert lesen, beim Ausschalten den niedrigsten Wert überschreiben. Wenn Sie 16 Standorte verwenden, haben Sie eine 16-mal höhere EEPROM-Ausdauer.

Hier ist eine alternative Lösung, die ich in der Vergangenheit für dieses Problem verwendet habe.

  1. Schreiben Sie das Eeprom nur alle 10 Zyklen oder alle 100 oder was auch immer. Für meine Anwendung war es kein Problem, bei Stromausfall ein paar Zählungen zu verlieren.

  2. Schreiben Sie an viele Eeprom-Standorte, um den Verschleiß zu verteilen. Sie verwenden wahrscheinlich nicht Ihr gesamtes Eeprom. Sie können also beispielsweise 20 Variablen zum Speichern zuweisen. Schreiben Sie nacheinander auf sie, und verwenden Sie beim Booten einfach den größten Wert. Dadurch erhalten Sie sofort die 20-fache Langlebigkeit.

Es gibt andere Tricks, die Sie je nach Medium anwenden können. Beispielsweise können Sie mit Flash möglicherweise dieselbe Adresse mehr als einmal zwischen den Löschvorgängen schreiben.