Forum: Mikrocontroller und Digitale Elektronik Daten aus dem Ram retten


von Sven (Gast)


Angehängte Dateien:

Lesenswert?

Hi.

Ich bin grade dabei ein Steuermodul mit AVR zu bauen.
Das Steuermodul hat eine automatische Kalibrierungsfunktion die von Zeit 
zu Zeit ausgeführt wird. Ich möchte den Kalibrierungswert aber nicht 
mehr ständig in den eeprom schreiben, da er sich sonst zu viel abnutzt.
Der Wert soll jetzt nur noch im RAM gespeichert werden, und erst beim 
abschalten der Versorgungsspannung im eeprom gesichert werden.
Das bedeutet, der Mikrocontroller muss den Wegfall der 
Versorgungsspannung erkennen und "in den letzten Atemzügen" den Wert 
sichern.

Wie macht man sowas üblicherweise? Ich habe mir mal eine Schaltung 
überlegt, mit der ich das machen könnte.
Aber reicht diese Schaltung aus?

von Bertram S. (bschall)


Lesenswert?

Such mal nach Brown-Out Detection

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wie macht man sowas üblicherweise?
Du nimmst den AD-Wandler oder den Komparator und ermittelst, wann deine 
Spannung unter z.B. 4,5V fällt. Dann hurtig speichern, denn bei 2,7V 
kommt der BrownOut.
Der Komparator ist hier von Vorteil, weil er einen Interrupt auslösen 
kann. Aber sowohl beim Komparator wie beim ADC solltest du eine 
geeignete Referenzspannung verwenden.


> Such mal nach Brown-Out Detection
Lies mal die Aufgabenstellung... :-o

von Karl H. (kbuchegg)


Lesenswert?

> Das Steuermodul hat eine automatische Kalibrierungsfunktion die
> von Zeit zu Zeit ausgeführt wird.

Von welchen Zeitspannen reden wir?

von Sven S. (stepp64) Benutzerseite


Lesenswert?

Ich hab das so ähnlich in einer Schaltung gelößt. Allerdings würde ich 
den C vor dem Festspannungsregler noch etwas größer machen. Je größer 
der ist und je weniger Last dran hängt, um so länger hält der µC durch.

Die Dedektion habe ich nur über einen Spannungsteiler am µC 
angeschlossen. Sofern die 12V haöbwegs stabil sind, reicht das ja.

Das Programm bekommt den Spannungsabfall über einen Interrupt eines 
Komparatoreinganges mit. In der ISR schalte ich als erstes alle 
Verbraucher ab (LED, LCD, Relais etc). Dann schreibe ich die Daten (bei 
mir sogar in einen I2C-EEPROM). Die 5V liegen noch ca. 1 Sekunde an, 
bevor der µC seinen Geist aufgibt.

Brown-Out geht in diesem Falle nicht, da diese Funktion erst anspringt, 
wenn es schon zu spät ist...

Gruß
Sven

von James (Gast)


Lesenswert?

Karl Heinz hat Recht, das EEPROM kann min. 100.000 mal umprogrammiert
werden. Multipliziere das mal der dem Zeitabstand der Kalibrierungen....

Weitere Möglichkeit das EEPROM zu "schonen":
Vor dem Schreiben prüfen, ob nicht bereits der Wert "drinsteht"-
oder
prüfen ob das Schreiben erfolgreich war, und im Fehlerfall
auf Ersatzzellen umschalten. (Funktioniert bestens!)


Gruß

James

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Oder doch besser vor dem Uregler:
Die hier würde z.B. bei 10V einen Interrupt auslösen
1
   12V------o------o--------[Ureg]---- 5V
2
            |      | 
3
            |      |
4
            -      -
5
      7,5k | |    | | 
6
           | |    | |
7
            -      -         
8
            |      |    Vref
9
            |      o--------------|\ 
10
            |      |              | >--
11
            o------)--------------|/
12
            |      |    Vpowerfail
13
            -     ,--
14
      2,5k | |     ^ 2,5V
15
           | |     |
16
            -      |
17
            |      |
18
   GND------o------o-------

von Sven (Gast)


Lesenswert?

Wir reden von 10 Minuten
Im Moment führe ich die Kalibrierungsfunktion alle 10 Minuten aus. 
Natürlich könnte ich auch alles viel genauer aufbauen und mit weniger 
Toleranz arbeiten, was aber mit Mehraufwand verbunden ist.
Ich könnte auch hingehen und Kalibrierungswert nicht speichern und mit 
einen fest vorgegebenen Wert starten. Und wenn dann nach ein paar 
Minuten genug Daten da sind, den exakten Wert berechnen. Ich wäre am 
Anfang dann halt etwas ungenauer.

Wenn ich mir den letzten Wert speicher bin ich gleich wieder relativ 
genau.
Im Moment schreibe ich sofort in den eeprom, deswegen mache ich mir 
Sorgen, ob ich ihn nicht zu stark beanspruche.

von Uhu U. (uhu)


Lesenswert?

Wenn du den EEPROM alle 10 minuten beschreibst, wird er ca 19 Jahre 
durchhalten.

von Karl H. (kbuchegg)


Lesenswert?

Uhu Uhuhu schrieb:
> Wenn du den EEPROM alle 10 minuten beschreibst, wird er ca 19 /Jahre/
> durchhalten.

(Hast du das 24/7/52 gerechnet?)

Wobei das die vom Hersteller garantierte Mindestbetriebsdauer ist.
Meist halten die Dinger länger.

von Uhu U. (uhu)


Lesenswert?

Karl heinz Buchegger schrieb:
> Uhu Uhuhu schrieb:
>> Wenn du den EEPROM alle 10 minuten beschreibst, wird er ca 19 /Jahre/
>> durchhalten.
>
> (Hast du das 24/7/52 gerechnet?)

Sorry, hab mich um einen Faktor 10 verpeilt. Es sind nur 1,9 Jahre :-(

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.