Stromaufnahme Attiny Eeprom/Flash schreiben

OP #3652093
Lesenswert?

Liebe Leute,

ich versuche mich gerade mit einem Attiny84A an einem 
Betriebsstundenzähler, der auch die Intensität des Geräteeinsatzes 
aufzeichnet. Anbei der Schaltplan. Ich dachte daran, die mit dem 
Magnetometer grob gemessenen Stromverbräuche in 160ms-Taktschritten zu 
messen und in uint32_t aufzusummieren. Ich plane je einen Zähler für 
0-10W, 10-20W, 20-40W, ..., 1280-2560W, >2560W, also insgesamt 10 Zähler 
á 4 Byte. Dazu kommt noch ein Good-Byte und ein uint16_t Zähler der 
Schreibvorgänge, also insgesamt 43 Byte.

Diese Verbräuche müssen nun spätestens beim Abschalten des Geräts 
gespeichert werden. Dazu messe ich die Versorgungsspannung alle 250us 
und reagiere, sobald diese unter 2.65V fällt, indem ich die alle 
Peripherie abschalte, die Taktrate auf 500kHz senke, und dann die 
Verbräuche abspeichere.

Nun beobachte ich bei meinen 200uF Pufferkondensatoren, dass nach 
Reduktion des Verbrauchs ohne Schreiben ins Eeprom die Spannung 
innerhalb von 70ms (die Zeit zum Eeprom-Schreiben von 43 Byte wenn man 
den Erase schon vorher gemacht hat) nur von 2.65V auf 2.4V fällt, mit 
Schreiben ins Eeprom die Spannung allerdings innerhalb von 55ms von 
2.65V auf 1.75V fällt, woraufhin der Attiny in den Brownout geht.

Daher meine Frage: Wo ist die Stromaufnahme des Attiny für das 
Programmieren des Eeprom spezifiziert? Kann ich eine Eeprom-Page (4 
Byte) in einem Rutsch beschreiben? Machte es eventuell Sinn, die Daten 
stattdessen im Flash (trotz geringerer Anzahl Schreibzyklen) abzulegen 
(4.5ms pro 32 words = 64 bytes), und wie hoch wäre der spezifizierte 
Strombedarf beim Programmieren des Flash?

LG, Sebastian
Angehängte Dateien:
Gast #3652113
Lesenswert?

> 200uF [..] 70ms [..] von 2.65V auf 2.4V [..] 55ms von
2.65V auf 1.75V [..]

..also grob 0.8mA beim Nichtstun und etwa 3.6mA beim EEPROM-Schreiben. 
Klingt plausibel. Also den Elko vergrößern, ggf. einen eigenen 
Pufferelko für den µC verbauen und den Rest per Diode abklemmen.
Gast #3652116
Lesenswert?

Alles abschalten ist schonmal eine gute Idee,aber ob man wirklich soweit 
runtertakten muss müsste man mal prüfen. In der Regel ist es egal ob man 
lange wenig Strom oder kurz mehr Strom verbrät ;) Bei geringem Takt 
haben dann nur andere Verbraucher mehr Zeit den Puffer leer zu ziehen.

Sind die Eeprom Schreibzeiten beim Tiny unabhängig vom Clock? Dann wäre 
langsam takten vielleicht eine Idee,obwohl es sicher auch eine Weile 
dauert bis der langsame Takt stabil genutzt werden kann...
OP #3652133
Lesenswert?

g457 schrieb:
> ..also grob 0.8mA beim Nichtstun und etwa 3.6mA beim EEPROM-Schreiben.
> Klingt plausibel. Also den Elko vergrößern, ggf. einen eigenen
> Pufferelko für den µC verbauen und den Rest per Diode abklemmen.

