Forum: Mikrocontroller und Digitale Elektronik Einige Fragen bezüglich Strom sparen beim ATmega8


von Daniel L. (dannynrw)


Lesenswert?

Hi Leutz,

beschäftige mich seit einigen Tagen mit den Sleep Modes des ATmega8.
Und zwar möchte ich mit relativ wenig Aufwand eine möglichst geringe 
Stromaufnahme erzielen. Da käme mir der Idle Mode gerade richtig. Dort 
heißt es ja, der ATmega lässt sich auch durch die I/Os wecken.
Ist es dann so, daß der ATmega automatisch wieder aufwacht, wenn zB an 
einem beliebigen PIN irgendeine Signaländerung stattfindet oder denke 
ich mir das ganze zu einfach?
Hintergrund ist folgender: Der ATmega8 soll die komplette 
Innenbeleuchtung meines Fahrzeuges steuern. Benötigt werden also nur die 
normalen I/Os und mehrere PWM-Funktionen. Da hier natürlich die 
Autobatterie höher belastet wird, wenn der ATmega8 einfach aktiv bleibt 
während das Auto einfach nur in der Garage steht, möchte ich dem ein 
wenig entgegenwirken.
Denke, daß ich schon recht zufrieden sein kann, wenn ich einen Ruhestrom 
von ca. 1mA erreiche.
Würde mich hier über gute Tipps freuen.
Hier mal die Änderungen, die ich bislang vorhabe:
- Speisespannung des ATmega8 von bisher 5V auf 3V senken (ich arbeite 
mit dem LP2950 als Spannungsregler).
- Takt so gering wie möglich (denke an 2-1MHz).
- Habe noch gelesen, daß der ATmega8 auch schnell durch den ATmega88p 
ersetzt werden kann. Dieser verbraucht erheblich weniger Strom laut 
Datenblatt und scheint pinkompatibel zu sein.

Beste Grüße aus dem Rheinland :-).
Daniel

von Vn N. (wefwef_s)


Lesenswert?

Daniel Lo schrieb:
> Da hier natürlich die
> Autobatterie höher belastet wird, wenn der ATmega8 einfach aktiv bleibt
> während das Auto einfach nur in der Garage steht, möchte ich dem ein
> wenig entgegenwirken.
> Denke, daß ich schon recht zufrieden sein kann, wenn ich einen Ruhestrom
> von ca. 1mA erreiche.

Vergiss es. Die paar mA, die der AVR braucht, fallen da nun wirklich 
nicht ins Gewicht. Ich würde mir eher Sorgen um das mit Störungen 
verseuchte Boardnetz und das aus dem Eigenbau folgende Zulassungsproblem 
machen.

von Daniel L. (dannynrw)


Lesenswert?

Keine Sorge, es handelt sich dabei sowieso um ein Demofahrzeug, welches 
ausschließlich auf Ausstellungen und Messen bewegt wird. Wäre trotzdem 
um hilfreiche Tipps und Anregungen dankbar. Der Lerneffekt ist mir dabei 
doch viel wichtiger.

von Anja (Gast)


Lesenswert?

Daniel Lo schrieb:
> Wäre trotzdem
> um hilfreiche Tipps und Anregungen dankbar.

Meine Erfahrungen:
- den Oszillator bei niedrigen Frequenzen auch auf low power einstellen. 
(nicht full swing)

- Die Referenzspannung des ADC während des Sleeps ausschalten.

An einem ATMega168 im IDLE Mode habe ich mit 3,84 MHz Quarz CKDIV = 8 
(FCPU = 460kHz) und aufwecken alle 20 ms für 1,4% 520uA einschließlich 
LP2950 (5V) gemessen. LFUSE hierbei = 0x7D.

Gruß Anja

von Falk B. (falk)


Lesenswert?

@  Daniel Lo (dannynrw)

>Und zwar möchte ich mit relativ wenig Aufwand eine möglichst geringe
>Stromaufnahme erzielen. Da käme mir der Idle Mode gerade richtig.

Nö, Power Down, siehe leep Mode.


>Denke, daß ich schon recht zufrieden sein kann, wenn ich einen Ruhestrom
>von ca. 1mA erreiche.

Starkstrom.

>- Speisespannung des ATmega8 von bisher 5V auf 3V senken (ich arbeite
>mit dem LP2950 als Spannungsregler).

Bringt wenig.

>- Takt so gering wie möglich (denke an 2-1MHz).

Ist egal bei Power Down.

>- Habe noch gelesen, daß der ATmega8 auch schnell durch den ATmega88p
>ersetzt werden kann. Dieser verbraucht erheblich weniger Strom laut
>Datenblatt und scheint pinkompatibel zu sein.

Ja.

MfG
Falk

von Thomas E. (thomase)


Lesenswert?

