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
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.
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.
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
@ 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
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.
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
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.
@ 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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.