Forum: Mikrocontroller und Digitale Elektronik ATMega8: zu hoher Stromverbrauch mit Uhrenquarz


von Bartholomäus S. (sam_vdp)


Lesenswert?

Hallo,

laut Datenblatt sollte ein ATMega8 mit einem 32 kHz Uhrenquarz bei 3V
etwas über 60 uA verbrauchen (S. 249, "Active Supply Current vs. Vcc
32 kHz external Oszillator"). Allerdings komme ich bei meinen
Versuchen nicht unter ungefähr 0.2mA, was um den Faktor drei zu viel
ist.

Liegt das daran, dass es ein Quarz ist und kein Oszillator? Oder was
könnte sonst noch falsch sein?

Vielen Dank und beste Grüße,
Bartl

von Ingo H. (putzlowitsch)


Lesenswert?

Naja, vielleicht muß man, um diesen Wert zu erreichen, noch ein paar
nicht benutzte Komponenten deaktivieren.

Ich habe z.B. festgestellt, das der Analog-Komparator ein kleiner
Stromfresser ist. Ansonsten gucken, was man noch so abschalten könnte.
Mir fallen da z.B. Watchdog-Timer, ADC, interne Referenzspannungquelle
und USART ein.

Gruß
Ingo

von Ingo H. (putzlowitsch)


Lesenswert?

Achso, noch vergessen. Es gibt im Datenblatt dafür ein extra Kapitel
unter "Power Management and Sleep Modes" -> "Minimizing Power
Consumtion"

von ,,,, (Gast)


Lesenswert?

Datenblatt* S. 35/36 steht einiges dazu. Hast du das alles schon
beachtet?


*) Version 2486P–AVR–02/06

von Bartholomäus S. (sam_vdp)


Lesenswert?

Interne Komponenten habe ich leider keine an und laut Diagramm sollte
der Stromverbrauch im aktiven Modus so sein, d.h. bei voller Power ohne
Sleepmodi.

Trotzdem vielen Dank für die Tipps.

von Ingo H. (putzlowitsch)


Lesenswert?

"Interne Komponenten habe ich leider keine an"
Du hast sie also explizit beim Programmstart ausgeschaltet?
Die sind normalerweise fast alle nach einem Reset per default
aktiviert.

Oder schwingtr der Uhrenquarz eventuell auf einer Oberwelle, also gar
nicht mir 32 kHz?

von Bartholomäus S. (sam_vdp)


Lesenswert?

Explizit ausgeschaltet habe ich sie nicht, gleich mal probieren.

Die Frequenz vom Quarz kann ich nicht direkt nachmessen, aber so über
den Daumen gepeilt (Timer -> Teiler -> Blinkfrequenz), müsste es schon
passen.

von Bartholomäus S. (sam_vdp)


Lesenswert?

> Die sind normalerweise fast alle nach einem Reset per default
> aktiviert.

Ich direkt nach dem Start

WDTCR=0;
UCSRA=0;
UCSRB=0;
ADMUX=0;
ADCSRA=0;

eingefügt (sollte die von dir genannten Dinge ausschalten denke ich),
hat aber keine Veränderung gebracht.

von Ingo H. (putzlowitsch)


Lesenswert?

Oha, das kann man mit C so einfach machen?

Naja, schon komisch, das da nichts passiert.
Ich habe bisher nur in Assembler programmiert, das Ausschalten des ADC
und besonders des Komparators (60 uA bei 3V) hat bei mir schon was
gebracht.
Der Komparator wird übrigens durch setzen von Bit 7 im ACSR auf 1
ausgeschaltet.

; Konfiguration
ldi  r16, 0b10000000
out  ACSR, temp        ; Analogkomparator auschalten
ldi  r16, 0b00000000
out  ADCSRA, temp      ; ADC auschalten

von Bartholomäus S. (sam_vdp)


Lesenswert?

> *) Version 2486P–AVR–02/06
Oops, hatte 10/04. Download ist unterwegs.

Ha, ein erster Erfolg. Der ADC hat 0.1 mA gebracht. Warum man der
allerdings ausgerechnet ein Disable- statt einem Enablebit hat, versteh
ich nicht so ganz.

Beste Grüße,
Bartl

von Ingo H. (putzlowitsch)


Lesenswert?

Mist, ist so wie oben natürlich falsch :-)

.def temp = r16

; Konfiguration
ldi  r16, 0b10000000
out  ACSR, temp        ; Analogkomparator auschalten
ldi  r16, 0b00000000
out  ADCSRA, temp      ; ADC auschalten

von Ingo H. (putzlowitsch)


Lesenswert?

Es wird immer schlimmer, ich gebs auf. Ist ja schließlich fast
Feierabend :-)
Letzter Versuch:

.def temp = r16

; Konfiguration
ldi  temp, 0b10000000
out  ACSR, temp        ; Analogkomparator auschalten
ldi  temp, 0b00000000
out  ADCSRA, temp      ; ADC auschalten

