Forum: Mikrocontroller und Digitale Elektronik MC soll sich selbst den Saft abdrehen können


von Thomas Schwetzer (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich plane eine Schaltung für's Auto mit einem AVR, die sich

1) bei einem Ereignis auf einem von drei Eingängen einschalten soll.

2) Sich selber komplett abschalten können soll, also nicht
nur den MC in irgendeinen Sleep-Modus versetzen soll.

Als V-Reg möchte ich einen LM2931 (5V) mit Inhibit (An=GND, Aus=Vin)
verwenden. Über diesen Inhibit soll sich der Controller den gesamten
5V-Teil, also auch sich selbst abschalten können.

Ich habe mal ein Idee als Skizze angehängt.

Wenn von den Eingängen 12V kommen, wird Q9 leitend, dadurch wird auch
Q7 leitend und der Inhibit-Pin des Vregs wird dauerhaft
auf GND gezogen. Damit ist die Schaltung an.

Kopfzerbrechen bereitet mir das Ausschalten.
Wenn der AVR Q8 durchschaltet, sollten Q9 und Q7 sperren und damit
der Saft ausgehen.
Da ich aber nicht weiß, wie schnell die 5V aus dem AVR runtergehen,
weiß ich nicht, ob Q8 lange genug leitend bleibt, um die
Schaltung sicher auszuschalten.

Hat jemand eine Idee, wie man das Ausschalten sicher kann,
ohne genaue Kenntnis, wie die Versorgung des AVRs und damit auch
das High am Ausgang absinken?

Oder gibt's eine andere (fertige) Lösung?


Frohe Weihnachten
Thomas


von ... (Gast)


Lesenswert?

>Hat jemand eine Idee, wie man das Ausschalten sicher kann,
>ohne genaue Kenntnis, wie die Versorgung des AVRs und damit auch
>das High am Ausgang absinken?

>Oder gibt's eine andere (fertige) Lösung?

Wenn du sicher sein willst, setze eine Sicherung in die Zuleitung, und 
verbinde die Sicherung über einen Relaiskontakt mit Masse. Das Relais 
wird dann vom Mikrocontrollerausgang ausgelöst. Danach hat der uC sicher 
keinen Saft mehr.

von snowman (Gast)


Angehängte Dateien:

Lesenswert?

wie wärs mit angehängter lösung (sehr rudimentär). du gibst dem uC saft 
(einschalten), darauf hin liefert er solange ein hi-pegel (vom uC) bis 
er sich abschalten will...

von Winfried (Gast)


Lesenswert?

Also von der Logik her würde ich es immer so machen, dass der Prozessor 
etwas abschaltet, wenn er ausschalten will. Also ein Portpin gegen 
Masse, der dann auch im ausgeschalteten Zustand auf Masse liegen bleibt. 
In dieser Schaltung habe ich das realisiert:

http://www.wikidorf.de/reintechnisch/Inhalt/AVRProjekt-1V-LED-Lampe

von Marco S. (masterof)


Lesenswert?

Wie wäre es mit einem Flipflop.
Den SET-Eingang mit deinen drei Eingänge verbinden und den RESET-Eingang 
mit dem AVR verbinden.

von Ssss S. (sssssss)


Lesenswert?

Hi!

Warum muss der avr sich ganz abschalten ?
Hab letztens mit nem attiny45 was gebastelt und der brauch nur
0,1uA (!) im sleep modus. Aufwachen ganz normal per Interruptpin.
(wichtig ist es alles abzuschalten und die sleep bits richtig zu setzen)

Da das ganze von zwei AA Zellen versorgt wird wollte ich das ganze auch
erst abschalten, bei 0,1 uA lohnt sich da aber der Schaltungsaufwand 
nicht ;)

Bye, Simon

von Jörg B. (manos)


Lesenswert?

Kann man 0,1µA noch messen? ;)

von Ssss S. (sssssss)


Lesenswert?

Ja. Zeigt zumindest mein Messgerät an 8)

Während der tiny mit zwei hellen LEDs läuft hab ich 10-20mA (pwm).
Wenn ich dann in den sleep gehe zeigt es 0,0 mA an, wenn ich dann 
umstöpsel
und auf uA stelle zeigt es nur noch 0,1uA an :)

Bevor ich rausgefunden habe wie man die ganzen internen Sachen 
abschaltet und wirklich auch den osc
stoppt kam ich immer nur auf 0,7mA.


