Hallo Leute, ich hätte da mal eine Frage und Bitte um Tipps zu folgendem Problem. Ich habe eine Schaltung mit einem AVR 644, an der verschiedene Sensoren angeschlossen sind. Bei einem normalen Start werden diese zunächst genauer kalibriert und getestet, alles mit ein wenig Zeitaufwand verbunden. Ich möchte nun kurze Spannungsunterbrechungen im Sekundenbereich (bis ca. 2-3 Sekunden) erkennen, um dann quasi einen Warmstart ohne Kalibrierungen durchführen zu können. Ausserdem sollen diese Unterbrechungen zur Information und Fehlerdiagnose angezeigt werden. Die Brown-Out-Detection kann ja nun nicht unterscheiden, wie lang die Unterbrechung war (AVR nur normal ausgeschaltet oder kurz Spannung weg)?! Ich hab mit daher die folgende einfache Schaltung überlegt: VCC | | - | | | | R | | - | |----- AVR-Port | ----- ----- C | | GND Bei längeren Spannungsunterbrechungen wird der Kondensator über den Widerstand und die angeschlossenen Verbraucher entladen. Beim Starten des AVR (die Port-Pins sollten nach einem Reset auf Input, PullUp disabled stehen !?) wird zunächst der Pegel des (digitalen) Ports abgefragt. Wenn dieser noch einen High-Pegel hat, kann von einer kurzen Unterbrechung ausgegangen werden und ein Warmstart durchgeführt werden. Als Werte für R und C hatte ich so an 4,7M und 1µF gedacht. Ich hoffe, dass C nicht zu klein ist ?!? Kann das so funktionieren oder gibt es da evtl. eine andere Möglichkeit, die kurze Spannungsunterbrechung zu erkennen. Gruß und vielen Dank! Dirk
Das wird so vermutlich nicht funktionieren, da nicht man i.d.R. nicht sagen kann, was der Port vom AVR macht, wenn der µC keinen Saft hat. Es ist durchaus möglich, dass der Kondensator beim Ausfall der Spannungsversorgung ruckzuck entladen wird. Wenn man zwischen den Portpin und den Kondensator noch einen ausreichend hochohmigen Widerstand einbaut, könnte es aber klappen.
Wenn deine Stromversorgung aus einem Trafo mit Brückengleichrichter kommt, kannst du in Reihe eine Diode zum Siebelko schalten. An der Kathode der Diode hast du dann die gleichgerichtete, aber ungesiebte Spannung. Da kannst du über einen Widerstand an den Interruteingang des Controllers gehen. MW
@ Dirk Schmidt (disc) >Die Brown-Out-Detection kann ja nun nicht unterscheiden, wie lang die >Unterbrechung war (AVR nur normal ausgeschaltet oder kurz Spannung >weg)?! Doch. Im MCSR stehen verschiede Bits, die sagen, ob der Reset durch Broun-out oder Power On Reset ausgelöst wurde. MfG Falk
ggf die Leitung zum AVR Port zusätzlich zu Johannes´s Widerstand noch über einen Schmitt-Trigger führen, dass du am AVR Port entweder High oder Low hast und nicht irgendeinen undefinierten Pegel. Du könntest auch die Leitung zum AVR mittels eines FETs unterbrechen, wenn keine Versorgungssapnnung da ist (über Gate wird das Fehlen der Spannung erkannt und der FET schaltet hochohmig)
@ Schlumpf (Gast) >ggf die Leitung zum AVR Port zusätzlich zu Johannes´s Widerstand noch >über einen Schmitt-Trigger führen, dass du am AVR Port entweder High Der AVR hat schon Schmitt-Trigger Eingänge. MFG Falk
Hallo Leute, das ging ja fix mit den Antworten. @Johannes Im Datenblatt des AVR steht, dass die Port-Pins hochohmig sind, bei einer "Reset-Condition". Da würde ich den stromlosen Zustand eigentlich dazuzählen. Zitat: "The port pins are tri-stated when reset condition becomes active, even if no clocks are running." Aber die Idee mit dem zusätzlichen Widerstand ist nicht schlecht. @Michael Einen Trafo mit Brückengleichrichter hab ich nicht. Die letzte Stufe der Spannungsversorgung wird mit einem Linearregler durchgeführt. Ich hab auch schon überlegt, an den da vorhandenen Siebelko zu gehen. Aber ich denke, der ist ja recht schnell vom Regler wieder aufgeladen, bevor der ARV überhaupt richtig in die Gänge kommt und ich da was messen kann. @Falk Das Brown Out Flag im MCSR sagt aber leider nicht aus, wie lang die Stromunterbrechung war, die zum Brown Out geführt hat. Es zeigt auch etwas an, wenn der Strom einfach ganz normal nach Benutzung unterbrochen/abgeschaltet wurde. Es ist beim Start (ich lese das Flag da ein und setzte es nach dem Lesen wieder zurück) eigentlich nur nicht gesetzt, wenn man manuell ein Reset (per Reset-Taster) bei vorhandener Spannung durchführt hat. Gruß Dirk
Dirk Schmidt wrote: > Im Datenblatt des AVR steht, dass die Port-Pins hochohmig sind, bei > einer "Reset-Condition". Da würde ich den stromlosen Zustand eigentlich > dazuzählen. > Zitat: "The port pins are tri-stated when reset condition becomes > active, > even if no clocks are running." > Aber die Idee mit dem zusätzlichen Widerstand ist nicht schlecht. Wenn der µC keinen Saft hat, hast Du aber keine Reset-Condition, sondern eine "Kein-Saft-da-Condition"! Reset-Condition setzt voraus, dass VCC im angegebenen Betriebsbereich liegt.
@ Dirk Schmidt (disc) >Das Brown Out Flag im MCSR sagt aber leider nicht aus, wie lang die >Stromunterbrechung war, die zum Brown Out geführt hat. Es zeigt auch Naja, du willst die ja nicht messen. Ob das nun 1ms oder 3s waren ist doch egal. ABER! Es gibt einen Unterschied zwischen Brown Out und Power ON Reset! Und DAS willst du doch! >etwas an, wenn der Strom einfach ganz normal nach Benutzung >unterbrochen/abgeschaltet wurde. Nein, dann ist NUR der Power On Reset aktiv, signalisiert durch PORF im Register MCUCSR. > Es ist beim Start (ich lese das Flag da >ein und setzte es nach dem Lesen wieder zurück) eigentlich nur nicht >gesetzt, wenn man manuell ein Reset (per Reset-Taster) bei vorhandener >Spannung durchführt hat. Das ist ein exteren Reset, signalisiert durch EXTRF. Lies das Kapitel "System Control and Reset" nochmal genau. MfG Falk
Hallo! @Falk Der Tip mit dem PORF ist gut! Da kann ich mir evtl. die ganze Schaltung oben sparen :-). Wie Du schon bemerkt hast, hatte ich mir das Kapitel wohl schon durchgelesen, aber wohl nicht genau genug ;-). Ich werde die Sache gleich mal ausprobieren. Vielen Dank. Dirk
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.