Erkennen von Stromausfällen in einem Mikrocontroller, um Kontext zu speichern

Ich versuche, einen plötzlichen Stromausfall in meinem Mikrocontroller zu erkennen, um seinen Zustand zu speichern, bevor die MCU stirbt. Ich habe darüber nachgedacht, einen meiner GPIO-Pins zu verwenden, um die Versorgungsspannung zu erkennen, und einen großen Kondensator (mit einer Diode, um die Rückspeisung in den GPIO zu stoppen) zu verwenden, um genügend Zeit zu haben, um den Zustand zu speichern. Unten ist mein Lösungsvorschlag.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Hinweis - Meine Brownout-Spannung beträgt 2,1 V und die Blackout-Spannung 1,67 V. Ich habe eine Last im 5-V-Bereich gezeigt, um einige Relais und LEDs darzustellen, die mit 5 V betrieben werden (nicht sicher, ob dies relevant ist). Auch die 10uF und 22uF werden für AMS1117 benötigt und 100nF ist ein Entkopplungskondensator.

Meine Fragen sind

  • Ist dies der beste Ansatz für solche Fälle?
  • Ist es besser, ADC-Pins anstelle von GPIO zu verwenden?
  • Ist IN4007 die richtige Diode, um die Rückwärtsspeisung zu stoppen (3,3 V, maximale Last beträgt 470 mA)?
  • Irgendwelche anderen Vorschläge / Verbesserungen an der Schaltung?
Wo hast du einen 2-Kilofarad-Kondensator gefunden?
@Finbarr Danke für den Hinweis. Ich habe es korrigiert.
Ich bin mir nicht sicher, wie groß Ihre Kappe ist, aber die einzige Möglichkeit, dies vor einiger Zeit zum Laufen zu bringen, war eine Kappe auf 12 V, ein Dollar auf 3,3 V und ein Teiler, der die 12 V auf 3 V in den analogen Eingang leitet. Als der A0 unter 2,7 fiel, schrieb ich ungefähr 32 Bytes an SPIFFS mit ungefähr 90% Erfolg. Wenn Sie ein WLAN ein- und ausschalten möchten, benötigen Sie eine größere Kappe als meine 3300. Ich wollte es mit 5v 4f-Kappen erneut versuchen, habe es aber noch nicht getan.
Beachten Sie, dass viele MCUs (zumindest die Atmels, die ich kenne) bereits einen Brown-Out-Detektor bieten.

Antworten (1)

Das Datenblatt des AMS1117 zeigt, dass es eine Dropout-Spannung von maximal 1,3 V über der Ausgangsspannung hat.
Als Stromausfallanzeige müssen Sie erkennen, wenn die 5-V-Versorgung auf 4,3 V oder weniger abfällt. Nach diesem Punkt beginnt Ihr AMS1117-Ausgang möglicherweise zu fallen. Sie haben die Brownout-Spannung auf Ihrer MCU nicht angegeben und möchten sicherstellen, dass Sie Zeit haben, den Zustand vor dieser Spannung zu speichern.

Ich würde vorschlagen, dass Sie den Erkennungsmechanismus auf eine höhere Spannung an der 5-V-Versorgung einstellen sollten, da er bei etwas unter 4,7 V wahrscheinlich eindeutig außerhalb der Spezifikation liegt.

Das Erhöhen der Kapazität an der 3,3-V- oder 5-V-Versorgung kann zusätzliche Zeit bringen, aber eine Diode in Reihe mit dem AMS1117 zu schalten, wäre eine schlechte Idee, da es einfach die 3,3 V verringert, die an die MCU geliefert werden.

Mein Vorschlag wäre, einen Brownout-Detektor wie den TC54VX42 oder 43 mit einem externen Teiler von der 5-V-Versorgung zu verwenden, um Ihre Erkennungsschwelle einzustellen. Sie zeigen Ihnen im Datenblatt genau, wie Sie es einrichten:Geben Sie hier die Bildbeschreibung ein

Wenn Sie zusätzliche Kapazität hinzufügen möchten, um eine zusätzliche Reaktionszeit zu erzielen, fügen Sie sie der 5-V-Versorgung oder dem ungeregelten Eingang hinzu ... nicht der AMS1117-Versorgung.

Ich habe jetzt meine Brownout- (2,1 V) und Blackout- (1,67 V) Spannung zu meiner Frage hinzugefügt. Ich habe eine Last an meiner 5-V-Seite und würde der Kondensator sie ohne Diode während des Stromausfalls nicht speisen? Meine Annahme war, dass die Diode dies blockiert und die Kondensatorladung nur für meine MCU verfügbar ist. Auf diese Weise dachte ich, ich könnte den Kondensator kleiner machen. Ich finde es auch schwierig, TC54 zu beschaffen, können Sie daher etwas mit gängigen Komponenten empfehlen?
Unter der Kategorie PMIC-Supervisors auf Digikey stehen buchstäblich Tausende zur Auswahl: digikey.com/products/en/integrated-circuits-ics/… ... sollten Sie keine Probleme haben, eine geeignete Lösung zu finden.
Wie sieht es mit der Diode aus? Ich hoffe, die Erkennung der Spannung vor der Diode wird besser sein, da sie den Kondensator isoliert?