von Bartholomäus S. (sam_vdp)


Lesenswert?

> Der ADC hat 0.1 mA gebracht.
AC (Komparator) mein' ich natürlich.

von Marco S. (masterof)


Lesenswert?

abo

von Ingo H. (putzlowitsch)


Lesenswert?

Nun weiß ich zwar nicht, was Bartl eigentlich vor hat, aber
möglicherweise wäre ein ATMega48(88/168) eine brauchbare alternative,
da er noch etwas mehr Stromsparpotential bietet, ansonsten aber
weitestgehend zum Mega8 kompatible ist. Als Stichworte möchte ich nur
mal interner 128 kHz Low-Power-Oszillator, System-Clock-Prescaler und
Power-Reduction-Register in den Raum werfen.

Mein "Wissen" zu diesen Dingen schöpfe ich übrigens im wesentlichen
aus diesem Thread hier:
http://www.mikrocontroller.net/forum/read-1-87197.html

Gruß
Ingo

von Bartholomäus S. (sam_vdp)


Lesenswert?

Vor hatte ich was ich eine "Zeitkapsel" nenne: Ein uC mit Display und
Solarzelle der gaaanz langsam hochzählt und nach grob 10-20 Jahren eine
vorher programmierte Nachricht "aus der Vergangenheit" anzeigt.
Batterien fallen in diesem Zeitraum aus und Solarzelle hab' ich nur
eine ganz kleine :)

Beste Grüße,
Bartl

von David W. (Gast)


Lesenswert?

Unbenutzte IOs mal auf Output schalten.

von Roland P. (pram)


Lesenswert?

Es hängt auch noch von den Fusebits ab, insbesondere von der Wakeup-time
des Taktoszillators. siehe Seite 2:
http://www.atmel.com/dyn/resources/prod_documents/doc1259.pdf

Gruß
Roland

von Jadeclaw D. (jadeclaw)


Lesenswert?

@Bartholomäus: Hmm, wenn das Teil erst in 20 Jahren wach werden soll,
dann würde ich noch was warten.
Grund:
http://www.atmel.com/dyn/corporate/view_detail.asp?FileName=picoPower_3_20.html
Quote:""picoPower Technology Slashes Power Drain to 650 nA in
Power-save & 100 nA in Power-down""
Zum Hochzählen muss er ja nicht wach sein, per Timerinterrupt
aufwecken, zählen, wieder einschlafen lassen.
Eine Longlife-Lithium-Batterie dürfte seeeehr lange halten.

Gruss
Jadeclaw.

von Ingo H. (putzlowitsch)


Lesenswert?

@Bartl
Ahja, klingt interessant und erinnert mich damit nun noch mehr an
"Chipkarte mit Textdisplay".
Dort hatten wir uns auch zu Solarzellen Gedanken gemacht, es aber dann
doch nicht weiter verfolgt.
Wie klein ist denn "ganz klein" (Deine Solarzelle)?
Das Problem bei Solarzellen ist ja irgendwie, das diese Licht
benötigen. Wo willst Du denn das Teil die 10 bis 20 Jahre aufbewahren?
Eventuell wäre so eine Isotopenbatterie (Herzschrittmacher) oder sowas
ja eine Möglichkeit :-)

Gruß
Ingo

von Bartholomäus S. (sam_vdp)


Lesenswert?

> Ahja, klingt interessant und erinnert mich damit nun noch mehr an
> "Chipkarte mit Textdisplay".
Ja mich auch. Hab' ich aber vorher nicht gekannt :) (Die Idee ist aus
Lost, nur dass die da eine Kiste vergraben hatten, was halt doch sehr
Lowtech ist ;) )

> Wie klein ist denn "ganz klein" (Deine Solarzelle)?
Ist aus nem alten Taschenrechner, 35x15mm und bringt maximal 0.2mA. Da
das ganze aber auch bei Dämmerlicht noch gehen sollte, ist es natürlich
schon ein wenig knapp.
Ich hatte es vorher mit dem internen Oszillator versucht und halt
"viel geschlafen", was vom mittleren Verbrauch auch ganz gut ging.
Allerdings hatte ich hierbei das Problem, das der uC nicht gestartet
hat, wenn der Speicherkondensator zur Versorgung langsam aufgeladen
worden ist.

> Eventuell wäre so eine Isotopenbatterie (Herzschrittmacher)
Kriegt man sowas verkauft? Und darf man die mit ein Flugzeug nehmen?
:)

Beste Grüße,
Bartl

von Bartholomäus S. (sam_vdp)


Lesenswert?

Arg, schon wieder was vergessen:
http://www.mikrocontroller.net/forum/read-1-319981.html
(mein "Startproblem")

von Bartholomäus S. (sam_vdp)


Lesenswert?

