Komponenten im AVR, die viel Strom verbrauchen

Gast #4801846
Lesenswert?

Hallo,

für ein Projekt würde ich gerne die Stromaufnahme eines AVR aufzeichnen.
Hardware ist vorhanden.
Um das ganze besonders deutlich zu machen (und weil ich kein AVR Experte 
bin) würde ich gerne Komponenten nutzen, die besonders viel Strom im AVR 
brauchen.
Ich stell mir das quasi so vor
1
while(1){
2
 BraucheVielStrom();
3
 delay_ms(10);
4
 BraucheWenigStrom();
5
 delay_ms(10);
6
}

 Das ganze soll evtl. nicht solange dauern (jeweils max 100ms), damit 
man die Ergebnisse schön visualisieren kann. Jemand ne Idee was ich 
nutzen kann/soll (intern, das ich ne LED anschließen kann ist mir 
bewusst ;)
Gast #4801857
Lesenswert?

Wie so oft hilft eine blick ins Datenblatt. Da steht drin auch einiges 
zum Stromverbrauch der Hardware drin.

Und viel Spaß dabei eine delay_ms zu schreiben die nicht mit 100% 
CPU-Last vor sich hin heizt.
Gast #4801884
Lesenswert?

Unter Minimizing Power Consumption oder so ähnlich im Datenblatt steht, 
was man alles abschalten kann. Bei einigen AVRs kann man auch den BOD 
via Software im Sleep abschalten. Der kann schon mehrere zehn 
Mikroampere ziehen.
Moderator (Firma: Titel) Persönliche Seite #4802094
Lesenswert?

Andreas B. schrieb:
> Der Eingang nimmt jedes beliebige Potential an, was gerade in der Luft
> "hängt". Und das ist alles andere als stabil.
Von "Schwingen" ist das aber noch weit entfernt. Denn dafür wäre eine 
Mittkopplung nötig.

Der Grund des Übels ist ein Stück weiter im IC zu finden: wenn man sich 
die Eingangstreiberstudfe mal genau ansieht, dann findet man dort einen 
P-Kanal und einen N-Kanal Mosfet, deren Gates zusammengeschaltet sind. 
Und wenn sich nun die Eingangsspannung auf Vcc/2 einpendelt, leiten 
beide Transistoren "ein wenig". Deshalb fließt ein deutlicher Strom 
direkt von Vcc nach GND...
Gast #4802096
Lesenswert?

Andreas B. schrieb:
> Der Eingang nimmt jedes beliebige Potential an, was gerade in der Luft
> "hängt". Und das ist alles andere als stabil.

Das stimmt zwar, aber das würde ich nicht als "Schwingen" bezeichnen. 
Die AVR-Eingänge sind doch meist (oder sogar immer?) als Schmitt-Trigger 
ausgebildet. Durch die Hysterese kann eigentlich nichts schwingen, weil 
die sich normalerweise nicht im verbotenen Bereich aufhalten können.
#4802101
Lesenswert?

Andreas B. schrieb:
> Genau so eben nicht. Offene Eingänge neigen zum Schwingen.

Ein Schwingen ist nicht das Problem, das passiert eher bei 
CMOS-Logikschaltungen durch kapazitives Übersprechen aus benachbarten 
Leitungen.

Die übliche Eingangsstufe beim µC enthält einen Inverter mit einem p- 
und einem n-Kanal-Mosfet.

Bei einwandfreiem Null oder Eins ist entweder der N- oder der P-Mosfet 
ganz gesperrt und kein Querstrom fließt.

Bei offenem Eingang stellt sich aber leicht ein Zwischenzustand ein, bei 
dem beide Mosfets nicht ganz gesperrt sind. Dann fließt ein Querstrom 
wie z.B. bei einer bipolaren Komplementär-Stufe, der erheblich höher ist 
als bei eindeutigem Pegel.

Mit einem internen pullup werden die Eingänge eindeutig auf Vcc 
gestellt. Ebenso gehts natürlich mit pulldown (extern) nur darf da 
natürlich der interne pullup nicht hergestellt sein.
Gast #4802102
Lesenswert?

Hi

>Und das ist alles andere als stabil.

Na und? In den ATMEL-Datenblättern gibt es lediglich 'Empfehlungen' für 
den Umgang mit nicht angeschlossenen PINs. Von einem Fehlverhalten steht 
da kein Wort. Deckt sich auch mit meinen fast 20 jährigen Erfahrungen 
mit AVRs.

MfG Spess
#4802120
Lesenswert?

spess53 schrieb:
> Hi
>
>>Und das ist alles andere als stabil.
>
> Na und? In den ATMEL-Datenblättern gibt es lediglich 'Empfehlungen' für
> den Umgang mit nicht angeschlossenen PINs. Von einem Fehlverhalten steht
> da kein Wort. Deckt sich auch mit meinen fast 20 jährigen Erfahrungen
> mit AVRs.
>
> MfG Spess

