Forum: Mikrocontroller und Digitale Elektronik Stromaufnahme Attiny Eeprom/Flash schreiben


von Sebastian W. (wangnick)


Angehängte Dateien:

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

von g457 (Gast)


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.

von hmm... (Gast)


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...

von Sebastian W. (wangnick)


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

von Sebastian W. (wangnick)


Angehängte Dateien:

Lesenswert?

Sebastian Wangnick schrieb:
> Das Ganze soll ausserdem hinterher immer noch in einen Schuko-Stecker
> passen.

Zur Erklärung: Das Board soll 18mmx22mm gross werden, siehe Anhang.

LG, Sebastian

: Bearbeitet durch User
von Sebastian W. (wangnick)


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

von g457 (Gast)


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

von Sebastian W. (wangnick)


Lesenswert?

Sebastian Wangnick schrieb:
> da bleibt nur der Attiny84a über.

Es ist allerdings so, dass C3 und C4 vor dem Regler IC1 sitzen, also 
auf der 5.6V-Seite. Die beiden sind also bei 2.65V schon mehr als 50% 
entladen. Dazu kommen noch eventuelle Regler-Verluste -- allerdings kann 
ich auf dem Oszi kaum einen Spannungsabfall über den Regler erkennen.

LG, Sebastian

von Sebastian W. (wangnick)


Lesenswert?

Sebastian Wangnick schrieb:
> Wo ist die Stromaufnahme des Attiny für das
> Programmieren des Eeprom spezifiziert?

Ok, habs gefunden: "Figure 21-129. Programming Current vs. VCC", 
zwischen 0.6mA (bei 1.8V) und 1.4mA (bei 2.5V) bei 25°C, unter 1mA bei 
85°C. Gilt wohl für Eeprom wie Flash gleichermassen?

LG, Sebastian

von Carsten R. (kaffeetante)


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.

von Franz P. (fxturbo)


Lesenswert?

Hallo Sebastian
Für deine Anwendung würde ich Fram verwenden.
Sehr geringer Stromverbrauch und wesentlich schneller als ein Eeprom.

Gruss Franz

von Carsten R. (kaffeetante)


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.

von Sebastian W. (wangnick)


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

von Sebastian W. (wangnick)


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

von Carsten R. (kaffeetante)


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.

von Carsten R. (kaffeetante)


Lesenswert?

Man kann auch bei 0 Watt Messwert einen Autosafe hinzufügen. Meistens 
schaltet man das Gerät vor dem Ausstöpseln ab, es sei den das Kabel 
verheddert sich und stöpselt sich selber aus oder so.

von Seppi (Gast)


Lesenswert?

UUUUUUUUUUUUUUUUiiiiiiiiiiiiii. Keine Netztrennung !!!

von Sebastian W. (wangnick)


Lesenswert?

Seppi schrieb:
> UUUUUUUUUUUUUUUUiiiiiiiiiiiiii. Keine Netztrennung !!!

Doch. Die ganze Platine kommt wie gesagt in einen Schuko-Stecker, 
insofern ist der Benutzer von der Netzspannung auf der Platine getrennt.

DIe Platine wird ausserdem nach der Bestückung mit Isolierlack behandelt 
und/oder mit einer Silikonhülle umspannt.

LG, Sebastian

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.