Diese 100uF SMD-1206 MLCC's 
(http://de.mouser.com/Search/ProductDetail.aspx?R=JMK316ABJ107ML-Tvirtualkey57660000virtualkey963-JMK316ABJ107ML-T) 
sind allerdings relativ teuer, und 1210 wird auch nicht viel günstiger. 
Das Ganze soll ausserdem hinterher immer noch in einen Schuko-Stecker 
passen.

Rest abklemmen hilft auch nicht weiter, der NRF24L01+ wird eh schon über 
einen Pin mit VCC versorgt und beim Fall der Versorgungsspannung als 
erstes abgeklemmt, der HMC5883L wird auch in den Idle-Mode versetzt 
(5uA), da bleibt nur der Attiny84a über.

LG, Sebastian
OP #3652141
Lesenswert?

hmm... schrieb:
> Sind die Eeprom Schreibzeiten beim Tiny unabhängig vom Clock? Dann wäre
> langsam takten vielleicht eine Idee,obwohl es sicher auch eine Weile
> dauert bis der langsame Takt stabil genutzt werden kann...

Ja, 1.8ms pro Byte beim vom Erase gesplitteten Write, sowohl nach 
Datenblatt als auch beobachtet. Das Runtertakten geschieht mittels 
CLKPR, dem internen Prescaler, also ohne Wartezeit.

LG, Sebastian
Gast #3652142
Lesenswert?

> Diese 100uF SMD-1206 MLCC's [..] sind allerdings relativ teuer

ich hatte da eher sowas [0] aufm Taschenrechner stehen - wär sogar 
billiger.

> Das Ganze soll ausserdem hinterher immer noch in einen Schuko-Stecker
> passen.

Die gibts auch in groß, nennt sich dann Wandwarze.

Wenns platzmäßig vorn und hinten nicht passen will: Schon mal über einen 
batteriegestützen SRAM nachgedacht? Wär allerdings auch nicht unbedingt 
billig(er).

HTH

[0] http://de.mouser.com/Search/Refine.aspx?Keyword=UVZ0J222MPD
#3653067
Lesenswert?

Etwas abseits der Frage aber noch immer Problembezogen.

Ich würde die Daten umstrukturieren. Beispielsweise kann man die 16 
höherwertigen Bits bei jeder Änderung sofort speichern. Da dies immer 
nur dann geschieht, wenn die unteren 16 bits überlaufen, kommen nur 
wenige Schreibvorgänge extra, im Mittel ca. alle drei Stunden ein 
Schreibvorgang. Dafür wird im Austausch beim Abschalten die zu 
schreibende Datenmenge ungefähr halbiert und somit die Zeit und 
notwendige Kapazität des Kondensators reduziert.

Natürlich sind auch andere Unterteilungen zwischen in Echtzeit und 
verzögert geschriebenen Daten denkbar.
#3653307
Lesenswert?

Oder man speichert generell Zyklisch und lebt einfach damit, daß pro 
Ausschaltvorgang durchschnittlich ein halber Zyklus fehlt. Wenn die 
Zykluszeit in einem sinnvollen Verhältnis zur Dauer eines üblichen 
Arbeitsganges steht, sind die dadurch verursachten Abweichungen oft 
vertretbar, je nachdem wie genau es werden soll.
OP #3653345
Lesenswert?

Carsten R. schrieb:
> Ich würde die Daten umstrukturieren. Beispielsweise kann man die 16
> höherwertigen Bits bei jeder Änderung sofort speichern. Da dies immer
> nur dann geschieht, wenn die unteren 16 bits überlaufen, kommen nur
> wenige Schreibvorgänge extra, im Mittel ca. alle drei Stunden ein
> Schreibvorgang. Dafür wird im Austausch beim Abschalten die zu
> schreibende Datenmenge ungefähr halbiert und somit die Zeit und
> notwendige Kapazität des Kondensators reduziert.

Gute Idee, das könnte helfen.

Carsten R. schrieb:
> Oder man speichert generell Zyklisch und lebt einfach damit, daß pro
> Ausschaltvorgang durchschnittlich ein halber Zyklus fehlt. Wenn die
> Zykluszeit in einem sinnvollen Verhältnis zur Dauer eines üblichen
> Arbeitsganges steht, sind die dadurch verursachten Abweichungen oft
> vertretbar, je nachdem wie genau es werden soll.

Das eher nicht. Interessant für die Wartung sind ja gerade die Zeiten 
höherer oder gar extremer Verbräuche, selbst wenn sie kurz sind.

Ich habe jetzt mal alternativ das Speichern im Flash ausprobiert. Ich 
kann den Erase ja wieder schon beim hochfahren machen, so dass ich beim 
Powerdown nur boot_page_fill und dann einmal boot_page_write für eine 
ganze SPM_PAGESIZE von 64 Byte brauche. Der Vorgang ist in 5ms erledigt 
(in der Zeit könnte ich nur 3 Bytes ins Eeprom schreiben). Die Spannung 
fällt dabei von 2.68V auf 2.4V (sind das tatsächlich 9mA? Das passt aber 
nicht zum Datenblatt Figure 21-129???). Ich benutze zyklisch 16 Pages, 
also 1k vom Flash, so dass ich also garantiert 160000 Abschaltvorgänge 
überlebe. Ich könnte einen der 100uF (60ct) sogar durch einen 22uF (9ct) 
ersetzen und käme immer noch perfekt hin.

LG, Sebastian
OP #3653367
Lesenswert?

Hallo Franz,

Franz Pürstinger schrieb:
> Für deine Anwendung würde ich Fram verwenden.
> Sehr geringer Stromverbrauch und wesentlich schneller als ein Eeprom.

Interessant, danke für den Tipp, kannte ich noch nicht. Zum Beispiel 
http://www.cypress.com/?docID=47756. Allerdings aber a) eine weitere 
zusätzliche Komponente mit >18mm² plus Leitungsführung, b) >1 Euro.

LG, Sebastian
#3653381
Lesenswert?

Sebastian Wangnick schrieb:
> Das eher nicht. Interessant für die Wartung sind ja gerade die Zeiten
> höherer oder gar extremer Verbräuche, selbst wenn sie kurz sind.

Was stark vom Nutzungsprofil abhängig ist. Ist es denn zu erwarten das 
unmittelbar vor dem Ausschalten, also im letzten noch nicht 
gespeicherten Zyklus, extreme oder zumindest hohe Lastbedingungen die 
Regel sind?

Wenn ich beispielsweise mit einer Hilti arbeite, liegt die bei mir in 
der Regel doch schon einige Minuten herum bevor ich sie Ausstöpsel und 
einpacke. Wenn ich ein Gerät Beispielsweise durchschnittlich 3 Stunden 
am Stück brauche und alle 5 Minuten speichere, so würde ich im Mittel 
2,5 Minuten der 3 Stunden an Daten verlieren und zwar gerade die letzten 
Minuten und nicht irgendwelche.

Sebastian Wangnick schrieb:
> Ich benutze zyklisch 16 Pages,
> also 1k vom Flash, so dass ich also garantiert 160000 Abschaltvorgänge
> überlebe. Ich könnte einen der 100uF (60ct) sogar durch einen 22uF (9ct)
> ersetzen und käme immer noch perfekt hin.

Das ist schon eine Art wear leveling. Aber die 160000 sind nicht 
garantiert. Es gibt auch Montagszellen. Man kann aber im Durchschnitt 
erwarten daß diese Größenordnung ungefähr eingehalten wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren