Forum: Mikrocontroller und Digitale Elektronik ATMEGA Auto Power Off without Button


von Helmut S. (helmut_s615)


Lesenswert?

Eine Schaltung mit ATMEGA328 ist im Wald Teil eines Geocache. Der 
Geocacher kommt und schaltet die Batterieversorgung durch einen 
versteckten Schalter ein. Dann hat er Spaß und soll danach die 
Batterieversorgung wieder ausschalten. Für den Fall, dass er vergisst, 
z. B. die Türe zu schließen, soll der ATMEGA sich vorher selbst die 
Stromversorgung abschalten können (z. B. MOSFET).
D.h. die gesuchte Timed-Power-Saver-Schaltung (dem ATMEGA vorgeschaltet) 
merkt sich bei minimalem Stromverbrauch, dass der Rest der Platine inkl. 
ATMEGA ohne Strom bleiben soll, solange die Türe noch offen ist oder mit 
anderen Worten, die Batterie noch angeschlossen ist.
Auf der anderen Seite soll die Schaltung, wenn nach einer kurzen Pause 
wieder Strom anliegt, den ATMEGA und Elektronik versorgen. D.h. wenn der 
nächste Geocacher kommt und die Türe kurz zumacht, geht alles wieder wie 
geplant.
Es ist also eine Art Notfall-Spannungsunterbrechung gesteuert durch ein 
kurzes digitales Signal, die durch Spannungsunterbrechung wieder gelöst 
wird.
Erst wenn die Stromversorgung unterbrochen wird und erneut verbunden 
wird, soll die Batterie den ATMEGA wieder erreichen.
Wäre für Ideen dankbar. Vermutlich gibt es das auch schon, ich weiß 
vielleicht einfach nicht, wie sowas heißt?

von N. M. (mani)


Lesenswert?

Warum nimmst du nicht einen anständigen Linearregler/SNT und lässt den 
Controller ständig am Strom?

Den Schalter machst du an den Interrupt der den Controller aus dem Sleep 
aufweckt.
Wenn jemand vergisst die Türe zu schließen gehst du nach Timeout 
trotzdem in den Sleep und wartest auf den nächsten Interrupt.

von Sebastian (Gast)


Lesenswert?

Warum benutzt du dafür nicht die Ruhezustände des Atmega328, und legst 
den uC nach Beendigung der Bespassung solange in den Tiefschlaf bis die 
Tür wieder aufgeht?

LG, Sebastian

von Micha (Gast)


Lesenswert?

Schau dir die Schaltung zum AVR-Transistortester an, die macht genau 
das was du suchst.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

N. M. schrieb:
> Warum nimmst du nicht einen anständigen Linearregler/SNT und lässt den
> Controller ständig am Strom?

Der braucht auch nur extra Energie.

Wenn man sich schon für eine Technologie wie AVR entscheidet, einer der 
Vorteile von dessen relativ groben Strukturen ist doch genau der, dass 
man das Ding von 1,8 bis 5,5 V betreiben kann.

Allerdings aus eigener Erfahrung von Geräten im Außeneinsatz: jede 
Größenordnung weniger Ruhestrom, die man erzielen möchte, vervielfacht 
den Aufwand. Peinlich sauberes Abwaschen der Flussmittelreste, Lackieren 
des Boards etc. – erst danach konnte ich einen ATmega wirklich jahrelang 
aus einem Batteriesatz (2 x LR03) betreiben.

von Helmut S. (helmut_s615)


Lesenswert?

Es hängt noch mehr Elektronik dran, u. a. ein Soundchip und diverse 
Lichtschranken. Daher wollte ich gern alles in einem Aufwasch 
abschalten.
Eine Möglichkeit wäre, den ATMEGA den Strom für die restlichen 
Komponenten schalten zu lassen, aber ich wollte mal den Versuch starten, 
ob man das noch einen Tick besser hinbekommt und alles abschalten kann.

von N. M. (mani)


Lesenswert?

Jörg W. schrieb:
> Wenn man sich schon für eine Technologie wie AVR entscheidet, einer der
> Vorteile von dessen relativ groben Strukturen ist doch genau der, dass
> man das Ding von 1,8 bis 5,5 V betreiben kann.

Hast du natürlich Recht. Wenn man in ganz weglässt ist es noch besser.

von Helmut S. (helmut_s615)


Lesenswert?

Das ist die Schaltung mit Taster. Da wüsste ich nicht, wie ich das 
anpassen kann. Ich habe nur einen Schalter zur Verfügung, der mit Öffnen 
der Tür schliesst und die Stromversorgung an die Platine durchleitet.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Helmut S. schrieb:
> Eine Möglichkeit wäre, den ATMEGA den Strom für die restlichen
> Komponenten schalten zu lassen,

Dann mach das.

