Forum: Mikrocontroller und Digitale Elektronik Batterie- oder Netzbetrieb erkennen


von Dirki (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich betreibe einen Atmega328 über drei 1,5V Batterien. Man kann aber 
auch ein Netzteil anschließen. Folgende Schaltung habe ich mir überlegt 
(ANHANG). Ich habe wenig Platz auf der Platine, daher die Minimallösung 
mit zwei Dioden. Was haltet ihr von der Schaltung?

Der Atmega hängt an VDD und GND.

Jetzt hätte ich gerne, dass der Mikrocontroller erkennt, ob ein Netzteil 
angeschlossen ist, oder nicht.

1. Vielleicht das 5V Signal des 7805 auf einen Portpin führen? Brauche 
ich dann einen Pulldownwiderstand, falls das Netzteil gelöst wird? Die 
5V müssen dann ja abfallen und dürfen nicht von C2 gehalten werden. Was 
passiert, wenn der µC kurzzeitig mit VDD=4..4.5V betrieben wird und noch 
5V am IO-Pin hat?

2. Spannungsteiler an 5V des 7805 und dann 4/5 * 5V an den IO-Pin? Über 
die Widerstände könnte sich dann der Kondensator entladen.

3. AD-Wandlung...

Ich hätte gerne eine Lösung die möglichst wenig Bauteile benötigt und 
nichts kaputt macht ;) An liebsten nur eine Leitung wie in 1. ohne 
Pulldown. Die ganze Schaltung soll auf eine Briefmarke passen.

Danke und viele Grüße
Dirki

von H.Joachim S. (crazyhorse)


Lesenswert?

Vdd als Vref und die interne Referenz (1,1V) messen. Daraus kannst du 
rückwärts unterscheiden, ob das Teil mit 4,5V oder 5V betrieben wird.

von Boris O. (bohnsorg) Benutzerseite


Lesenswert?

Zuvorderst: aufpassen bei sog. back powering. Ein Blick ins Handbuch und 
etwas Erfahrung zeigt, dass die Schutzdioden an jedem Eingang gegen VCC 
geschaltet sind. Legt man dort eine Spannung an, wird sie über die 
Schutzdiode abzgl. der Vorwärtsspannung in die Versorgung eingespeist. 
Da einige Mikrocontroller schon mit 1-2V zuverlässig arbeiten, braucht 
es eine überlegte Trennung.

Den ADC dafür einzusetzen halte ich für eine teure Variante. Du möchtest 
ja nur ein zweiwertiges Signal erhalten: Batterie/ keine Batterie, resp. 
kein Netzteil/ Netzteil. Dafür genügt es, einen Portpin mit MOSFET zu 
versehen und das Gate des MOSFET vom Netzteil steuern zu lassen. Wenn du 
den extzernen Pull-Up sparen willst, nimm die internen. Mit Pull-Down 
ginge es auch. Bei Anschluss an einen der INT-Anschlüsse (wenigstens 
INT0, manchmal noch INT1), könntest du sogar eine Interrupt-Routine 
verwenden, die aus einem Schlafzustand weckt. (Sonst genügen auch die 
PCINT-Routinen.)

Außerdem schlage ich vor, die Schaltung weiter zu verbessern. Die Diode 
in der Zuleitung des Netzteils sollte bleiben. Die in der Zuleitung der 
Batterien sollte gegen einen PMOS-Transistor ersetzt werden, dessen Gate 
ebenfalls vom Netzteil hochgezogen wird und ansonsten mit einem 
(100k-)Pull-Down beschaltet ist. Sobald das Netzteil eingesteckt wird, 
sperrt der MOSFET und ohne Netzteil haben die Batterien nur einen 
kleinen Reihenwiderstand in Höhe des RDSon – Batterien werden tiefer 
entladen/ läuft länger.

von Frank K. (fchk)


Lesenswert?

Dirki schrieb:
> Hallo zusammen,
>
> ich betreibe einen Atmega328 über drei 1,5V Batterien. Man kann aber
> auch ein Netzteil anschließen. Folgende Schaltung habe ich mir überlegt
> (ANHANG). Ich habe wenig Platz auf der Platine, daher die Minimallösung
> mit zwei Dioden. Was haltet ihr von der Schaltung?

Wenn Du WIRKLICH wenig Platz hättest, würde es auch eine BAT54A tun. 1A 
zieht Deine Schaltung wahrscheinlich nicht.

Denke daran, dass Du so nur 4V im Batteriebetrieb am Prozessor hast. Das 
reicht für 20 MHz nicht mehr aus.

Ganz andere Möglichkeit: Schaltbuchse verwenden. Viele 
DC-Hochlstecker-Netzteilbuchsen haben einen Schaltkontakt: Stecker rein 
-> Netzteilbetrieb, Stecker raus -> Batteriebetrieb. Reine Mechanik, 
kein Spannungsverlust.

Oder: Du kannst über einen MCP1755T-5002E/DC nachdenken. Der hat einen 
Power-Good Ausgang (open drain!), der auf Low gezogen wird, wenn die 
Ausgangsspannung stabil ansteht. Mit diesem Signal kannst Du dann einen 
Load Switch ansteuern, der dann die Batterie abdreht, und der Prozessor 
kann das Signal auch auswerten.

fchk

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.