Forum: Mikrocontroller und Digitale Elektronik Batteriespannung überwachen mit wenig Energiebedarf


von Wulf K. (cyberwulf)


Lesenswert?

Hallo zusammen,

ich habe eine Schaltung mit ATmega8 entworfen, die direkt per Batterie 
gespeist wird.
Die Software (timer) weckt den Controller aus dem Schlaf, nimmt 
Sensormesswerte auf und aktiviert ein RFM12 Funkmodul, kommuniziert und 
legt sich dann wieder schlafen.
Da ich gern die Batteriespannung überwachen möchte habe ich einen 
simplen Spannungsteiler von der Batterie an den ADC geführt. Intern habe 
ich eine Referenz-Vergleichsspannung. Somit kann ich zumindest grob 
schätzen, wann der nächste Batteriewechsel fällig werden könnte. Das 
würde ich gern erstmal so bauen und per Software später noch feintunen.

Nun zu meinem Thema: Batteriespannung zum Messen von 3,6 Volt auf 1,25 
Volt runterteilen.

Ich habe mich gefragt, ob der Spannungsteiler als Kurzschluss der 
Batterie die schlaueste Wahl ist, oder ob es nicht auch besser ginge. 
(Klar 2 Megaohm zu 1 Megaohm sind ganz ok gemessen am Rest der Schaltung 
- trotzdem bitte konstruktive Beiträge)

Ich hab schon hier im Forum gesucht, aber nur einen Hinweis gefunden:
Beitrag "Re: Suche OPV zur Spannungsüberwachung"
Den Spannungsteiler per FET schalten.

Evtl. geht das auch direkt per Portpin auf Masse um nur während der 
Messung mehr Strom zu verbrauchen.

Oder ist sogar besser, den Oberen Anschluss des Spannungsteilers per 
Portpin auf "high" zu schalten, weil dann bei "low" nahezu kein Strom 
mehr durch die Messschaltung fließt?

Ob die Batterieüberwachung im RFM12 was taugt, werde ich auch noch 
testen, wenn ich alles aufgebaut habe.

Vielleicht hat ja hier noch Jmd eine abgefahrene Idee, wie man sowas 
elegant lösen kann.
Nur bitte keine Bilanzrechnung wie hoch der Anteil der Messchaltung am 
Gesamtverbrauch ist - jede nicht verschwendete Energie zählt für mich 
hier.

von Anja (Gast)


Lesenswert?

Wulf K. schrieb:
> Vielleicht hat ja hier noch Jmd eine abgefahrene Idee, wie man sowas
> elegant lösen kann.

Wie immer in meinem Artikel Batteriewächter

Gruß Anja

von Wulf K. (cyberwulf)


Lesenswert?

Entschuldigung. Ich hab wohl nur im Forum gesucht. Danke :)

von Julian B. (julinho)


Lesenswert?

Du kannst die Batterie-Spannung auch indirekt messen, indem Du die 
interne Referenzspannung mit Vcc(Bateriespannung) als 
ADC-Referenzspannung mißt. Dann brauchst Du überhaupt keine externe 
Beschaltung.

von fff (Gast)


Lesenswert?

alternativ mach es ganz einfach:

schalte die masse deines spannungsteilers über einen port-pin (oc oder 
transistor) an oder ab, dann läuft nur strom durch, wenn du messen 
willst, ansonsten ist er hochohmig -> kein/kaum strom!

fff

von Wulf K. (cyberwulf)


Lesenswert?

Masse oder Vcc per Portpin zur Verfügung stellen, das wäre noch die 
Frage.

Den FET (wie in der von Anja beschriebenen beachtlichen Schaltung) kann 
ich mir dann wohl sparen, da meine interne Referenz schon vorhanden ist 
und sich auch nicht abschalten lässt.

von Wulf K. (cyberwulf)


Lesenswert?

@Julian Baugatz: Das wäre ja in der Tat noch besser. Müsste dann per MUX 
Register funktionieren... probier ich morgen gleich mal aus.

von Julian B. (julinho)


Lesenswert?

D

Wulf K. schrieb:
> @Julian Baugatz: Das wäre ja in der Tat noch besser. Müsste dann per MUX
> Register funktionieren... probier ich morgen gleich mal aus

Bei diesen Verfahren kann man leider die 10bit Auflösung nicht voll 
ausnutzen und die Batteriespannung ist der reziproke Wert des 
ADC-Wandlers.

Für die meisten Fälle reicht es aber aus.

von MiWi (Gast)


Angehängte Dateien:

Lesenswert?

fff schrieb:
> alternativ mach es ganz einfach:
>
> schalte die masse deines spannungsteilers über einen port-pin (oc oder
> transistor) an oder ab, dann läuft nur strom durch, wenn du messen
> willst, ansonsten ist er hochohmig -> kein/kaum strom!
>
> fff

wenn..... wenn der uC seine Ausgänge auch im LowPower-Mode immer aktiv 
hat. Wenn es einen Modus gibt, in dem nur der Timer aktiv ist, der Rest 
von IO aber im Resetmodus herumwuselt dann ist das keine gute Idee, denn 
dann ist nicht definiert was mit dem, was am Analogeingang anliegt 
passiert.

Anja hat einen netten Weg gezeigt,

Ich hab das mit einem BSS84, angestuert von einem BSS138 gemacht, denn 
"mein" uC gibt im LPM4 nichts an die Aussenwelt ab. Ruhestrom ist 
irgendwo im nA-Bereich zu suchen. Messstrom wenn aktiv ist 80uA. pdf 
anbei.

Grüße

MiWi

von Michael (Gast)


Lesenswert?

Julian Baugatz schrieb:
> Du kannst die Batterie-Spannung auch indirekt messen, indem Du die
> interne Referenzspannung mit Vcc(Bateriespannung) als
> ADC-Referenzspannung mißt.

Das funktioniert nur, wenn der µC direkt an der Batterie hängt und nicht 
noch irgendein ???V auf Vcc-Wandler dazwischen hängt. Who knows?

von Wulf K. (cyberwulf)


Lesenswert?

Der Controller hängt direkt an Vcc. Insofern funktioniert der Vorschlag 
von Julian Baugatz.

Die interne Methode könnte bis auf 1,2 Volt herunter Messen - da 
arbeitet der uC ohnehin schon nicht mehr. Also ist das OK. Auch die 
Auflösung geht in Ordnung, da mein Anspruch nur ein grober Richtwert 
ist.

Die Methode von Anja hat einen höheren Anspruch und funktioniert sicher 
noch besser. Sollte ich noch Platz auf dem PCB haben und passende FETs 
zu meinen Bastler-Standard Bauteilen gehören, werde ich das alternativ 
auch mit bestücken.

Da kommt dann noch der gute Hinweis von MiWi ins Spiel: Was tut der 
Atmega8 im Sleep Mode mit seinen Portpins. Nummer sicher wäre vermutlich 
zwei Pins unterschiedlich zu schalten um die Messung per FETs zu 
aktivieren.

Schon mal Danke für die vielen guten Ratschläge.

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


Lesenswert?

Wulf K. schrieb:
> Was tut der
> Atmega8 im Sleep Mode mit seinen Portpins.

Nichts. Die bleiben so, wie sie vor dem Sleep geschaltet waren. Der 
Schlafmodus ändert weder etwas an irgendwelchen Registern, noch geht 
irgendetwas im Controller in einen "herumwuselnden" Reset...

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.