> aber ich wollte mal den Versuch starten,
> ob man das noch einen Tick besser hinbekommt und alles abschalten kann.

Klar, das ist insbesondere im Hinblick auf Korrosion viel besser, wenn 
nicht alles unter Spannung steht. Aber wenn einer die Tür offen lässt 
und dein mechanischer Kontakt die Spannung zuschaltet, dann hast du doch 
wieder alles unter Spannung.

Was man sicher irgendwie hin bekäme: das Öffnen der Tür differenziert 
einen Impuls (über einen Kondensator), der dann eine 
Selbsthalteschaltung anwirft, die die eigentliche Spannungsversorgung 
übernimmt. Das Timing kann ja der Controller übernehmen. Dann ist der 
Zustand der Tür egal – um es später wieder einzuschalten, muss man die 
Tür halt erstmal schließen und erneut öffnen.

Nur die Selbsthalteschaltung ist dann dauerhaft unter Spannung.

von HildeK (Gast)


Lesenswert?

Jörg W. schrieb:
> Was man sicher irgendwie hin bekäme: das Öffnen der Tür differenziert
> einen Impuls (über einen Kondensator), der dann eine
> Selbsthalteschaltung anwirft, die die eigentliche Spannungsversorgung
> übernimmt.
Differenzieren wird notwendig sein, denn jede sonstige Variante wird bei 
einem dauerhaft geschlossenen Schaltkontakt über den notwendigen PU / PD 
einen Strom ziehen, der weit über dem eines schlafenden µCs liegt. 3V 
und 100k geben 30µA, ein µC im Tiefschlaf kann bei 0.1µA liegen, 
zumindest unter 1µA.
Gut, für den Mega328 habe ich keine Zahlen, es dürfte sich aber nicht 
wesentlich unterschieden. Man muss aber auch im Programm vor dem 
Tiefschlaf einige Dinge lahm legen ...

von Steve van de Grens (roehrmond)


Lesenswert?

Helmut S. schrieb:
> Das ist die Schaltung mit Taster. Da wüsste ich nicht, wie ich das
> anpassen kann. Ich habe nur einen Schalter zur Verfügung, der mit Öffnen
> der Tür schliesst und die Stromversorgung an die Platine durchleitet.

Ist es wenigstens ein Wechselschalter (mit 3 Anschlüssen)?

von Helmut S. (helmut_s615)


Lesenswert?

Steve van de Grens schrieb:
> Helmut S. schrieb:
>> Das ist die Schaltung mit Taster. Da wüsste ich nicht, wie ich das
>> anpassen kann. Ich habe nur einen Schalter zur Verfügung, der mit Öffnen
>> der Tür schliesst und die Stromversorgung an die Platine durchleitet.
>
> Ist es wenigstens ein Wechselschalter (mit 3 Anschlüssen)?

Leider nein. Ist schon verbaut und nur die Platine kann ohne riesen 
Aufwand getauscht werden.

von Steve van de Grens (roehrmond)


Lesenswert?

Helmut S. schrieb:
>> Ist es wenigstens ein Wechselschalter (mit 3 Anschlüssen)?
>Leider nein. Ist schon verbaut und nur die Platine kann ohne riesen
> Aufwand getauscht werden.

Man könnte den Mikrocontroller per Watchdog Timer alle 10 Sekunden 
aufwecken um kurz den Schalter zu checken. Dabei den Schalter nicht an 
die Versorgungsspannung klemmen, sondern an einen I/O Pin. Dann kann der 
µC den Schalter Stromlos machen während er schläft.
1
                ____
2
µC Pin o---------  -----|

Um den Schalter abzufragen, den Pin als Eingang mit Pull-Up 
konfigurieren. Kurz warten, dann den Pegel einlesen.

Beim Schlafen den Pull-Up deaktivieren.

von Peter D. (peda)


Lesenswert?

Geht ganz bequem mit dem Sleep-Mode.
Der AVR kann dann über einen MOSFET andere Lasten zuschalten.

Beitrag "Re: AVR Sleep Mode / Knight Rider"

von Helmut S. (helmut_s615)


Lesenswert?

Peter D. schrieb:
> Geht ganz bequem mit dem Sleep-Mode.
> Der AVR kann dann über einen MOSFET andere Lasten zuschalten.
>
> Beitrag "Re: AVR Sleep Mode / Knight Rider"

Danke, das Prinzip habe ich schon verwendet, ist wohl die beste 
Variante, die ich auch schnell hinbekomme.

von Helmut S. (helmut_s615)


Lesenswert?

