MC soll sich selbst den Saft abdrehen können

Gast #462814
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

Angehängte Dateien:
Gast #462819
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.
#462875
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
#462883
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
Gast #462884
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
(Firma: TravelRec.) Persönliche Seite #462995
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.
Gast #463088
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren