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).
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.
> 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?
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 ;-)
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.
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.
> "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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.