Forum: Mikrocontroller und Digitale Elektronik AVR Controller braucht zu viel Strom


von Stefan (Gast)


Lesenswert?

Schönen Abend,

mal ne Frage: Mein Mega644 braucht ca 1,3 mA mehr Strom wie er nacht dem 
Datenblatt eigentlich brauchen soll. Hab nen Quarz mit 3.68Mhz dran und 
3.3V Versorgung. Wenn er aktiv ist braucht er etwa 3.2 mA, wenn er idle 
ist noch 1.6mA. Das ist in beiden Modi grob übern Daumen je 1,2 1,3 mA 
mehr wie er nach Datenblatt brauchen dürfte (ich schalte noch etwas 
interne Peripherie ab, UART, Timer zB)

Gibts dafür ne Erklärung?
Wieviel braucht so ein Quarz denn Strom? Finde in den Datenblättern 
nichts, also wohl nicht viel

Gruß Stefan

von holger (Gast)


Lesenswert?

>Gibts dafür ne Erklärung?

Dein Spannungsregler zieht den Rest?

von Tom (Gast)


Lesenswert?

Weitere Beschaltung? Was sind schon zwo Milliampere :)

von (prx) A. K. (prx)


Lesenswert?

Welche Peripherie ist eingeschaltet?

von Stefan (Gast)


Lesenswert?

holger schrieb:
>>Gibts dafür ne Erklärung?
>
> Dein Spannungsregler zieht den Rest?

ne, ich hab direkt den Strom gemessen wo in den Controller fließt

Tom schrieb:
> Weitere Beschaltung? Was sind schon zwo Milliampere :)

Das soll ne Akkuanwendung werden und die 1.2mA verkürzen meine Laufzeit 
um den Faktor 4-5 :-(

es hängt noch ein SerialFlash dran
http://www.numonyx.com/Documents/Datasheets/M25P80.pdf
aber der wurde 1. nicht angesprochen bei der Messung und würde auch 
weniger brauchen laut Datenblatt

von Stefan (Gast)


Lesenswert?

A. K. schrieb:
> Welche Peripherie ist eingeschaltet?

Timer0, Timer1, USART0, SPI-Interface sind eingeschaltet

USART1, ADC, TWI, TIMER2 sind ausgeschaltet

von Frank B. (foobar)


Lesenswert?

Stefan schrieb:
> A. K. schrieb:
>> Welche Peripherie ist eingeschaltet?
>
> Timer0, Timer1, USART0, SPI-Interface sind eingeschaltet
>
> USART1, ADC, TWI, TIMER2 sind ausgeschaltet

Dann schalte die doch einfach mal alle aus und messe nochmal und nur den 
Stromverbrauch vom Microcontroller, also das Serial Flash nicht 
mitmessen, auch wenn es nicht angesprochen wird.

Bist du sicher, daß du richtig misst? Manche Messgeräte sind gerade im 
unteren Bereich ungenau, falls du es in Serie misst. Mal mit einem 
Widerstand gegenprüfen.

von Stefan (Gast)


Lesenswert?

ich schaltet mein Multimeter in Reihe, bin im Messbereich bis 20mA. Es 
würd noch einen Bereich bis 200µA geben, daher denke ich von der 
Genauigkeit sollte es schon gehen.

OK, mache ich

Meine Idee mit dem Quarz war Blödsinn oder? Also der braucht keinen 
"zusätzlichen" Strom

von (prx) A. K. (prx)


Lesenswert?

Stefan schrieb:

> Wieviel braucht so ein Quarz denn Strom?

Low power oder full swing mode?

von (prx) A. K. (prx)


Lesenswert?

Stefan schrieb:

> Timer0, Timer1, USART0, SPI-Interface sind eingeschaltet

Beachte Tabelle 27-1.

> USART1, ADC, TWI, TIMER2 sind ausgeschaltet

Inaktiv oder per PRR?

von Stefan (Gast)


Lesenswert?

A. K. schrieb:
> Inaktiv oder per PRR?

per PRR

A. K. schrieb:
> Beachte Tabelle 27-1.

hm welche meinst du damit? Datenblatt vom Controller?

von Stefan (Gast)


Lesenswert?

A. K. schrieb:
> Low power oder full swing mode?

öhm, das weis ich nicht. Sieht man das an den Fuses?

von Purzel H. (hacky)


Lesenswert?

Eine Lowpower Batterieanwendung ist eine Entwicklung... man muss jede 
komponente bis ins Detail anschauen. Jeden spannungsregler, jeden 
spannungsteiler.
Ich rate mal ... LM7805 ? LP2951 ? Ziehen alle viel zuviel.

von Stefan (Gast)


Lesenswert?

nö, den hier
http://ww1.microchip.com/downloads/en/DeviceDoc/21826b.pdf
glaub der ist gut

ich hab ja auch den Strom in der Leitung vom Spannungsreglerausgang zum 
VCC vom Controller gemessen

von (prx) A. K. (prx)


Lesenswert?

Stefan schrieb:

> öhm, das weis ich nicht. Sieht man das an den Fuses?

Ja.

von (prx) A. K. (prx)


Lesenswert?

Stefan schrieb:

>> Beachte Tabelle 27-1.
>
> hm welche meinst du damit? Datenblatt vom Controller?

Nö, von deinem Kühlschrank.

von Stefan (Gast)


Angehängte Dateien:

Lesenswert?

Der ist leer....
könntest ja auch den Flash gemeint haben
Die Tabelle wo du meinst finde ich nicht in meinem Datenblatt
sag mal bitte die Seite

von (prx) A. K. (prx)


Lesenswert?

PS: Der interne Oszillator mit externem Quarz verbraucht sicherlich mehr 
Strom als ein extern zugeführter Takt, bei dem Atmel den Strom des 
externen Oszillators nicht mitrechnet. Wieviel das ausmacht weiss ich 
aber auch nicht.

von (prx) A. K. (prx)


Lesenswert?

> Die Tabelle wo du meinst finde ich nicht in meinem Datenblatt
> sag mal bitte die Seite

Wenn's die Table nicht gibt nützt auch die Seite nix.

Siehe: 27.3 Supply Current of IO modules

von (prx) A. K. (prx)


Lesenswert?

Du schreibst, dass du den 644 verwendest. Das eben gepostete Datasheet 
ist vom 644P. Also welcher isses nu? Ist nicht ganz unwichtig, weil sich 
die technisch unterscheiden.

PS: Einen 644PA gibts übrigens auch noch. ;-)

