Forum: Mikrocontroller und Digitale Elektronik Low Battery Detection 6x AAA


von Triple X Triple A (Gast)


Lesenswert?

Hallo,

ich habe hier 6x AAA Batterien a 1,5V in Reihe, also 9V, gefolgt von 
einem 3,3V LDO und einem MCU, der mit eben diesen 3,3V betrieben wird.

Für die 9V der Batteriespannung würde ich gerne eine Low battery 
detection über den MCU abfragen.

Wie macht man sowas in der einfachsten Variante?

Einfach über Spannungsteiler an MCU abfragen? z.B.: 19.5K und 11K und 
dann LOW_BAT = 9V * (11/(11+19,5)) = 3.246V.

Dieser Wert würde mir natürlich nicht für LOW Battery Detection helfen, 
sondern nur ob die 9V anliegen nicht.

Ich nutze eine PIC32.
Wenn ich wüßte ab welchem Spannungspegel an einem PIN ein High Pegel 
detektiert wird, könnte ich den Spannungsteiler so dimensionieren, dass 
beispielsweise ab 6V Eingangspegel an einem Pin LOW Pegel detektiert 
wird.

Der PIC verfügt auch über einen Internen Comparator. Kann man diesen 
ebenfalls dafür nutzen?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Triple X Triple A schrieb:
> Ich nutze eine PIC32.
> Wenn ich wüßte ab welchem Spannungspegel an einem PIN ein High Pegel
> detektiert wird, könnte ich den Spannungsteiler so dimensionieren, dass
> beispielsweise ab 6V Eingangspegel an einem Pin LOW Pegel detektiert
> wird.

CMOS detektiert meist einen Pegelwechsel bei 50% der Betriebsspannung. 
Meistens sind bei µCs die Eingänge aber als Schmitt-Trigger ausgelegt, 
bei deinen man eine Hysterese hat. Wie das beim PIC32 ist, weiß ich aber 
nicht.

An Deiner Stelle würde ich es einfach ausprobieren. Benutze als 
Spannungsteiler einfach ein Poti und drehe so lange, bis Dein PIC einen 
Pegelwechsel erkennt.

von Sascha (Gast)


Lesenswert?

Hallo,
also du must dir erst im klaren sein, wann eine Zelle ihren entladewert 
haben soll.
Ich schlage mal 0.9V für eine normale Alkaline vor. Geht aber auch noch 
in deinem Fall wenn nur wenig Strom gezogen wird bei 0.7V.

Also am Beispiel von 0.9V x6= 5.4V

Den Teiler solltest du sehr hochohmig bauen, damit die Batterien nicht 
davon schon entladen werden. Also so bei ca. 300KOhm. Zum AD-Wandler 
dann einfach einen Kondensator nach masse setzen, der den dynamsichen 
Messstrom für den AD-Wandler zur verfügung stellt. Es reicht doch wenn 
alle 1 Sekunde eine AD-Wandlung erfolgt. Somit wird der Kondensator 
wieder nachgeladen.
Den rest kannst du dann via Software machen.

Gruß Sascha

von Marc S. (darkchaos)


Lesenswert?

Theoretisch müssten die Schwellen ja auch im Datenblatt stehen, nehme 
ich an?

Bedenken solltest du auch, falls du einfach einen Interrupt auf den Pin 
setzen möchtest, dass du ggf. lastabhängige Spannungen und daher ein 
"Schwingen" des Interrupts hast.
Das heißt, dass du mal LOW-BAT bist, und dann geht die LED aus und du 
bist wieder nicht LOW-BAT. Das kennst du z.B. von deinem Handy, da geht 
der Akkustand runter und bei beenden des Spiels geht der Akkustand 
wieder nach oben. (Einfach für den Hinterkopf)

Je nach Anwendung kannst du aber genauso gut (bzw. besser) einen ADC 
(falls vorhanden) betreiben und diesen Interruptgesteuert bzw. 
Blocking/Polling abfragen. Damit kennst du die genaue Spannung deines 
Blocks und kannst somit auch in etwa (siehe oben) abschätzen, wie es um 
deine Batterie steht.

Um Rechenzeit/Energie zu sparen machst du das einfach nur alle 10 
Sekunden (und damit z.B. alle 100-1000 Loop-Durchgänge)

Ein Komparator wäre natürlich auch möglich, nur benötigt der eine 
Referenzspannung, z.B. deine 3.3V / 2, dann muss der Spannungsteiler 
kleiner als 3.3V/2 sein.


Was mir dazu noch einfällt: Du hast 5.7V Spannungsabfall am Regler. Das 
ist zwar normalerweise kein Problem und vermutlich bei µC Strömen "kaum" 
eine Leistung (thermisch gesehen), aber es verbrät natürlich Energie.
Wenn eine lange Laufzeit gewünscht ist, solltest du das ggf. im 
Hinterkopf haben, Schaltregler gibt's mittlerweile ziemlich billig

von Jan H. (jan_m_h)


Lesenswert?

Du solltest nur 4 Batterien nehmen, dann bist du bei 4*1,5V = 6V bis 
runter auf 4*0,9V = 3,6V bei einem guten LDO sollte das machbar sein. 
Damit verheizt du weniger Energie im Regler.
Oder brauchst du die 9V noch wo anders?