Hm, zumindest einen Teilerfolg habe ich nun zu verbuchen: Ich lege den
uC jetzt mit dem ADC Noise Reduction Modus schlafen. Damit läuft der
Aufbau aus einem 330 uF Kondensator von 3.3V auf 2.3V etwa 12.5s, was
etwa 26uA Verbrauch bedeutet, wenn ich mich nicht verrechnet habe:
Q=Q1-Q2=C*U1-C*U2=C*dU
I=Q/U=330E-6*(3.3-2.3)/12.5=26.4E-6

Allerdings läuft der uC an der Solarzelle immer noch nicht an.

Beste Grüße,
Bartl

von Simon Küppers (Gast)


Lesenswert?

In den Fusebits gibts auch noch ein paar low-takt einstellungen. da
schonmal geschaut?
und wie schon in den raum gestellt: unbenutzte I/Os auf Ausgang setzen.

von Ingo H. (putzlowitsch)


Lesenswert?

Jetz hab ich den anderen Thread gelesen, also eigentlich liegt es an dem
hohen Strom im Startmoment.
Da würde sich dann wohl tatsächlich ein Mega48 anbieten, der kann mit
128 kHz internem Low-Power-Oszillator und auf 128 eingestelltem
System-Clock-Prescaler bei 1 kHz starten, dann dürfte er ziemlich wenig
verbrauchen. Naja, würde ich zumindest annehmen.
Oder bist Du auf den Mega8 bereits festgelegt?

Gruß
Ingo

von andi (Gast)


Lesenswert?

Nimm einen MSP430 (700nA) und eine 3.6V Lithium Mignon-Zelle (2,4Ah).
Verwende nur Keramikkondensatoren und löte die Lithiumzelle ein! Das
sollte deutlich länger als 20 Jahre laufen.

von Bartholomäus S. (sam_vdp)


Lesenswert?

> Oder bist Du auf den Mega8 bereits festgelegt?
Das nicht unbedingt, aber den hab ich grade schon mal da.

> Nimm einen MSP430 (700nA) und eine 3.6V Lithium Mignon-Zelle
(2,4Ah).
Mit der 2,4Ah Zelle würde auch mein jetziger Aufbau schon 11 Jahre
gehen und der hat noch viel Einsparpotential. Allerdings ist die Frage:
Hält die Batterie selbst so lange, also bezüglich Selbstentladung usw.?

von andi (Gast)


Lesenswert?

Bei einer Entladung mit 20uA sind von den 2,4Ah noch 2Ah nutzbar.

http://www.tadiranbatteries.de/deu/downloads/LITHIUM/pdc06deuSL-860.pdf

von Lupin (Gast)


Lesenswert?

dann nimm einfach 2-4 von den teilen, die sind doch super klein.

von Marco S. (masterof)


Lesenswert?

ohne selbstentladung läuft das System ca 11 Jahre.

von Bartholomäus S. (sam_vdp)


Lesenswert?

Die Batterien sehen durchaus interessant aus. Allerdings seh ich in dem
Datenblatt nichts zum Thema Selbstentladung, oder habe ich da was
übersehen?

von andi (Gast)


Lesenswert?

Kannst du dir aus der Entladekurve oder der Verfügbaren Kapazität
ausrechnen. z.B. sind bei 25 Grad und einer Entladung mit 20uA noch 2Ah
von den 2,4Ah nutzbar. Also 0.4Ah Selbstentladung in einer Zeit von
2Ah/20uA. Das entspricht 17% in ca. 11 Jahren.

von Bartholomäus S. (sam_vdp)


Lesenswert?

Ah, ok. Vielen Dank!

von Bartholomäus S. (sam_vdp)


Lesenswert?

Ich habe jetzt am Wochenende noch ein bisschen gebastelt und
Datenblätter gewälzt und ich glaube inzwischen das Problem ist der hohe
Resetstrom den die ATMegas ziehen (1-3.5 mA beim Mega8, 0.02-0.2 mA bei
Mega48). Ich vermute dass durch den PowerOn Reset gleich wieder die
Spannung zusammenbricht. Außerdem könnte man, wenn der Resetstrom
kleiner wäre, den BrownOut Detektor verwenden (der zieht nur 10-20
uA).

Am besten wäre wohl eine externe Schaltung, die den uC erst versorgt
wenn die Spannung einen bestimmten Pegel erreicht hat und beim
Zusammenbrechen nicht gleich wieder sperrt. Hat jemand eine Idee wie
man so etwas einfach bauen könnte?

Ansonsten bleibt wohl nur eine Batterie, die man ja evtl. auch mit der
Solarzelle laden könnte.

Zu guter Letzt sehen die Picopower Controller die Jadeclaw erwähnt hat
ziemlich cool aus, insbesondere der 169P, weil ich ja eh ein Display
treiben muss. Gibt's den bei uns eigentlich schon irgendwo zu kaufen?
Laut Atmel sollte er ja seit einem Monat verfügbar sein.

Vielen Dank und beste Grüße,
Bartl

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.