Forum: Mikrocontroller und Digitale Elektronik Stromverbrauch RC-Oszillator vs Quarz vs Resonator (AVR)


von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Hallo Forum,

ich habe mich gefragt, wie viel Strom ein Atmel mit Quarz braucht und ob 
der interne RC-Oszialltor nicht sparsamer ist. Genauso habe ich mal 
gehört, ein Resonator sei sparsamer als ein Quarz. Wobei andere dann 
meinten er spart nur deshalb, weil er schneller anschwingt und man 
desshalb früher wieder schlafen kann.

Kurz: ich habe einige Messungen gemacht und möchte die Messwerte hier 
teilen, vielleicht interressiert es ja jemanden.

Versuchsaufbau:
Gemessen wurde ein ATMEGA 48PA-PU mit gesetzter CLKDIV8-Fuse, d.h. mit 
einem CPU-Takt von 1 MHz auf einem Steckbrett.
Als Programm lief eine Endlosschleife mit LED-Blinker (delay_ms(2500); 
an; delay_ms(2500); aus;). Die Anode der LED ging über einen Widerstand 
an VS, der LED-Strom wurde aber nicht mitgemsessen.
Gemessen wurde der Stromverbrauch bei 3,3 und 5 V, die am Netzgerät (ELV 
PPS 5330) eingestellt wurden. Die Spannungsversorgung des Atmels wurde 
mit einem einzelnen Keramikkondensator gepuffert (kein Elko). Der Strom 
wurde mit einem Multimeter (Metex M 3800) gemessen.
Genauigkeitswunder sind also nicht zu erwarten, die Größenordnungen 
dürften aber stimmen.

Messergebnisse:
1. interner RC-Oszillator (SUT_CKSEL: 
INTRCOSC_8MHZ_6CK_14CK_65MS_DEFAULT)
  3,3 V:  1,17 mA
  5,0 V:  4,45 mA


2. SMD-Resonator (Reichelt CSTCE 8,00)
a) normal (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
  3,3 V:  1,22 mA
  5,0 V:  3,89 mA

b) Full Swing (SUT_CKSEL: EXTFSXTAL_1KCK_14CK_65MS)
  3,3 V:  1,61 mA
  5,0 V:  4,76 mA

3. SMD-Quarz (Reichelt  8,000000-MQ)
a) normal (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
  3,3 V:  1,25
  5,0 V:  4,04

b) Full Swing (SUT_CKSEL: EXTFSXTAL_1KCK_14CK_65MS)
  3,3 V:  1,65 mA
  5,0 V:  4,91 mA

4. externer Oszillator (Reichelt XO91 8,00000)
a) Clock extern an XTAL1 (SUT_CKSEL: EXTCLK_6CK_14CK_65MS)
   3,3 V:  2,30 mA

b) interner RC-Oszillator als Clock + externer Oszillator an XTAL1 
(SUT_CKSEL: INTRCOSC_8MHZ_6CK_14CK_65MS_DEFAULT)
  3,3 V:  2,39 mA

c) interner RC-Oszillator als Clock + externer Oszillator, aber nicht 
angeschlossen (SUT_CKSEL: INTRCOSC_8MHZ_6CK_14CK_65MS_DEFAULT)
  3,3 V:  1,93 mA


Ich ziehe daraus 3 Schlüsse:
1. RC-Oszillator, Quarz oder Resonator macht vom Stromverbrauch kaum 
einen Unterschied
2. Überrascht hat mich der deutlich höhere Stromverbrauch bei 5V. Ich 
hatte einen linearen Zusammenhang zwischen Spannung und Strom erwartet.
3. Der externe Oszillator braucht angeschlossen nur 1,2 mA mehr als ein 
Quarz, ohne Last sogar nur 0,8 mA. Das ist deutlich weniger als im 
Datenblatt angegeben (15mA).

von Pandur S. (jetztnicht)


Lesenswert?

Hast du schon mit dem Datenblatt des Herstellers verglichen ?

http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

Seiten 318ff.

Die kommen teilweise zu anderen Aussagen. Weshalb kommen die zu anderen 
Aussagen ? Ich wuerd eher dem Hersteller glauben, bis ich die Zahlen 
verglichen haette. Mir wuerden 10% Uebereinstimmung reichen, und ich 
wuerde erwarten, dass der Hersteller zu hohe Werte angibt um auf der 
sicheren Seite zu sein.

: Bearbeitet durch User
von S. Landolt (Gast)


Lesenswert?

> Gemessen wurde ein ATMEGA 48PA-PU mit gesetzter CLKDIV8-Fuse,
> d.h. mit einem CPU-Takt von 1 MHz auf einem Steckbrett.