Wenn der PIC32 einen ADC hat, würde ich den benutzen, mit einem sehr 
hochohmigen Spannungsteiler und einem Pufferkondensator.

von MaWin (Gast)


Lesenswert?

Triple X Triple A schrieb:
> Einfach über Spannungsteiler an MCU abfragen? z.B.: 19.5K und 11K

Ja, wobei die Widerstandswerte ERHEBLICH grösser sein sollten, und mit 
einem Kondensator gepuffert werden.

Wie gross? Hängt vom Leckstrom des uC Eingangs ab, der Fehler sollte 
nicht zu gross werden, kann aber schon 10% betragen, es geht ja nur um 
LowBattery.

Der Komparator geht auch, aber der Leckstrom wird derselbe sein, und du 
musst bei ihm zusätzlich eine Vergleichsspannung bereitstellen 
(Spannungsteiler an 3.3V oder ARef)

von Der Andere (Gast)


Lesenswert?

Es reicht alle paar Minuten die Spannung der Zellen zu messen. Als 
Pufferkondensator im hochohmigen Spannungsteiler dürften ein paar 
nanofarad reichen 2 - 20nF aus dem Bauch raus.

Ausserdem kann man den Spannungsteiler via kleinem Transistor und einem 
Portpin von der Spannung trennen.

Triple X Triple A schrieb:
> 3,3V LDO

Warum ein LDO? Selbst bei 08V pro Batterie hast du noch 1,5V mehr am 
Eingang wie am Ausgang. Wichtig ist ein sehr geringer Eigenverbrauch des 
Spannungsreglers
Es gibt doch inzwischen spezielle Schaltregler für sowas. Muss man mal 
suchen. Irgendwie tut es weh, wenn man von den über 9V bei vollen 
Batterien quasi 2/3 der Energie im Spannungsregler verheizt.
Alternativ einen Step Up Regler für Batteriebetrieb und 1 - 2 Zellen 
benutzen.
Muss man hier mal suchen, da gabs schon öfter Empfehlungen.

von Der Andere (Gast)


Lesenswert?

Der Andere schrieb:
> bei 08V

sorry 0,8V sollte das heissen

von Stefan F. (Gast)


Lesenswert?

> Einfach über Spannungsteiler an MCU abfragen?

Ja, wie gesagt mit einem hochohmigen Spannungsteiler (im mega-Ohm 
Bereich) und Pufferkondensator. Ich nehme immer 100nF.

Du könntest auch einfach die 3,3V Spannung messen und reagieren, wenn 
sie absackt. Der µC selbst wird sicher auch mit deutlich weniger als 
3,3V noch zuverlässig funktionieren.

von Triple X Triple A (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank schon einmal für die ganzen Antworten.
Ich habe es mir wie folgt gedacht (siehe Anhang).

Der Pic verfügt über einen 10 Bit AD Wandler.

So habe ich am AD Wandler einen Maximal AD gewandelten Spannungspegel 
von 9V *3/8 = 3.375V (für R30 = 3M).

Alles unter diesem Wert kann ich dann auswerten?

passt das so?

von Triple X Triple A (Gast)


Angehängte Dateien:

Lesenswert?

Blockschaltbild vom ADC Module des Pics:
An AVDD habe ich 3,3V angeschlossen.
Das bedeutet, dass nach Blockschaltbild die Refernzspannung 3,3 V 
betragen sollte?

Der ADC Wert ergibt sich dann über:
ADC = 1024*Vin/3,3V

Für 9V volle Batteriespannung habe ich dann 3.375V am ADC des Pic 
anliegen,

also ADC = 1024* 3,375/3,3 = ca. 1024

Stimmt diese Rechnung und vor allem die obigen Schaltung zur Lob Battery 
Detection Auswertung?

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Triple X Triple A schrieb:
> also ADC = 1024* 3,375/3,3 = ca. 1024

eher ca. 1023 ;-)

Der Bereich geht von 0 bis 1023. Die 1024 kann niemals erreicht werden.

von Konzertbesucher (Gast)


Lesenswert?

Frank M. schrieb:
> eher ca. 1023 ;-)

Geht das schon wieder los?
Ach, ja - es ist Freitag.

von Stefan F. (Gast)


Lesenswert?

3,3V / 3M Ohm * (3 M Ohm + 5M Ohm) =  8,8V

Du kannst so nur Spannungen bis maximal 8,8 Volt messen. Wenn die 
Batterie mehr liefert, wird der ADC seinen Maximalwert 1023 liefern - 
unabhängig von der konkreten Spannung.

Also ja, das geht. Ich würde allerdings einen anderen Spannungsteiler 
wählen, der sogar etwas mehr als 9V messen kann. Könnte später mal 
nützlich werden.

von Triple X Triple A (Gast)


Lesenswert?

Danke an Alle.

Werde den 5 MOhn durch 5,6 MOhm ersetzen. Dann kann ich bis 9.46 V 
messen.

von Harald W. (wilhelms)


Lesenswert?

Triple X Triple A schrieb:

> Werde den 5 MOhn durch 5,6 MOhm ersetzen. Dann kann ich bis 9.46 V
> messen.

Neue Zink-Kohlezellen haben m.W. eine Leerlaufspannung von 1,64 V.
Die sollten auch in Deinem Messbereich liegen.

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.