von Stefan (Gast)


Lesenswert?

Ups, ja ich meinte den 644P - sorry

von Stefan (Gast)


Lesenswert?

Update:
also ich hab nun einen brandneuen AtMega644P-20AU verwendet.
Ich hab ihn NICHT auf einer Platine, der liegt nur aufm Tisch und habe 
VCC und GND an ein Netzteil angeschlossen

bei 2.7V braucht er 0.72mA
bei 3.3V 0.92mA
bei 4.0V 2.41mA
bei 4.5V 5.37mA
bei 5.0V 10.2mA

Wie kann es das geben, ist die Prozessorreihe irgendwie in die Hose 
gegangen oder was könnte das sein?

von Philipp B. (philipp_burch)


Lesenswert?

Offene Pins neigen dazu, eine Spannung im Bereich von Vcc/2 aufzubauen, 
da kann plötzlich wesentlich mehr Strom fliessen.
Du solltest den Prozessor schon in der Zielschaltung mit geladenem 
Programm vermessen, nur halt ohne die zusätzliche Peripherie. Oder halt 
alternativ alle Eingänge (entspricht im unprogrammierten Zustand allen 
Pins) auf Masse oder Vcc legen.

von Anja (Gast)


Lesenswert?

Stefan schrieb:
> der liegt nur aufm Tisch und habe
> VCC und GND an ein Netzteil angeschlossen

Stefan schrieb:
> Wie kann es das geben, ist die Prozessorreihe irgendwie in die Hose
> gegangen oder was könnte das sein?

Floatende I/O-Pins?

Gruß Anja

von Purzel H. (hacky)


Lesenswert?

Alle GND und alle Vcc ?

von sven s. (Gast)


Lesenswert?

mal nen zwischenwurf....

die avr sind schon net schelcht auch der verbrauch ist recht gut ....
aber wenns dir hier um jedes 0,5mA geht da gibts bessere z.b. den msp430 
usw.

und jetzt noch viel spaß beim messen

gruß Sven

PS: "Wer misst misst Mist!"

von Falk B. (falk)


Lesenswert?

Siehe Sleep Mode und Ultra low power.
Schalt deinen AVR in den Power Down Mode, dann findet man die bösen 
Verbraucher.

MFG
Falk

von Stefan (Gast)


Lesenswert?

