www.mikrocontroller.net

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


Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim K. (minifloat)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joachim K. (minifloat)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Joachim K. (minifloat)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier nochmal ne modifizierte Version 2.

PS: R2 ist nicht unbedingt nötig.

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

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

Autor: Joachim K. (minifloat)
Datum:

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

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja stimmt. Hast recht!

Autor: Joachim K. (minifloat)
Datum:

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

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Auer (Firma: Embedded Microtec) (andi) Flattr this
Datum:

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

mfg,
Andreas

Autor: mh (Gast)
Datum:

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

Ist ja genial!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.