ATmega48PA stromverbrauch zu hoch

Gast #2550168
Lesenswert?

Hallo,

Zur zeit versuche ich einen ATmega48PA in den Power Down - Sleep Mode zu 
versetzen. Dies scheint mir auch zu gelingen. Jedoch ist der gemessene 
Stromverbrauch viel höher als im Datenblatt angegeben.


Zum testen hab ich ein einfaches Testprogramm geschrieben welches den 
Controller in den Power Down mode bringt.
1
/*
2
 * PicoPowerTest.c
3
 *
4
 * Created: 13.02.2012 09:58:20
5
 */ 
6

7
#ifndef F_CPU
8
#define F_CPU 128000UL
9
#endif
10

11
#include <avr/io.h>
12
#include <avr/sleep.h>
13
#include <avr/power.h>
14
#include <avr/wdt.h>
15
#include <avr/interrupt.h>
16
#include <util/delay.h>
17

18

19
/*! \brief This is the main routine
20
 *
21
 * 
22
 */
23
int main(void)
24
{
25
    wdt_disable();
26

27
    PRR = (1 << PRTWI) | (1 << PRTIM2 ) | (1 << PRTIM1 ) | \
28
          (1 << PRTIM0 ) | (1 << PRSPI ) | (1 << PRUSART0 ) | (1 << PRADC ) ; 
29
  
30
    /* set pin input and pull up */
31
    DDRB = 0x00;
32
    PORTB = 0xFF;
33
    DDRC = 0x00;
34
    PORTC = 0xFF;
35
    DDRD = 0x00;
36
    PORTD = 0xFF;
37
    
38
  /* Disable digital input */
39
    DIDR1 = (1 << AIN1D) | (1 << AIN0D);
40
    DIDR0 = (1 << ADC5D) | (1 << ADC4D) | (1 << ADC3D) | (1 << ADC2D) | (1 << ADC1D) | (1 << ADC0D);
41
   
42
    /* Disable analog comparator */
43
  ACSR = 0x80;  
44

45
    for(;;) 
46
  {
47
          set_sleep_mode(SLEEP_MODE_PWR_DOWN);
48
      cli();
49
            sleep_enable();
50
            sleep_bod_disable();
51
            sei();
52
            sleep_cpu();
53
            sleep_disable();
54
            cli();
55
            /* Wake up from Power-Save mode */     
56
    }
57
}

Der ATmega48PA braucht zwar deutlich weniger Strom aber leider trodem 
noch viel mehr als im Datenblatt angegeben.

Power Down (0.1-0.5uA @1,8V) -> laut Datenblatt
Power Down 49,2uA @1,8V -> gemessen

Active ~27uA -> laut Datenblatt
Active 71,5uA -> gemessen

Hardware:
nur Controller mit keramischen Stützkondensatoren, ohne jegliche 
Peripherie.

Freue mich über alle hinweise und fehler die mich dem angegebenen 
Stromverbrauch näher bringen.

schöne Grüße
Angehängte Dateien:
#2550211
Lesenswert?

@  Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)

>Die Pullups bekommst du nicht umsonst. Da fliesst auch Strom. Und bei 24
>Pullups läppert sich da so einiges zusammen.

Käskopp. Die Pull-Ups ziehen die IOs hoch und fertig, dann fließt kein 
Strom mehr, wohin denn auch?

@OP

Gibt es da nicht eine AVR-Fuses, die den Watchdaog IMMER aktiv hält? 
Sollte man mal prüfen.

MfG
Falk
#2550223
Lesenswert?

Vor einiger Zeit hatte ich einmal statt eines ATmega8L einen ATmega8A 
verbaut und meine Schaltung zog statt der vorherigen 1uA plötzlich, mit 
identischer Software, ca 50uA. Da ich den Fehler nicht fand, tauschte 
ich den mega8A wieder gegen den bei mir bewährten mega8L und alles war 
wieder in Ordnung.
Ich bin dem Grund für den erhöhten Verbrauch beim mega8A gegenüber dem 
mega8L nicht weiter auf den Grund gegangen. Womöglich hatte das auch 
nichts mit dem Problem von Johannes zu tun. Trotzdem wollte ich es mal 
loswerden ..

Gruß
Björn
#2550238
Lesenswert?

Watchdog und Brown-Out abschalten.

Klingt irgendwie blöd, denn gerade bei Batteriebetrieb will man ja ein 
zuverlässiges Arbeiten.
Und beim Einsetzen einer Batterie kommt es ja zu mehrmaligem Kontakt, 
d.h. die VCC kriegt ordentlich Spikes ab, die den MC schonmal 
durcheinander bringen können oder zumindest den EEPROM verfälschen.
Bei Batteriebetrieb bräuchte mal also einen stromsparenden externen 
Reset + Watchdog.


Peter
Gast #2550243
Lesenswert?

Elko4 schrieb:
> An welchem Punkt hast du den Strom den gemessen? (Schaltplan?)
>
> Falls du noch einen Spannungsregler in der Schaltung hast, könnte dessen
> Ruhestrom vielleicht der Grund sein!

Den Strom hab ich direkt an den  Vcc Pins gemessen.

Ein Spannungsregler ist nicht eingebaut. Ich betreibe den Controller 
direkt an einem KEITHLEY SourceMeter
Gast #2550268
Lesenswert?

Peter Dannegger schrieb:
> Watchdog und Brown-Out abschalten.

Das habe ich beides gemacht. Sowohl in den Fuse Bits als auch in der 
Software.

Hab mal irgendwo gelesen das interne Spannungreferenz für den Brown Out 
detektor und die analogen Baugruppen einen erhöhten ruhestrom 
verursacht.

Kann man diese Spannungsreferenz irgendwie geziehlt per Software 
abschalten oder ist diese sowieso über das PRADC mitgesteuert.

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