Na ok. Aber den Pullup am Eingang einzuschalten tut doch nicht weh, 
oder?
Ich gebe auch zu, das ist bei mir eine Gewohnheit aus TTL Zeitemn.

Gruß
Andreas
#4802125
Lesenswert?

hhi schrieb:
> Über einen 1 Ohm Widerstand in der Spannungsversorgung, an dem ich den
> Spannungsfall betrachte.

Dann bist du noch nicht recht weit mit dem Stromsparen.

Sobald du Sleep-Mode & co ausgereizt hast, nimm statt dem 
1-Ohm-Widerling eher einen 100 KILO-Ohm Widerstand, damit da wenigstens 
ein bischen Spannung zum Messen rumkommt.

Tipp: Parallel dazu eine 1N4148 (keine Schottky), um die 
Abblock-Kondensatoren am µC schneller aufzuladen.
Gast #4802126
Lesenswert?

ecl schrieb:
> Jemand ne Idee was ich
> nutzen kann/soll (intern, das ich ne LED anschließen kann ist mir
> bewusst ;)
Atmel hat einen solchen Versuch in dem Papier "Picopower Basics" kurz 
beschrieben, vielleicht finden sich dort noch Anhaltspunkte.
Auch erinnere ich mich an einen Artikel in der Elektor, mit dem Titel 
"Jedes Mikrojoule zählt" oder so. Da ging's ebenfalls darum AVRs 
möglichst stromsparend zu bekommen. Aber frag mich jetzt nicht mehr 
welche Ausgabe das war, ist schon ein paar Jahre her...

http://www.atmel.com/Images/doc8349.pdf
http://www.atmel.com/images/avr4013.zip
Gast #4802128
Lesenswert?

Lothar M. schrieb:
> Von "Schwingen" ist das aber noch weit entfernt. Denn dafür wäre eine
> Mittkopplung nötig.

Und die findet statt über Gnd und Vcc, je nach schlechter
Entkopplung. Die Mitkopplung bestätigst du hier ja auch:

Lothar M. schrieb:
> Deshalb fließt ein deutlicher Strom direkt von Vcc nach GND...

Und daher kann es auch zu Schwingungen kommen. Die bei offenen
74LSxxx und anderen (Stromfresser-)Gattern durchaus üblich waren.
Gast #4802135
Lesenswert?

Arduinoquäler schrieb:
> Und daher kann es auch zu Schwingungen kommen. Die bei offenen
> 74LSxxx und anderen (Stromfresser-)Gattern durchaus üblich waren.

Die hatten aber auch keine Schmitt-Trigger an den Eingängen.
Ich kenn das auch, daß man Gatter in den verbotenen Bereich gequält hat 
(VCC/2) und die dann z.B. als NF-Verstärker mißbraucht hat. Aber eben 
nur reine Gatter. Mit Triggern am Eingang kann nichts schwingen...
Gast #4802144
Lesenswert?

Die Stromaufnahme des Kerns hängt von der Spannung ab. Ein 
Spannungsabfall verursacht demnach eine geringere Stormaufnahme.

Obendrein steigt der Stromverbrauch ziemlich linear mit der Taktfrequenz 
an.

Im Datenblatt liest man die Werte einfach unter Typical Characteristics 
ab. Das misst man nicht, weil das schon jemand anders gemacht hat und 
das obendrein professionell.

Daumenregel: Mehr als 10mA zieht kein AVR. Die untere Grenze bei einem 
aktiven AVR liegt bei 120nA.
#4802166
Lesenswert?

ASM Superprofi schrieb:
> Die Stromaufnahme des Kerns hängt von der Spannung ab. Ein
> Spannungsabfall verursacht demnach eine geringere Stormaufnahme.
>
> Obendrein steigt der Stromverbrauch ziemlich linear mit der Taktfrequenz
> an.
>
> Im Datenblatt liest man die Werte einfach unter Typical Characteristics
> ab. Das misst man nicht, weil das schon jemand anders gemacht hat und
> das obendrein professionell.
>
> Daumenregel: Mehr als 10mA zieht kein AVR. Die untere Grenze bei einem
> aktiven AVR liegt bei 120nA.

Wie definierst Du einen aktiven AVR? 150nA bei 63kHz hatte ich schon.
1 Hz? Sollte dann eigentlich noch weiter runter gehen.

Gruß
Andreas
Gast #4802211
Lesenswert?

Hi

>Hier sehe ich gerade die Empfehlung von Atmel, eben doch Pullups an den
>Eingängen zu verwenden (5.2).
>Also haben die alten Regeln doch noch ihre Gültigkeit.