danke, der Hinweis mit den floatenden Pins hat gut geholfen

ich habe nun so viele Pins wie möglich auf Ground gelegt und es wurde 
merklich besser

im Idle Mode braucht er nun 0.9mA bei 3.6864Mhz 3.3V
das ist zwar noch immer ~0.2mA über dem max. laut Datenblatt aber viel 
besser als 1,8mA früher.

Was noch ein Stromfresser war, war ein Elko (1µF) - der hat auch stetig 
0.8mA gesaugt, hab das mal als Defekt abgestempelt (oder ist das normal 
bei Elkos?)

Standby und PowerDown funktionieren einwandfrei

Gruß

von Stefan (Gast)


Lesenswert?

PS: Warum braucht der Controller mehr Strom wenn die PINs floaten?

von Frank B. (foobar)


Lesenswert?

Für 1 µF solltest du keinen Elko nehmen, bekommst du heute auch für 
weniger als 1 Cent als normalen Keramikkondensator, mit den 
entsprechenden Vorteilen gegenüber einem Elko:

http://de.farnell.com/multicomp/mcca000530/mlcc-06035v-16v-1uf/dp/1759408

Gibt es mittlerweile sogar noch bis 10 µF relativ preiswert. Du hast 
aber auch einen 100 nF Keramikkondensator nahe der Versorgungsspannung 
und Masse direkt am Microcontroller angebracht? So ein sowieso 
nützlicher Abblockkondensator kann auch nochmal beim Stromverbrauch 
helfen. Hier gibt es eine Application Note dazu, die auch beschreibt, 
warum Elkos nicht so gut sind:

http://www.intersil.com/data/an/an1325.pdf

Und hier gibt es einen guten Artikel zum Thema nicht angeschlossene 
IO-Pins:

http://electronicdesign.com/article/digital/save-power-by-managing-unused-cmos-i-o-pins21773.aspx

Wie im Artikel steht: direkt nach Masse legen geht zwar, aber am besten 
die Pins nicht anschließen und für den AVR dann als Input schalten und 
den internen Pullup einschalten. Denn dann macht es nichts, wenn du per 
Software die versehentlich mal als Ausgang schaltest und da eine 1 drauf 
gibst, was zu hohem Stromverbrauch führt, wenn du die fest auf Masse 
liegen hast. Und auch wenn du es extern falsch anschliesst und an so 
einem Pin ein Signal anlegst, passiert nichts (außer daß durch die 
Umschaltströme dann doch wieder etwas mehr Strom fliesst).

Ich vermute mal, die restlichen 0,2 mA könnten normale Schwankungen 
sein, oder weil die Testbedingung im Datenblatt mit einem externen 
Signalgenerator angegeben ist, statt einem Quarz. Oder das ist dann 
tatsächlich dein Messgerät. Hast du mal ausprobiert, z.B. einfach nur 
einen 2,2 k Widerstand oder so an 3,3 V und GND zu hängen und mit deinem 
Messgerät mal den Strom gemessen? Danach dann den Widerstand alleine 
messen und die Spannung, da das meist genauer als eine Strommessung im 
mA-Bereich ist.

von Falk B. (falk)


Lesenswert?

@  Stefan (Gast)

>ich habe nun so viele Pins wie möglich auf Ground gelegt und es wurde
>merklich besser

Das war nicht gefordert. Du sollst alle GND Pins anschliessen, ebenso 
alle VCC Pins und AVCC. Die IOs lässt man offen und aktiviert per 
Software die Pull-Ups.

>im Idle Mode braucht er nun 0.9mA bei 3.6864Mhz 3.3V
>das ist zwar noch immer ~0.2mA über dem max. laut Datenblatt aber viel

Naja, kann ein Messfehler sein oder der noch aktive Analogkomparator, 
der ist nämlich nach dem Reset immer an. Ausschalten.

>Was noch ein Stromfresser war, war ein Elko (1µF) - der hat auch stetig
>0.8mA gesaugt, hab das mal als Defekt abgestempelt

Kann man wohl sagen.

> (oder ist das normal bei Elkos?)

Nein, soviel zieht ein 1 uF Elko nicht.

MFG
Falk

von Ulrich P. (uprinz)


Lesenswert?

Hmmm...

Wenn es auf jedes uA ankommt, dann würde ich unbeschaltete Pinne zwar 
auf Input aber nicht mit dem internen PullUp auf 1 legen sondern mit 
externen 100k. Der interne PullUp hatte doch 'nur' irgendwas um 20k.

