Leistungsaufnahme von Mikrocontrollern
Bei der Auswahl eines Mikrocontrollers für eine bestimmte Aufgabe steht man vor dem Problem, die Leistungsaufnahme verschiedener Typen zu vergleichen. Allerdings ist das nicht ganz so einfach. Unzählige Betriebszustände z. B. Sleep Mode, Betriebsspannungen, Familien und Unterfamilien, neue Revisionen etc. machen einen Vergleich schwierig.
Dennoch ist es möglich, eine gute Orientierung zu liefern, wenn man sich auf einheitliche, praxistaugliches Vergleichsbedingungen einigt. Das soll in diesem Artikel versucht werden.
Vergleichskriterien und Vergleichsbedingungen
So ziemlich alle Mikrocontroller von heute basieren auf CMOS-Technik. Diese hat im statischen Fall (keine Takte und Signaländerungen) nahezu Null Strombedarf. Nur wenn Signale ihren Zustand wechseln müssen parasitäre Kapazitäten umgeladen werden und es wird Strom benötigt. Der Zusammenhang zwischen Taktfrequenz und Stromaufnahme ist fast immer linear. Weiterhin ist die Ladungsmenge/Zeit (=Strom) von der Höhe der Betriebsspannung abhängig, was auch einleuchtet. Denn es ist ein Unterschied, ob man einen Kondensator auf 1,8 oder 5V aufladen muss. Dies läßt sich mit der lang bekannten Formel darstellen.
[math]\displaystyle{ P={V_\text{CC}}^2 \cdot C_P \cdot f_T }[/math]
- P : Verlustleistung
- Vcc: Betriebsspannung
- CP : Parasitäre Kapazität
- fT : Taktfrequenz
Daraus lassen sich folgende Vergleichskriterien aufstellen, nach denen die Mikrocontroller in die untenstehende Tabelle eingeordnet werden sollen.
- Stromaufnahme in aktiven Modus bei 1 MHz und 1,8/3,3V/5V (Aktiv); möglichst alle Komponenten aktiv
- Stromaufnahme im Schlafmodus mit laufender Echtzeituhr und 1,8/3,3V/5V (RTC); weitestgehend alle Komponenten inaktiv
- Stromaufnahme im tiefsten Schlafmodus bei 1,8/3,3V/5V (OFF); alle Komponenten inaktiv
Mit diesen Angaben kann man recht leicht den Stromverbrauch bei anderen Taktfrequenzen und Betriebsspannungen berechnen. Alle Angaben sollten den typischen Stromverbrauch bei 25°C darstellen. Sollte es notwendig sein, von diesen Angaben abzuweichen, so muss das in der Spalte Bemerkungen erklärt werden. Um den Stromverbrauch spezieller Komponenten zu vergleichen wird eine zweite Tabelle benutzt.
Vergleichstabelle der Betriebsmodi
Familie | Controller | Modus | 1,8V | 3,3V | 5V | Bemerkung |
---|---|---|---|---|---|---|
AVR | ATmega88 | Aktiv | 250 | 500 | 900 | - |
AVR | ATmega88 | RTC | 4 | 7 | 9 | - |
AVR | ATmega88 | OFF | 0,1 | 0,3 | 0,7 | - |
AVR | ATmega8 | Aktiv | - | 1800 | 2300 | - |
AVR | ATmega8 | RTC | - | 10 | 15 | - |
AVR | ATmega8 | OFF | - | 0,4 | 1 | - |
AVR | ATmega324P | Aktiv | 500 | 600 | 1100 | @2V, 3V, 5V |
AVR | ATmega324P | RTC | 0,5 | 0,6 | - | @2V, 3V |
AVR | ATmega324P | OFF | - | 0,2 | - | @3V, no WDT |
AVR | AT90S2313 | Aktiv | - | 2000 | 5000 | AVR der klassischen Baureihe |
AVR | AT90S2313 | OFF | - | 0,1 | 0,1 | AVR der klassischen Baureihe |
Vergleichstabelle der Module
Familie | Controller | Modul | 1,8V | 3,3V | 5V | Bemerkung |
---|---|---|---|---|---|---|
AVR | ATmega88 | Brown Out | 22 | 23 | 26 | - |
AVR | ATmega88 | ADC | 220 | 280 | 370 | - |
AVR | ATmega88 | Analog Comparator | 65 | 75 | 90 | - |
AVR | ATmega8 | Brown Out | - | 15 | 17 | - |
AVR | ATmega8 | ADC | - | 270 | 360 | - |
AVR | ATmega8 | Analog Comparator | - | 60 | 75 | - |
AVR | ATmega324P | UART | 6 | 9,5 | 19 | @2V, 3V, 5V @1MHz |
AVR | ATmega324P | ADC | 18 | 21 | 35 | @2V, 3V, 5V @1MHz |
AVR | ATmega324P | Timer0 - 8bit | 5 | 9 | 15 | @2V, 3V, 5V @1MHz |
AVR | ATmega324P | Timer1 -16bit | 9 | 15 | 30 | @2V, 3V, 5V @1MHz |
AVR | ATmega324P | IO pullup 36k | 50 | 100 | 138 | @0V am Eingang |
Variable Speisespannung?
Beim Betrieb an Stromquellen, etwa einem Kondensatornetzteil, kann die Gesamtleistungsaufnahme nur durch Reduktion der Spannung abgesenkt werden, denn sonst müsste der Strom in den Rechenpausen am Controller vorbei geleitet (und verheizt) werden. Dies ist nur bei Controllern sinnvoll, deren Taktfrequenz softwaremäßig umschaltbar ist, also allen(?) ATtinys und neueren ATmegas.
Allerdings lauert hier eine Falle: Im Versuch stürzten die ATtiny13 ab, oder wurden gar unbrauchbar (nicht mehr programmierbar)! Offenbar benötigen die Ladungen in den sRAM-Zellen eine konstante Speisespannung. Vielleicht darf sie sich nur langsam ändern. Was zu untersuchen wäre.