Daniel Lo schrieb:
> Da hier natürlich die
> Autobatterie höher belastet wird, wenn der ATmega8 einfach aktiv bleibt
Das ist für eine 50A/h-Autobatterie natürlich eine rein akademische 
Betrachtung. Aber darum geht es ja nicht wirklch.
Daniel Lo schrieb:
> Habe noch gelesen, daß der ATmega8 auch schnell durch den ATmega88p
> ersetzt werden kann.
Das solltest du auch ganz schnell machen. Atmega88(p)a, möglicherweise 
reicht auch ein 48er, Power-Down und Pin-Change-Interrupt. Und dein 
Stromverbrauch sinkt unter 1µA. Denn wenn schon denn schon.


mfg.

von Daniel L. (dannynrw)


Lesenswert?

Beim Power Down ist ein Aufwecken aber nur noch durch die externen 
Interrupts (INT0, INT1) möglich, richtig? Somit müsste ich mein 
Platinenlayout ändern. Das hieße auch, wieder eine neue Platine ätzen.
Daher interessierte mich der Idle Mode. Ansonsten hast Du natürlich 
Recht mit der Aussage "wenn, dann richtig!".
Aber ich kann mich da sicherlich auch langsam herantasten. Leider habe 
ich bislang noch kein passendes Programmbeispiel mit dem Idle Mode 
gefunden, wo ich einfach mal spionieren könnte.
Ist denn meine anfängliche Aussage richtig, daß sich der ATmega aus dem 
Idle Mode einfach durch eine Signaländerung an beliebigen PINs aufwecken 
lässt?

Mfg
Daniel

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Daniel Lo schrieb:
> Beim Power Down ist ein Aufwecken aber nur noch durch die externen
> Interrupts (INT0, INT1) möglich, richtig?

Beim ATmega88 kannst Du auf ziemlich jedem Pin einen PCINT 
konfigurieren, der Deinen µC wieder aufweckt.

von Falk B. (falk)


Lesenswert?

@  Daniel Lo (dannynrw)

>Beim Power Down ist ein Aufwecken aber nur noch durch die externen
>Interrupts (INT0, INT1) möglich, richtig?

Ja.

>ich bislang noch kein passendes Programmbeispiel mit dem Idle Mode
>gefunden, wo ich einfach mal spionieren könnte.

Siehe Sleep Mode.

>Ist denn meine anfängliche Aussage richtig, daß sich der ATmega aus dem
>Idle Mode einfach durch eine Signaländerung an beliebigen PINs aufwecken
>lässt?

Jain, das können aber nur die moderneren Typen ala ATmega88 & Co.

MFG
Falk

von Markus W. (Firma: guloshop.de) (m-w)


Lesenswert?

Thomas Eckmann schrieb:
> Das solltest du auch ganz schnell machen. Atmega88(p)a, möglicherweise
> reicht auch ein 48er, Power-Down und Pin-Change-Interrupt. Und dein
> Stromverbrauch sinkt unter 1µA. Denn wenn schon denn schon.

Wohl wahr. Oder gleich den ATmega328, der manchmal billiger ist als der 
ATmega88.

Ich hab mit niedrigen Taktfrequenzen gute Erfahrungen gemacht. Grad, 
wenn nur einfache Aufgaben erledigt werden sollen, müsste der interne 
Oszillator mit 128 kHz reichen. Das senkt den Stromverbrauch im aktiven 
(!) Zustand auf 120 uA. Wenn man dann noch die Spannung von 5 auf 3 V 
senkt, sind es nur ca. 60 uA.

Meist spart man sich dadurch den Sonderweg über den Sleepmode mit all 
seinem Gewurstel.

von Daniel L. (dannynrw)


Lesenswert?

Hallo Markus,
danke für den Tipp mit der Taktfrequenz. Werde das mal ausprobieren und 
natürlich auch mal die Stromaufnahme messen. 120µA wäre ja schon 
wirklich riesig. Habe nämlich festgestellt, daß ich für meine Anwendung 
doch bei 5V Versorgungsspannung bleiben muß, da die 
Konstantstromquellen, die ich verwende, für das PWM-Signal mindestens 5V 
sehen wollen.
Ansonsten würde ich halt versuchen, den ATmega bei einer bestimmten 
Eingangskonstellation schlafen zu legen (sollte doch gehen oder? - Eine 
Möglichkeit, die ich in Betracht ziehen würde, wäre z.B. 
Zentralverriegelung geschlossen + Tür geschlossen + Zündung aus + ein 
wenig Wartezeit -> ATmega schlafen) und dann über einen externen 
Interrupt wieder aufzuwecken. Das einfachste wäre hierbei für mich: 
Zentralverriegelung auf -> ATmega aufwecken.
Beste Grüße :-).
Daniel

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.