Falls es wen interessiert:
1
void powerdown(){
2
        //avr: atTINY45
3
4
        //prepare for powerdown, switch off all LEDs:
5
        PORTB &= ~((1<<LED0) | (1<<LED1) | (1<<LED2));
6
7
        //switch all peripheral devices off:
8
        PRR = (1<<PRTIM0) | (1<<PRTIM1) | (1<<PRUSI) | (1<<PRADC);
9
10
        //BOD disable & sleep (must be within some clock cylces!)
11
        asm volatile ("cli "); //disable interrupts
12
        asm volatile ("push r16 "); //backup reg16
13
        asm volatile ("in r16, 85-0x20"); //MCUCR
14
        asm volatile ("ori r16, 0b00100000"); //set SE bit (b5)
15
        asm volatile ("out 85-0x20, r16"); //set MCUCR
16
        asm volatile ("ori r16, 0b10000100"); //set BODS (b7) and BODSE (b2)
17
        asm volatile ("out 85-0x20, r16"); //set MCUCR
18
        asm volatile ("andi r16, 0b11111011"); //clear BODSE (b2)
19
        asm volatile ("out 85-0x20, r16"); //set MCUCR
20
        asm volatile ("sei"); //enable ints again
21
        asm volatile ("sleep"); //sleeeep
22
        asm volatile ("pop r16 "); //restore r16
23
24
        //reactivate timer
25
        PRR = (0<<PRTIM0) | (0<<PRTIM1) | (1<<PRUSI) | (1<<PRADC);
26
}
So klappt es jedenfalls :) Ob das reactivate Timer sinn macht weiss ich 
grad nicht
mehr, kann sein dass es überflüssig is.
Aufpassen bei der Reihenfolge vor sleep, da muss man innerhalb von 3 
takten bleiben

Bye, Simon

von Thomas Schwetzer (Gast)


Lesenswert?

Hallo,

Irgendwelche Logik-Bausteine (Latches) brauchen im KFZ
dann doch auch wieder eine entprechend aufbereitete Versorgung.
Genau die möchte ich mir aber sparen und nur die "eine" 5V-Schiene
abschalten.

Und wie gesagt, es geht mir nicht um einen Sleep-Modus, egal
wie wenig der MC dann nur noch zieht.


Thomas

von Jörg B. (manos)


Lesenswert?

Bei 0,1µA könnte man aber schon mit einem einfachen Elko (oder Goldcap) 
auch bei ausgeschaltetem Spannungsregler eine gewisse Zeit überbrücken. 
Das Eine schließt das Andere nicht aus.

von Thomas Schwetzer (Gast)


Lesenswert?

Hallo Jörg,

ok, dann verrate mir doch, wie ich beim Ausschalten des
5V-Zweigs den Goldcap an den MC naschließe und nur an
an den MC.

Gruß
Thomas

von Albrecht Gündel (Gast)


Lesenswert?

den GoldCap einfach dranlassen.. ggf mit ner Diode vom Regler trennen...

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Also ich würde den µC ständig an 5V lassen und mittels Transistor oder 
MOSFET die weiterführende 5V-Schiene bei Bedarf ausschalten. Wenn der 
Controller also in Sleep geht, macht er vorher die 5V für die restliche 
Logik aus. Ein LP2950CZ5 nimmt als Ruhestrom 10µA, plus die 0.1µA vom 
Controller und vielleicht nochmal 0,1µA vom Transistor-Ruhestrom. Die 
Bordelektronik braucht mit Sicherheit das 100-fache und die 
Selbstentladung der Starterbatterie ist noch höher.

von Winfried (Gast)


Lesenswert?

In batteriebetriebenen Systemen macht ein Controller oft nur dann Sinn, 
wenn man die BOD-Überwachung eingeschaltet hat oder extern eine 
Supervisor-Chip dranhängen hat. Sonst kann so ein Controller total 
spinnen und wirres Zeugs machen. Wenn man aber beim Tiny 45 den BOD 
anschaltet, hat man gleich mal 20 uA mehr Stromverbrauch. Wenn man den 
Watchdog einschaltet, den man ebenso bei batteriebetriebenen Geräten oft 
braucht, hat man zusätzlich nochmal 15 uA.

Damit ist dann leider der Traum von geringen Strömen vorbei, die ein 
permanentes Eingeschaltetsein zulassen.

In den letzten 15 Jahren habe ich schon mehrfach batteriebetriebene 
Prozesessoren erlebt, die völligen Unfug gemacht haben, bis man sie 
wieder resetet hat. Das Programm war jedoch in Ordnung, es war also kein 
Softwarebug.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Gut - ich denke, selbst diese 35µA kann man im Auto locker verschmerzen, 
wie gesagt, die Selbstentladung ist bei Weitem höher. Das Autoradio und 
die Bordelektronik brauchen auch entschieden mehr im Standby. Bei 
kleinen transportablen Geräten ist das freilich schon ein 
K.O.-Kriterium.

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.