Forum: Mikrocontroller und Digitale Elektronik Stromsparen atmega16


von Mathias G. (matze24)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe da eine Frag zum Stromsparen mit dem atmega16. Entschuldigt 
bitte den nicht allzu schönen Schaltplan, aber dies ist mein erstes 
Projekt.
Sinn der Schaltung: Sie soll einen Motor morgens und abends ansteuern um 
ein Türchen zu öffnen/schließen.

Mein Problem ist nun, dass wenn ich in den Power-down Mode gehe, ich nur 
entweder mit den externen Interrupts INT0, INT1 oder mit dem WDT 
aufwachen kann.

Das Problem mit dem WDT ist aber, dass er immer einen Reset durchfüht. 
Nun wollte ich fragen ob es eine bessere Lösung gibt für das Aufwachen. 
Externe Schaltung die einen Interrupt auslöst oder ähnliches? Das ganze 
natürlich Stromsparend, soll ja Batteriebetrieben sein das ganze.

Oder eine Softwaretechnische Lösung. Ist es möglich lange 
Batterielaufzeiten mit dem Idle-Mode zu bekommen?

Vielen Dank für eure Tipps!

von Eumel (Gast)


Lesenswert?

Mathias G. schrieb:
> Das Problem mit dem WDT ist aber, dass er immer einen Reset durchfüht.

Also bei den AVRs die ich benutze ist dem nicht so, kann man auswählen 
ob es ein Reset oder ein normaler Interrupt sein soll.
Aber keine Ahnung wie das beim Dino Atmega16 ist.

von Mathias G. (matze24)


Lesenswert?

Ja ich weiß, dass das zB mit dem Atmega168 möglich wäre. Beim Atmega16 
funktioniert das aber leider nicht so weit ich das gelesen habe...

von Eumel (Gast)


Lesenswert?

Wie wärs mit einem RTC Modul das du einfach als Interrutquelle (z.b. 
jede Sekunden) nutzt? Die aktuellen RTCs brauchen so um die 200 nA.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Mathias G. schrieb:
> Das Problem mit dem WDT ist aber, dass er immer einen Reset durchfüht.

Das tut er, aber es gibt im MCR ein Bit, was dir sagt, das es der WD 
war. Frag das ab, checke kurz deine Sensoren und leg ihn wieder 
schlafen.
Wenn das Bit nicht gesetzt ist, mach deinen normalen Reset.

von Thomas E. (thomase)


Lesenswert?

Mathias G. schrieb:
> atmega16.
Wo hast du den denn ausgebuddelt?

Mathias G. schrieb:
> Das Problem mit dem WDT ist aber
Den kannst du, wie schon gesagt wurde, auch als Timer benutzen. 
Verbraucht aber zuviel Strom.
Günstiger ist ein Uhrenquarz am Timer 2.

Und wenn du es ein bisschen moderner und richtug stromsparend möchtest 
nimmst du einen Atmega164pa:
>>Power-save Mode: 0.6μA (Including 32kHz RTC)

mfg.

von Frank K. (fchk)


Lesenswert?

Mathias G. schrieb:
> Ja ich weiß, dass das zB mit dem Atmega168 möglich wäre. Beim Atmega16
> funktioniert das aber leider nicht so weit ich das gelesen habe...

Warum hast Du denn überhaupt so einen alten Chip genommen? Ein 
Atmega164PA hat die gleiche Pinbelegung, ist aber von sich aus deutlich 
stromsparender, hat den erweiterten Watchdog, der auch einen Interrupt 
anstelle eines Resets auslösen kann, und noch etliche andere Vorteile. 
Es gibt keinen Grund, neue Projekte mit alten Chips anzufangen. Die sind 
noch nicht einmal billiger.

So, fürs nächste Mal weißt Du das.

fchk

von Mathias G. (matze24)


Lesenswert?

Oke, danke für die raschen antworten.
Den Atmega16 kenn ich aus der Schule und dachte mir zum Einstieg nicht 
schlecht :D

Vielen Dank für die Tipps!
Werde mir mal die verschiedenen Möglichkeiten zu gemüte führen.

von Ulrich (Gast)


Lesenswert?

Wenn es sparsam werden soll, ist der 7805 als Spannungsregler schon mal 
der erste Fehler - da gibt es deutlich sparsamere Ausführungen, und sei 
es nur ein 78L05. Deutlich sparsamer wäre z.B. ein MCP1703. Weniger als 
5 V wären Stromsparender, machen aber die direkte Ansteuerung der 
H-Brücke noch schwieriger.

Die H-Brücke für den Motor klappt so nicht, denn die P-Kanal Mosfets 
werden nie ausschalten. Dafür reicht die Spannung vom µC nicht. Da muss 
also noch was anderes hin, z.B. 2 extra stufen mit NPN Transistoren 
davor. Strom brauchen die nur wenn der Motor läuft, und das auch 
deutlich weniger als der Motor.

Je nach Anforderungen des Programms könnte man den µC als Ganzes mit 
einem 32 kHz Quarz laufen lassen - das ist nicht optimal, aber relativ 
einfach.

Eine andere Möglichkeit wäre es Timer2 mit einem externen 32 kHz Quarz 
laufen zu lassen und zum aufwecken zu nutzen. Der µC selbst wird dann 
z.B. mit dem internen RC Ttakt laufen.

Wenn es wirklich sparsam sein soll, wäre ggf. noch ein anderer 
modernerer µC sinnvoll, z.B. ein Mega324P oder ähnliches.

Der Teiler für die Messung der Batteriespannung darf viel hochohmiger 
(z.B. 4,7 M und 2,2 M || 100 nF)  werden, wenn man einen Kondensator 
einplant. Der FET zum Abschalten funktioniert so ohnehin nicht - man 
müsste schon die High Side schalten, und das braucht 2 Transistoren.

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.