Hallole, mich würde interessieren wie ihr so das Ausschalten ("Shutdown") der "Versorgungsspannung" beim AVR software technisch realisiert habt. Sprich wenn der Benutzer mit einem Schalter die Spannung ausschaltet, würde ich gerne zuvor noch einige Aktionen tun. Als Beispiel, wenn man einen Batteriebetrieben GPS-Logger hat und der Benutzer schaltet das Gerät aus, würde ich gerne noch die letzten gemessenen Daten speichern. Was sind euch für Ideen gekommen? Habe mir schon überlegt die Versorgungsspannung zu kontrollieren und wenn die nicht mehr da ist, mit Hilfe einer Backup-Batterie die notwendigen Dinge zu tun. Aber diese würde ich mir gerne sparen. Grüße Ingo
Das nennt sich AFIAK "Brown-out detection" und haben viele (alle aktuellen) AVR eingebaut. Je nache Menge der zu sichernden Daten braucht man dann noch einen entsprechend grossen Kondensator. Übrigens ist es bei heutigen Geräte üblich einen "Softswitch" einzubauen: Dabei wird über den "An-/Aus-Taster" der Mikrocontroller angewiesen, in den Sleep-Mode zu gehen oder aus diesem zu erwachen. Der Controller steuert dann auch noch per Highside-Switch (p-kanalMOSFET im einfachsten Fall) den Stromzufluß der restlichen Periferie.
Der Brown-Out Reset hält den AVR in einem definierten RESET-Zustand, in dem er keinen Unfug anstellen kann. Ab 2,7 oder 4,0V (je nach Einstellung) fällt der AVR in den Reset-Zustand. Vorteil: sachen wie Eeprom schreiben oder angeschlossene ICs mit unsinnigen Daten füttern, geht nicht mehr. Das was du willst, musst du mit einer eigenen Erkennung der Versorgungsspannung und einem ausreichend groß dimensionierten Kondensator anstellen.
>Der Brown-Out *Reset*
Stimmt...da war doch was mit dem Reset-Status-Register.
Da konnt man nämnlich die Reset-Quelle feststellen.
Mit dem Analog-Komparator könnte man die Aufgabe aber erledigen.
Super, vielen Dank für das schnelle Feedback. Also wenn ich das richtige verstehe gibt es zwei Möglichkeiten: 1) mit Analog-Komparator VCC messen und gegebenenfalls noch mit einem Kondensator die zu erledigende Arbeit tun. Das hiesse aber ich brauche Platz für einen dicken Kondensator, müßte natürlich erstmal messen was ich überhaupt für eine Leistung brauche. 2) "Softswitch" finde ich fast besser. Sprich ich tausche meinen "harten" Ausschalter durch einen Taster aus. Der dann einen Externen Interrupt auslöst, mit dem ich den AVR wecke oder zum schlafen lege, oder ? Habt ihr vielleicht konkrete Schaltpläne wo ihr den prellfreien Taster und die Abschaltung mit p-kanalMOSFET schon realisiert habt? Grüße Ingo
Ich habe es mit einem Taster der einen Umschalter enthält gelöst. Ein P-MOSFET in die Versorgungsleitung rein. Am Gate einen Widerstand von ca. 240 Ohm und einen 10K auf + zum Gate. Dadurch sperrt der MOSFET erstmal. Nun einen Umschalttaster von GND ans Gate. Wird der Taster gedrückt zieht er das Gate auf Masse und der MOSFET steuert durch und die nachfolgende Schaltung wird mit Power versorgt. Um zu verhindern das beim Loslassen des Taster der MOSFET wieder sperrt wird das Gate noch zusätzlich an einen PIN des AVRs gelegt. Beim Powerup des AVRs wird dieser PIN auf GND gelegt. So bald also der Taster gedrückt wird startet der AVR der dann selber das Gate auf GND legt über einen Pin. Wird der taster losgelassen so hält also der AVR den MOSFET offen. Der AVR kann also zu jeder Zeit indem er diesen Pin auf High setzt seine eigene Power abschalten. Der andere Kontakt des Taster wird ebenfalls an einen Pin am AVR gelegt. Dieser Pin ist Eingang mit aktiviertem PullUp. Wenn der taster gedrück wird liegt an diesem Pin also HIGH über den internen Pullup an. Ist der Taster losgelassen dann liegt LOW an da der Taster ja gegen GND durchschaltet. Wir können also anhand diese Pins feststellen ob der Taster gedrückt ist. Wenn der AVR nun läuft und der Anwender alles ausschalten möchte so drückt der Anwender einfach den Taster. Über den Input Pin am AVR kriegen wir das mit. Speichern unsere Daten zwischen und setzen den Ouput Pin auf HIGH. So bald der Taster losgelassen wird sperrt also unser MOSFET und die Schaltung wird von der Versorgungsspannung getrennt. Statt einem Umschalter kannst du auch einen einfachen Taster nehmen. Der muß aber dann per Diode ans Gate gekoppelt werden und zwischen Diode und Taster gehen wir zum Eingangs Pin am AVR. Gruß Hagen
Hallo, ich weiss, der Thread ist schon sehr alt, ich brauche aber genau so eine Schaltung und habe per Suche nach "softswitch" nichts Sinnvolles finden können. Könnte jemand (Hagen?) mal die Schaltung posten, insbesondere die Version mit Taster und Diode? Das wäre sehr freundlich. Mir ist nämlich nicht ganz klar, wo der 240 Ohm Widerstand hinkommt. Danke und Gruß Malte
Wozu externe MOSFETs, wenn die AVRs auch in den Winterschlaf (=verschwindend geringer Stromverbrauch) fallen können? Aufwecken und schlafenlegen geht per Taster am INT-Pin.
Würde sagen das Bild des FET`s ist ein N Kanal. Mit P Kanal müsste das aber so funktionieren. Gruss
@ Malte (Gast) >es wird nicht nur der AVR geschaltet, sondern auch Display etc. ja eben. Der AVR wird in den Power Down Sleep Mode versetzt, Stromverbrauch kleiner als 1uA. Der AVR schaltet eien normalen P-Kanal MOSFET für die anderen Verbraucher. Der Taster hängt am INT0 oder einem Pin mit Pin Change Interrupt, um den AVR wieder zu wecken. Fettig. MfG Falk
@ Oliver: danke! @ Falk: Ok, aber mir ist nicht klar, was das für Vorteile hätte (ausser dass man die Diode spart). Stromverbrauch im abgeschalteten Zustand ist nicht so wichtig, da es sich um ein Gerät handelt, bei dem man nach dem Abschalten sowieso den Stromstecker zieht. Die Schaltung soll nur kontrolliert "runtergefahren" werden. Gruß Malte
Malte schrieb: > bei dem man nach dem > Abschalten sowieso den Stromstecker zieht. Die Schaltung soll nur > kontrolliert "runtergefahren" werden. Dann reicht es ja, alle Daten zu sichern und den Controller in eine Endlosschleife zu schicken. Außerdem : Speicher: EEPROM Schreibzugriffe minimieren
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.