HildeK schrieb:
> Jörg W. schrieb:
>> Was man sicher irgendwie hin bekäme: das Öffnen der Tür differenziert
>> einen Impuls (über einen Kondensator), der dann eine
>> Selbsthalteschaltung anwirft, die die eigentliche Spannungsversorgung
>> übernimmt.
> Differenzieren wird notwendig sein, denn jede sonstige Variante wird bei
> einem dauerhaft geschlossenen Schaltkontakt über den notwendigen PU / PD
> einen Strom ziehen, der weit über dem eines schlafenden µCs liegt. 3V
> und 100k geben 30µA, ein µC im Tiefschlaf kann bei 0.1µA liegen,
> zumindest unter 1µA.
> Gut, für den Mega328 habe ich keine Zahlen, es dürfte sich aber nicht
> wesentlich unterschieden. Man muss aber auch im Programm vor dem
> Tiefschlaf einige Dinge lahm legen ...

Danke, sehr guter Punkt. Das scheint letztlich das Problem, ich bekomme 
es nicht einfach und mit wenig Stromverbrauch hin.

von Ingo W. (uebrig) Benutzerseite


Lesenswert?

Steve van de Grens schrieb:
> Beim Schlafen den Pull-Up deaktivieren.

Dann muss aber auch der Pin auf Ausgang und Null, sonst floatet der in 
der Gegend rum und die Eingangsschaltung verbraucht Strom.

von HildeK (Gast)


Lesenswert?

Helmut S. schrieb:
> Das scheint letztlich das Problem, ich bekomme
> es nicht einfach und mit wenig Stromverbrauch hin.

Ja, richtig. Timer, auch der WD-Timer sind mit mehreren µA am 
Ruheverbrauch beteiligt. ADC ebenso. Mit dem PRR-Register kann man 
einiges deaktivieren.
Die andere Variante wurde oben schon erwähnt: Schau mal beim 
Transistortester. 
Beitrag "Re: Transistortester AVR"

Ich habe eine Schaltung mit einem Tiny861, die einmal täglich von einem 
RTC geweckt wird (wäre entsprechend ein Signal von dem Schalter mit 
Differenzierglied), ein EEPROM liest und zwei bis dreimal die Woche LEDs 
blinken lässt. Einen Taster zur Quittierung oder zum Abfragen, ob heute 
noch was ansteht bzw. Lamptest.
Die läuft seit Anfang 2018 mit dem ersten Satz von drei AA-Zellen.
Beitrag "Re: Mülltonnen-Blinker"

von S. Landolt (Gast)


Lesenswert?

Ingo W. schrieb:
> Steve van de Grens schrieb:
>> Beim Schlafen den Pull-Up deaktivieren.
>
> Dann muss aber auch der Pin auf Ausgang und Null, sonst floatet der in
> der Gegend rum und die Eingangsschaltung verbraucht Strom.

In sleep modes where both the I/O clock (clkI/O) and the ADC clock 
(clkADC) are stopped, the input buffers of the device will be disabled. 
This ensures that no power is consumed by the input logic when not 
needed.

von Stefan F. (Gast)


Lesenswert?

Ingo W. schrieb:
> Dann muss aber auch der Pin auf Ausgang und Null, sonst floatet der in
> der Gegend rum und die Eingangsschaltung verbraucht Strom.

Aus dem Datenblatt des ATmega328:

"If the input buffer is enabled and the input signal is left floating or 
have an analog signal level close to VCC/2, the input buffer will use 
excessive power... Digital input buffers can be disabled by writing to 
the Digital Input Disable Registers (DIDR1 andDIDR0)...most of the 
digital inputs are disabled in the deep sleep modes."

Allerdings reagieren hochohmige Eingänge auf Radiowellen, was wohl auch 
die Stromaufnahme erhöht, schätze ich. Den Pin auf LOW zu setzen kann 
jedenfalls nicht schaden.

von Manfred (Gast)


Lesenswert?

Helmut S. schrieb:
> soll der ATMEGA sich vorher selbst die
> Stromversorgung abschalten können (z. B. MOSFET).

Nicht sonderlich neu und sicher mehrfach im Forum zu finden.
Ich habe sowas erst vor wenigen Tagen gepostet:
Beitrag "Re: DS18B20 Identifier Schaltungsfragen"

Der NDP6020P (das P ist wichtig!) ist kaum noch verfügbar. Ersatz muß 
ein P-FET sein, der unter 3 Volt noch zuverlässig schaltet.

von Sebastian (Gast)


Lesenswert?

Manfred schrieb:
> ein P-FET sein, der unter 3 Volt noch zuverlässig schaltet.

Mein Standard-Logik-PFET IRLML2244?

LG, Sebastisn

von Manfred (Gast)


Lesenswert?

Sebastian schrieb:
> Manfred schrieb:
>> ein P-FET sein, der unter 3 Volt noch zuverlässig schaltet.
> Mein Standard-Logik-PFET IRLML2244

Ja, würde für diese Anwendung gut passen.

Damit man optimal durcheinander kommt, für dessen Ansteuerung einen 
IRLML6344 :-)

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.