Forum: Mikrocontroller und Digitale Elektronik Versorgung mit AVR ein-/ausschalten


von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab wiedermal eine Frage. Und zwar gehts darum, dass ich eine 
Schaltung habe, die ich aus 2x AA-Batterien versorgen möchte. Mit einem 
DC-DC Regler wird die Spannung auf 3,3V gereglt. Der DC-DC Regler hat 
einen Enable Pin (high = enabled) mit dem der Regler ein und 
ausgeschaltet werden kann.
Mein Prozessor liest noch ein paar Tasten ein. Und eine dieser Tasten 
möchte ich verwenden um die gesamte Schaltung ein- bzw. auszuschalten 
(also wirklich Versorgung ein- und ausschalten). D.h. DC-DC Regler 
ein-/ausschalten.

Vorweg... ich weiß, dass es solche Beiträge hier schon gegeben hat. Was 
richtig passendes hab ich aber leider nicht gefunden.
Ich hab mal meine Schaltung in den Anhang eingefügt. Und zwar habe ich 
versucht über einen Transistor den Enable Pin des DC-DC Reglers an die 
Batteriespannung zu legen, wenn der Taster gedrückt wird. Dann sollte 
der Prozessor anlaufen und mit dem V_enable Pin die Versorgung aufrecht 
erhalten, wenn er gegen Masse zieht. Das Problem, das ich im Vorfeld 
leider nicht beachtet hab ist, dass über den "BTN" Pin des AVR und der 
internen Schutzdiode ein Strom gegen VCC fließt und somit die Schaltung 
versorgt.

Weiß jemand eine Möglichkeit das Problem zu lösen?? Eine Vorgabe ist, 
dass der Schalter mit dem Widerstand gegen Masse schaltet. Das kann ich 
so nicht wirklich ändern.

Danke euch,
Andreas

von H.Joachim S. (crazyhorse)


Lesenswert?

der übliche Weg:
-AVR direkt aus der Batterie betreiben und den in powerdown schicken
-Taster an einen Int-Eingang, um den MC zu wecken
-weitere Peripherie idealerweise über p-FET ein/ausschalten

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Als Workaround schick ich den AVR momentan schon in den Powerdown Mode 
und lasse ihn über einen Pin Change Interrupt wecken.

Problem: Schaltung benötigt noch immer ca. 2mA, da ich die Peripherie 
nicht abschalten kann. Deshalb wäre mir eine Lösung lieber mit der ich 
den Controller von der Versorgung trennen kann.

mfg
Andreas

von Achim M. (minifloat)


Lesenswert?

Ansatz 1:

R2 und R3 würde ich rauswerfen und stattdessen zwischen Knoten R1/Basis 
und Knoten D1A/D2A einen Widerstand rein tun. Wenn R1 und der Widerstand 
genügend
hochohmig sind, fließt da so gut wie kein Strom. Oder einfach ohne R1 
das ganze.

Ansatz 2:

V_enable--|>|--enable.
Direkt mit V_enable eine Spannung auf enable geben.
D1 und R2 fliegen raus.

R3 beim Taster wird entfernt, und stattdessen vor die Basis gepackt. Von 
diesem Widerstand aus direkt zum Taster, der jetzt direkt nach Masse 
schaltet. Von BTN aus kommt eine Diode in Flussrichtung zum Taster.
Der interne Pullup im AVR sorgt dafür, dass man den Taster bequem 
einlesen kann.

Beide Dioden Verhindern, dass der Controller von außen versorgt wird.

Hoffe das war jetzt so verständlich.

mfg mf

von Achim M. (minifloat)


Lesenswert?

Andreas Auer schrieb:
> Eine Vorgabe ist,
> dass der Schalter mit dem Widerstand gegen Masse schaltet.

Wenn der Widerstand drin bleiben soll, dann mach einen 0Ω widerstand 
rein ;)

von Achim M. (minifloat)


Angehängte Dateien:

Lesenswert?

Hier nochmal ne modifizierte Version 2.

PS: R2 ist nicht unbedingt nötig.

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Wie gesagt R3 kann ich leider nicht auf 0 Ohm ändern. Ist leider nicht 
drinnen. Aber du hast mich auf die richtige Idee gebracht... Und war die 
Diode in Flussrichtung vom BTN Eingang zum Taster.
Damit kann kein Strom in den Prozessor fließen und ich kann den Status 
des Tasters noch immer richtig auslesen.

Danke! Das glaub ich sollte funktionieren!

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Deine vereinfachte Schaltung sieht auch gut aus! Aber wie gesagt... ich 
muss R3 drinnen lassen.

von Achim M. (minifloat)


Lesenswert?

Wenn du nur die Diode beim Taster rein tust, besteht das 
unerwünscht-Versorgen-Problem immer noch am V_enable Pin.

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Ja stimmt. Hast recht!

von Achim M. (minifloat)


Lesenswert?

Wozu ist denn der R3 gut, dass du ihn nicht woanders hin tun kannst?

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Ich hab 10 Tasten, die ich über ein Schieberegister auslese (8 übers 
Schieberegister und 2 direkt). Die Tasten sind mit 1k Pullups auf 
Versorgungsspannung "vorgespannt", liegen am Paralleleingang des 
Schieberegisters und haben alle einen gemeinsamen Anschluss. Dieser geht 
auch direkt auf den AVR und hängt über diesen R3 mit 100k gegen Masse.

                    Taster
3,3V <----[#1k#]-+-o -^- o-----+----- Common (AVR)
                 |             |
   SHIFT <-------+            +-+
   REGISTER                R3 | | 100k
                              +-+
                               |
                              ---
                              GND

Der Common ist als Eingang ohne Pullup geschaltet. Wenn jetzt einen 
Taste gedrückt wird, wird der Common Eingang high und ich bekomm einen 
Pin Change Interrupt (verwend ich auch um den AVR aus dem Power Down 
Mode aufzuwecken). Um die Tasten jetzt auszulesen, schalt ich den Common 
als Ausgang und geb low aus. Damit liegen die gedrückten Tasten auf 
Masse, die ich dann im Schieberegister "latche". Und danach clock ich 
die Daten raus.

-> Erspart mir das Pollen und ständige Auslesen des Schieberegisters

von Andreas A. (Firma: Embedded Microtec) (andi) Flattr this


Lesenswert?

Nochmal danke für die Hilfe. Hab das gestern geändert und es hat 
geklappt.

mfg,
Andreas

von mh (Gast)


Lesenswert?

Andreas Auer schrieb:
> -> Erspart mir das Pollen und ständige Auslesen des Schieberegisters

Ist ja genial!

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.