Kann man so pauschal nicht sagen. Hier aus dem Forum hat das mal jemand 
vor Jahren nachgemessen. Er kam auf ein paar µA pro offenen Pin. Da ist 
es schon ein Unterschied, ob der AVR in einem Gerät, das mit Energy 
Harvesting betrieben wird oder in einer Anlage mit mehrstelligen 
kW-Verbrauch verbaut ist. Im ersten Fall ist das interessant, im 
letzteren Fall interessiert das den Gasmann.

MfG Spess
Moderator (Firma: Titel) Persönliche Seite #4802219
Lesenswert?

Arduinoquäler schrieb:
> Die Mitkopplung bestätigst du hier ja auch:
> Lothar M. schrieb:
>> Deshalb fließt ein deutlicher Strom direkt von Vcc nach GND...
Das ist aber eine recht freie und tendenziell falsche Interpretation 
meiner Worte.
Die Eingangsstufe sieht prinzipiell so aus:
1
     Vcc --------o-----------
2
                 |
3
               |-|
4
           .---|>'
5
           |   |-.
6
           |     |
7
   Pin  ---o     o--------
8
           |     |
9
           |   |-'
10
           '---|<.
11
               |-|
12
                 |
13
    GND  --------o------------
Und wenn dort am "Pin" irgendwas im Bereich um Vcc/2 anliegt, dann 
leiten beide FETs. Das treibt den Strom ohne jegliche Schwingung rein 
statisch nach oben.
Irgendwelche Mitkopplungen, die unglücklicherweise noch dazukommen 
könnten, machen die Bilanz nicht besser.

> Und daher kann es auch zu Schwingungen kommen. Die bei offenen
> 74LSxxx und anderen (Stromfresser-)Gattern durchaus üblich waren.
Offene 74LS-Gatter haben nicht geschwungen, denn die Dinger sind dank 
der Transistoren stromgesteuert. Erst mit den CMOS-Gattern und der bei 
den TTL-Gattern gelernten Designpraxis (gelernt: offener Eingang = High) 
begann das Problem...

Andreas B. schrieb:
> Hier sehe ich gerade die Empfehlung von Atmel, eben doch Pullups an den
> Eingängen zu verwenden (5.2).
> Also haben die alten Regeln doch noch ihre Gültigkeit.
Theoretisch sollte das huetzutage nicht mehr nötig sein, denn der 
Eingangstreiber wird bei aktuellen CPUs (mega324) per Transmission Gate 
abgeklemmt und der Eingangstreiber per Fet auf Low-Pegel gezogen (im 
Screenshot die Ecke links unten).
Angehängte Dateien:
#4802223
Lesenswert?

A. K. schrieb:
> Andreas B. schrieb:
>> Edit: Da wir gerade dabei sind: Wo findet man eigentlich die Infos zu
>> den Ein- und Ausgangsstufen der AVRs
>
> Im Eisschrank. Notfalls auch im jeweiligen Datasheet unter I/O-Ports.

Witzbold. Ich meine natürlich den genauen internen Aufbau.

spess53 schrieb:
Er kam auf ein paar µA pro offenen Pin. Da ist
> es schon ein Unterschied, ob der AVR in einem Gerät, das mit Energy
> Harvesting betrieben wird oder in einer Anlage mit mehrstelligen
> kW-Verbrauch verbaut ist. Im ersten Fall ist das interessant, im
> letzteren Fall interessiert das den Gasmann.
>
> MfG Spess

Es ging ja wohl ums Energie sparen. Da ich bei meiner o.g. Anwendung im 
Ruhezustand 0.2uA gebraucht habe, wären ein paar uA ein K.O Kriterium. 
Also der Gasmann kann ruhig Zuhause bleiben ;-)

Gruß
Andreas
Gast #4802612
Lesenswert?

>Daumenregel: Mehr als 10mA zieht kein AVR

Nö. Hatte mal einen Benchmark bei 5V gemacht. Jede ms einen Wert vom ADC 
als printf über 115200 usart versenden. ADC + USART + 1 Timer immer an, 
ansonsten Däumchendrehen in der Mainloop, kein sleep. Alle Systeme mit 
11.0592MHZ Quarz betrieben. Kerntakt bei allen auch die 11MHz, d.h. der 
PIC hatte die 4-fach PLL an.

ATmega644                  18.8 mA
ATmega324P                 16.2 mA
ATmega328P                 13.0 mA
STM8S105C6                 10.6 mA
PIC18F45K50                 7.2 mA

AVR sind wahre Stromfresser unter den 8-bittern (oberhalb 3,6V). Sind 
halt alt. Da macht der STM auch keine gute Figur, als neuzeitliche 
Erscheinung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren