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?
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.
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
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
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.
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)
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.
> 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.
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?
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?
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.
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.
Danke an Alle. Werde den 5 MOhn durch 5,6 MOhm ersetzen. Dann kann ich bis 9.46 V messen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.