> 1. interner RC-Oszillator (SUT_CKSEL:
> INTRCOSC_8MHZ_6CK_14CK_65MS_DEFAULT)

Das habe ich nicht verstanden, läuft der ATmega48PA im Fall 1 mit 8 oder 
1 MHz?

von m.n. (Gast)


Lesenswert?

Tilo R. schrieb:
> Kurz: ich habe einige Messungen gemacht und möchte die Messwerte hier
> teilen, vielleicht interressiert es ja jemanden.

Wiederhole Deine Messungen mit einem realen Programm. Einmal mit dem µC 
im Dauerlauf und einmal, mit einem Programm, das den µC wenn möglich in 
den sleep-Modus versetzt. Mit Letzterem läßt sich die Stromaufnahme 
deutlich senken.

Ein ext. Quarzoszillator ist nur dann sinnvoll, wenn eine hohe 
Frequenzkonstanz benötigt wird, wie zum Beispiel ein TCXO, oder die 
Stromaufnahme unwichtig und der Geldbeutel voll sind ;-)

von Axel S. (a-za-z0-9)


Lesenswert?

m.n. schrieb:
> Wiederhole Deine Messungen mit einem realen Programm. Einmal mit dem µC
> im Dauerlauf und einmal, mit einem Programm, das den µC wenn möglich in
> den sleep-Modus versetzt.

Dem schließe ich mich an. Nur ungeschickt gemachte Programme lassen den 
µC permanent laufen. Jeder halbwegs gewitzte Programmierer schickt den 
µC schlafen, wenn gerade nichts zu tun ist.

Außerdem ist der spezifische Strombedarf des Oszillators leichter 
ablesbar, wenn man den µC im Sleep hält. Man muß natürlich einen 
Sleep-Mode wählen, wo der Oszillator an bleibt. Z.B. "idle" beim AVR.

Tilo R. schrieb:
> Ich ziehe daraus 3 Schlüsse:
> 1. RC-Oszillator, Quarz oder Resonator macht vom Stromverbrauch kaum
> einen Unterschied

Also ich finde die Unterschiede schon signifikant. Insbesondere sieht 
man sehr gut den höheren Stromverbrauch für "full swing".

> 2. Überrascht hat mich der deutlich höhere Stromverbrauch bei 5V. Ich
> hatte einen linearen Zusammenhang zwischen Spannung und Strom erwartet.

Ich auch. Andererseits macht bei einem Oszillator der Querstrom durch 
die Stufe die im Linearbetrieb läuft, eine Menge aus. Und dieser 
Querstrom steigt gerade nicht linear mit der Spannung, sondern ca. 
quadratisch. (entsprechend der I_d vs. U_gs Kennlinie eines MOSFET, die 
annähernd quadratisch verläuft). Linear mit der Spannung steigen nur die 
Umladeströme der diversen parasitären Kapazitäten.

von Tilo R. (joey5337) Benutzerseite


Lesenswert?

Danke für die Antworten.

Oder D. schrieb:
> Hast du schon mit dem Datenblatt des Herstellers verglichen ?
> [..]
>
> Die kommen teilweise zu anderen Aussagen. Weshalb kommen die zu anderen
> Aussagen ?

als mögliche Ursachen vermute ich:
* die Messungen im Datenblatt sind großteils mit externem Oszillator 
gemacht. Mir ging es nicht um den Verbrauch der CPU, sondern um den 
Vergleich verschiedener Taktquellen.
* im DB wurden alle Bits im PRR gesetzt. Darum habe ich mich nicht 
gekümmert.


S. Landolt schrieb:
>> 1. interner RC-Oszillator (SUT_CKSEL:
>> INTRCOSC_8MHZ_6CK_14CK_65MS_DEFAULT)
>
> Das habe ich nicht verstanden, läuft der ATmega48PA im Fall 1 mit 8 oder
> 1 MHz?

"externer" Takt war immer 8 MHz, oder eben der interne RC-Oszillator, 
der ja auch etwa 8 MHz hat. Durch die gesetzte CLKDIV8-Fuse wird daraus 
der interne 1 MHz-CPU-Takt


m.n. schrieb:
> Ein ext. Quarzoszillator ist nur dann sinnvoll, wenn eine hohe
> Frequenzkonstanz benötigt wird, wie zum Beispiel ein TCXO, oder die
> Stromaufnahme unwichtig und der Geldbeutel voll sind ;-)

Hobby != Serie :-)
Bei Einzelstückzahlen ist mir der Preis ziemlich egal. Der Quarz war 
ziemlich teuer (0,75€), der Oszillator noch einigermaßen im Rahmen 
(1,10€). Mich hat mehr der Stromverbrauch des Oszillators abgeschreckt, 
aber der ist ja deutlich besser als im Datenblatt.