Es gab mal eine AppNote von Atmel zu einem Battery optimized design. 
Aber ich finde sie nicht mehr...

Gruß, Ulrich

von Peter (Gast)


Lesenswert?

Ulrich P. schrieb:
> Wenn es auf jedes uA ankommt, dann würde ich unbeschaltete Pinne zwar
> auf Input aber nicht mit dem internen PullUp auf 1 legen sondern mit
> externen 100k. Der interne PullUp hatte doch 'nur' irgendwas um 20k.
und was soll das ändern? Woher soll denn der Strom fließen. Du kannst 
sogar ein 0 Ohm PullUp verwenden ohne das mehr strom fließt.

von (prx) A. K. (prx)


Lesenswert?

Ulrich P. schrieb:

> Wenn es auf jedes uA ankommt, dann würde ich unbeschaltete Pinne zwar
> auf Input aber nicht mit dem internen PullUp auf 1 legen sondern mit
> externen 100k. Der interne PullUp hatte doch 'nur' irgendwas um 20k.

Es geht dabei nicht um die kaum messbar geringen Leckströme durch die 
MOSFET-Gates, sondern um den Querstrom (VCC=>FETs=>GND) durch das 
dadurch implementierte erste Stück CMOS-Logik am Pin.

Dieser Querstrom ist am grössten, wenn sich die Gates im Bereich um 
VCC/2 bewegen, ein Zustand der sich bei offenem Pin gern einstellt. Zieh 
den Pin auf high oder low, und der Querstrom ist weg.

von Falk B. (falk)


Lesenswert?

@  A. K. (prx)

>geringen Gate-Leckströme gern einstellt. Zieh den Pin auf high oder low,
>und der Querstrom ist weg.

Sicher, das war aber gar nicht der Punkt. Es ging um die Aussage, dass 
ein interner Pull-Up angeblich schlechter ist als ein externer. Dem ist 
nicht so.

MFG
Falk

von (prx) A. K. (prx)


Lesenswert?

Falk Brunner schrieb:

> Sicher, das war aber gar nicht der Punkt. Es ging um die Aussage, dass
> ein interner Pull-Up angeblich schlechter ist als ein externer. Dem ist
> nicht so.

Klar, ich wollte damit nur einem mögliches Missverständnis vorbeugen, es 
hätte irgendwas mit den Gate-Leckströmen zu tun. Denn dann wäre der 
Widerstandswert u.U. relevant.

NB: In den Powerdown-Modi werden zur Vermeidung der Querströme die Pins 
durch Analogschalter von der Logik abgetrennt und die Logik wird intern 
auf low gezogen.

von (prx) A. K. (prx)


Lesenswert?

Apropos Powerdown-Modi: Wenn man nach dem Stromverbrauch des Oszillators 
sucht, dann sollte man sich PowerDown und StandBy Modus mal ansehen. Der 
einzige Unterschied dazwischen ist nämlich der Oszillator. Wobei Atmel 
vermutlich vom "low power" Modus des Oszillators ausgeht.

von Alexander S. (esko) Benutzerseite


Lesenswert?

Frank Buss schrieb:
> Oder das ist dann
> tatsächlich dein Messgerät. Hast du mal ausprobiert, z.B. einfach nur
> einen 2,2 k Widerstand oder so an 3,3 V und GND zu hängen und mit deinem
> Messgerät mal den Strom gemessen? Danach dann den Widerstand alleine
> messen und die Spannung, da das meist genauer als eine Strommessung im
> mA-Bereich ist.

Den Tip würde ich beherzigen.
Viele Multimeter haben einen hohe Bürdenspannung in unteren 
Strommessbereichen.

von Ulrich P. (uprinz)


Lesenswert?

Ich war sicher, dass es eine entsprechende AppNote gab, in der das mit 
den externen Widerständen stand. Aber nach der Beschreibung der Port 
Pins ist es egal, ob interner oder externer PullUp.
Danke, wieder was gelernt!

In Fall Atmel AVR wäre es also egal, ob man den Pin per Software nach 
High oder Low zieht, Hauptsache er floatet nicht bei Vcc/2. Für andere 
Controller wäre sicherlich eine andere Konfiguration empfehlenswert, 
etwa Input + PullUp so empfiehlt es ST bei seinen STM32 Chips.

Gruß, Ulrich

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.