mikrocontroller.net

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


Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Gibts dafür ne Erklärung?

Dein Spannungsregler zieht den Rest?

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weitere Beschaltung? Was sind schon zwo Milliampere :)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Peripherie ist eingeschaltet?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Welche Peripherie ist eingeschaltet?

Timer0, Timer1, USART0, SPI-Interface sind eingeschaltet

USART1, ADC, TWI, TIMER2 sind ausgeschaltet

Autor: Frank Buss (foobar)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:

> Wieviel braucht so ein Quarz denn Strom?

Low power oder full swing mode?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:

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

Beachte Tabelle 27-1.

> USART1, ADC, TWI, TIMER2 sind ausgeschaltet

Inaktiv oder per PRR?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Low power oder full swing mode?

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

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:

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

Ja.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan schrieb:

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

Nö, von deinem Kühlschrank.

Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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. ;-)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, ja ich meinte den 644P - sorry

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Anja (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zwölf Mal Acht (hacky)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle GND und alle Vcc ?

Autor: sven s. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!"

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: Warum braucht der Controller mehr Strom wenn die PINs floaten?

Autor: Frank Buss (foobar)
Datum:

Bewertung
0 lesenswert
nicht 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-06...

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-p...

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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Alexander Schmidt (esko) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ulrich P. (uprinz)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.