Axel S. schrieb:
> Also ich finde die Unterschiede schon signifikant. Insbesondere sieht
> man sehr gut den höheren Stromverbrauch für "full swing".

Ja, Full Swing braucht deutlich mehr, das war absehbar.
Aber sonst fand ich die Unterschiede sehr gering, bei 3.3V z.B. 1,17 / 
1,22 / 1,25 mA.


@All
Ich werde mich am Wochenende nochmal hinsetzen und stromsparende 
Messungen machen. D.h. ein Timer-Interrupt zur Funktionskontrolle, PRR 
setzen und dann Idle.

Die Ergebnisse reiche ich nach.

von S. Landolt (Gast)


Lesenswert?

> "externer" Takt war immer 8 MHz, oder eben der interne
> RC-Oszillator, der ja auch etwa 8 MHz hat. Durch die
> gesetzte CLKDIV8-Fuse wird daraus der interne 1 MHz-CPU-Takt

Das erstaunt mich, denn bei einem ATmega328P messe ich mit internen 1 
MHz bei:
5.0 V:  0.97 mA
3.3 V:  0.55 mA

von Tilo R. (joey5337) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo Forum,

wie versprochen reiche ich jetzt einige stromsparende Messergebnisse 
nach. Der physikalische Aufbau ist identisch. In der Software wird jetzt 
aber das PRR bis auf einen Timer gesetzt und in der Hauptschleife wird 
SLEEP_MODE_IDLE benutzt (oder auch nicht). Zur Nachvollziehbarkeit habe 
ich den Code angehängt.

Die Messergebnisse sind nach Stromverbrauch sortiert, Betriebsspannung 
war 5.0V / 3.3V. Der Verbrauch mit RC-Oszillator passt zu den Kurven im 
Datenblatt.


A: interner 8 MHz RC-Oszillator:
aktiv warten: 0,975 / 0,560 mA
Sleep(IDLE):  0,333 / 0,215 mA


B: SMD-Resonator CSTCE 8,00 (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
aktiv warten: 1,055 / 0,638 mA
Sleep(IDLE):  0,452 / 0,310 mA


C: SMD-Quarz 8,000000-MQ (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
aktiv warten: 1,064 / 0,647 mA
Sleep(IDLE):  0,456 / 0,316 mA


D: SMD-Resonator CSTCE 8,00 Full Swing (SUT_CKSEL: 
EXTFSXTAL_1KCK_14CK_65MS)
aktiv warten: 1,894 / 1,011 mA
Sleep(IDLE):  1,330 / 0,701 mA


E: SMD-Quarz 8,000000-MQ Full Swing (SUT_CKSEL: 
EXTFSXTAL_1KCK_14CK_65MS)
aktiv warten: 1,911 / 1,023 mA
Sleep(IDLE):  1,340 / 0,708 mA


F: externer Oszillator XO91 8,00000 (SUT_CKSEL: EXTCLK_6CK_14CK_65MS)
aktiv warten: -,--- / 1,589 mA
Sleep(IDLE):  -,--- / 1,273 mA


viele Grüße, Tilo

von S. Landolt (Gast)


Lesenswert?

Es spielt für den Vergleich zwar keine Rolle, aber da die Stromaufnahme 
auf 1 uA genau angegeben wird, vermisse ich das Abschalten des 
Analog-Komparators, immerhin bringt das bei 5 V ca. 70 uA.

von Axel S. (a-za-z0-9)


Lesenswert?

Tilo R. schrieb:
> wie versprochen reiche ich jetzt einige stromsparende Messergebnisse
> nach.

Danke daß du dir die Mühe gemacht hast!

> Die Messergebnisse sind nach Stromverbrauch sortiert, Betriebsspannung
> war 5.0V / 3.3V.

> A: interner 8 MHz RC-Oszillator:
> Sleep(IDLE):  0,333 / 0,215 mA
>
> B: SMD-Resonator CSTCE 8,00 (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
> Sleep(IDLE):  0,452 / 0,310 mA
>
> C: SMD-Quarz 8,000000-MQ (SUT_CKSEL: EXTXOSC_8MHZ_XX_1KCK_14CK_65MS)
> Sleep(IDLE):  0,456 / 0,316 mA

Jep. Jetzt sieht man doch deutlich den Unterschied zwischen 
RC-Oszillator und Resonator/Quarz. Die 37% bzw. 47% Mehrverbrauch nur 
durch den Oszillator sind schon signifikant.

Auch die Proportionalität zwischen Stromverbrauch und Betriebsspannung 
stimmt jetzt recht gut.

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.