Hallo, ich würde gerne mit dem ADC eines AVR die Batteriespannung messen. Die Batteriespannung liegt über VCC (max. 1,5V). Das ganze ist in einem Gerät das möglichst wenig Strom verbrauchen soll. Daher war die ursprüngliche Idee einen Spannungsteiler zu machen, bei dem Masse des Spannungsteilers vom AVR geschaltet wird, um in den Ruhephasen keinen Strom zu verbrauchen. Nur würde in dem Fall die Spannung an den beiden Pins auf VBAT ansteigen und wäre dementsprechend zu hoch für den AVR. Schwierigkeit zwei ist, dass ein abfallen der Spannung auf 0V (entnehmen der Batterie) einen Interrupt auslösen soll. Beides war kein Problem als der AVR noch direkt aus der Batterie gespeist wurde (VCC war VBAT und in den Ruhephasen war der Analog Pin als IO mit PCINT geschaltet). Aber ein paar Peripheriegeräte brauchen 3,3V und die ganzen Pegelwandler sind wahrscheinlich aufwändiger als die gesammte Schaltung auf 3,3V zu bauen. Welche Möglichkeiten gibt es nun möglichst stromsparend die Batteriespannung zu messen und den Spannungsabfall zu detektieren (und das möglichst mit einem Pin)?
Vermutlich wird der immer vorhandene Spannungsteiler die passende Lösung sein. Wenn man parallel 1 oder 2 Kondensatoren hat, darf der Spannungsteiler auch sehr hochohmig sein ( z.B. 2 mal 1 M Ohm). Zur Detektion eignet sich dann der analoge Komparator, der meist auch auf einen der ADC Pins fällt. Vermutlich wird der Komparator mehr Strom verbrauchen als die Widerständen. Wenn man unbedingt den Teiler abschalten will, ginge das ggf. über einen P-Kanal MOSFET mit passender Einschaltschwelle von etwa 2-3 V.
Ja, den PMOS hatte ich auch schon im Kopf, dann fällt aber leider die 0V Erkennung weg. AINs und ADCs sind leider verschiedene Pins, was dann einen verbrauch von 3 Pins bedeuten würde. Da lässt sich was einfacheres mit einem PNP machen. Hat jemand noch eine andere Idee als den hochohmigen Spannungsteiler?
Stefan schrieb: > Hat jemand noch eine andere Idee als den hochohmigen Spannungsteiler? Details wären nützlich. Welcher Batterie-/Akku-Typ? Welcher Spannungsregler? Was willst du mit der gemessenen VBAT anfangen (z.B. Warnung Batterie/Akku bald leer)? Welcher µC kommt zur Einsatz? Wie hoch ist der (maximale) Stromverbrauch der Schaltung? > Schwierigkeit zwei ist, dass ein abfallen der Spannung auf 0V (entnehmen > der Batterie) einen Interrupt auslösen soll. Ich sehe da noch die Schwierigkeit, dass der µC bei 0V nicht läuft und somit auch keinen Interrupt abarbeiten wird. Oder was meintest du mit dieser Anforderung?
Wenn der AVR von dem Akku versorgt wird, wie kannst du dann die Spannung mit einem ADC vom AVR zuverlässig messen? Die Referenz des ADC würde sich doch mit der Spannung des Akkus verändern und du müsstest doch dann kontinuierlich eine Wertekorrektur durchführen.
Es kommt mir so vor, als wenn die Brown-Out-Detection die Lösung wäre, da ja der AVR auch von der zu messenden Batterie versorgt wird. Vielleicht bräuchte man die Messung dann gar nicht mehr. Wozu soll die dienen?
Der eine Pin des analogen Komparators ist bei den meisten AVRs auch ein ADC Eingang. Wenn der ADC aus ist, lässt sich der analoge Komparator auch über den MUX vom ADC verteilen. Als Vergleichswert für den Komparator lässt sich die Bandgap Ref. wählen. Man muss dann nur den Teiler entsprechend wählen.
Stephan schrieb: > Die Referenz des ADC würde sich doch mit der Spannung des Akkus > verändern wer sagt den das AREF = VCC sein soll? nicht wenn man die interne REF wählt, die liegt immer unterhalb der Versorgung, mal 2.56V, mal 1.1V http://arduino.cc/en/pmwiki.php?n=Reference/AnalogReference oder ins Atmel AVR Datenblatt schauen
Es kommt wirklich drauf an was für dich wenig Stromverbrauch bedeutet. Reden wir von 1uA oder 1mA da liegen vom Aufwand Welten dazwischen. Die interne ref. Braucht ~50uA bei ner Knopfzellen ist das viel bei her Autobatterie kannst es vernachlässigen. Gruß Matthias
>Welcher Batterie-/Akku-Typ? 3x AA in Serie. >Welcher Spannungsregler? LDO mit 0,15V Drop bei der Höchstbelastung von 300mA >Was willst du mit der gemessenen VBAT anfangen (z.B. Warnung >Batterie/Akku bald leer)? Jop, Akkuprotokollierung bzw. warnung >Welcher µC kommt zur Einsatz? ATMEGA164 >Wie hoch ist der (maximale) Stromverbrauch der Schaltung? Wie oben geschrieben 300mA. >Ich sehe da noch die Schwierigkeit, dass der µC bei 0V nicht läuft und >somit auch keinen Interrupt abarbeiten wird. Die Schaltung ist ausreichend mit Kondensatoren gepuffert, dass für den Fall des Entnehmens noch was ins EEPROM geschrieben werden kann. @Lurchi Danke für den Tipp, das werde ich mir mal genauer anschauen @Stone Ich kämpfe mit den uA. Das ganze Gerät macht im Endeffekt nix bis ein externer Interrupt es weckt. Das passiert regulär ein mal am Tag, oder bei einem besonderen Ereignis. In der Ruhephase bin ich im Moment bei ca. 1uA vom AVR, 0,5uA von der RTC, mein aktueller Stromfresser LDO mit 4uA und wahrscheinlich noch mal bis zu 50uA in Form diverser Leckströme. Ein Spannungsteiler mit 100k gesammtwiderstand und dementsprechend 45uA Strom ist da schon sehr schmerzhaft.
Also drei NiMH-Zellen. Wenn du dich auf Akku-Warnung beschränken kannst, dann könnte das auch ganz ohne Spannungsteiler und ohne einen einzigen Pin funktionieren. Dazu einfach die Bandgap-Reference messen mit AVCC als AREF. Die Warnung löst du aus, sobald VCC einzubrechen beginnt. Bei nomineller VCC 3.3V sind die Akkus noch ein gutes Stück von der Tiefentladung entfernt. Voraussetzung dafür ist allerdings, dass sich der Spannungsregler bei der eigentlich zu geringen Eingangsspannung gutmütig verhält.
Stefan schrieb: > Ich kämpfe mit den uA. > Ein Spannungsteiler mit 100k gesammtwiderstand und dementsprechend 45uA > Strom ist da schon sehr schmerzhaft. wer hindert dich einen Port zu AVCC zu legen? Die AVCC nur vom Port einzuschalten bei Bedarf und die interne Referenz 1.1V oder 2.56V von AVCC mit dem Spannungsteiler an AVCC zu nutzen? Port AUS -> keine AVCC -> kein Verlust durch Teiler.
:
Bearbeitet durch User
Joachim B. schrieb: > wer hindert dich einen Port zu AVCC zu legen? > > Die AVCC nur vom Port einzuschalten bei Bedarf Aus dem Datenblatt: "AVCC is the supply voltage pin for Port A and the Analog-to-digital Converter. It should be externally connected to VCC, even if the ADC is not used. If the ADC is used, it should be connected to VCC through a low-pass filter."
Konrad S. schrieb: > Aus dem Datenblatt: und was wolltest du mitteilen? Das erschliesst sich aus deinem Posting nicht! Er will den Stromverbrauch minimieren, das ginge mit einem geschalteten Spannungsteiler vom Port, der Port ist niederohmig genug so um 100 Ohm für einen rel. hochohmigen Spannungsteiler so im 10kOhm Bereich. Sogar der AVCC Verbrauch kann davon gedeckt werden und wird mit abgeschaltet, also was sollte da hindern? Konrad S. schrieb: > If the ADC is used, it should be connected to VCC through a > low-pass filter." ob der nun mit dem "low-pass filter" nach VCC oder nach Port geschaltet wird ist egal. Aber vielleicht erklärst du ja deine Gedanken.
Joachim B. schrieb: > und was wolltest du mitteilen? Wie verträgt sich deiner Meinung nach denn Konrad S. schrieb: > Aus dem Datenblatt: > "... It should ..." mit Joachim B. schrieb: > Die AVCC nur vom Port einzuschalten ...
Wolfgang schrieb: > Wie verträgt sich deiner Meinung nach denn > > Konrad S. schrieb: >> Aus dem Datenblatt: >> "... It should ..." na bestens! soweit mein Englisch reicht und google meint: "es sollte" das ist kein Beton! Der Stromverbrauch eines AVR ATmega ist bekannt, i.d.R. komplett so um 50mA in meinen Applikationen von m32 bis 1284p sowie 328p auch als Arduino Clone. Davon wird am AVCC nur die Referenz und bei evtl. Port A gespeist, aber nicht mit allen mA. Ein Port kann locker bis 20mA übernehmen, das sollte reichen für keine Lasten an Port A und für die Referenz. Wenn ich zitieren darf: Stefan schrieb: > Das ganze ist in einem Gerät das möglichst wenig Strom verbrauchen soll. gehe ich davon aus das nicht an jedem Port eine 20mA LED hängt, ergo was wird wirklich an Strom gebraucht an AVCC? kann man messen mit einen µA/mA Meter nach VCC.
:
Bearbeitet durch User
ich sehe kein Problem darin, mit einem Teiler bis 10MOhm auf einen Comparator oder ADC-Eingang zu, also Querströmen <1uA. 100nF parallell zum Eingang und die Sache läuft.
Joachim B. schrieb: > und was wolltest du mitteilen? Ich denke, dass es keine gute Idee ist den µC nur über VCC zu versorgen.
Mark Space schrieb: > ich sehe kein Problem darin, mit einem Teiler bis 10MOhm auf einen > Comparator oder ADC-Eingang zu, also Querströmen <1uA. > 100nF parallell zum Eingang und die Sache läuft. OK wenn du weisst wovon du schreibst? Ich lese immer für AVR ADC eine Eingangsimpedanz im 10k-100k Ohm Bereich. Mit MOhm Teiler wäre ich skeptisch, ist aber auch egal weil das ja nicht nötig ist. Wer mag misst mit einem RV von 1 Mohm die Eingangsimpedanz vom ADC. Gutes Messgerät mit Ri von >10MOhm Bedingung, erst die Spannung hinter dem 1M messen, dann mit angeschaltetem ADC und durch die Differenz bekommt man die Last durch den ADC raus.
:
Bearbeitet durch User
Also, der AVR hängt an einem LDO. Dadurch ist VCC < VABT. Da AVCC maximal VCC + 0,3V sein soll, wird das nichts das ich AVCC direkt an die Batterie hänge. Oder habe ich die Diskussion mit AVCC jetzt falsch verstanden? Die Referenz zu messen und festzustellen, dass der LDO nicht mehr 3,3V liefert ist eine Möglichkeit um zu erkennen, dass die Batterie langsam schwächelt, ich würde aber gerne durchgehen wissen welche Spannung die Batterie hat und nicht erst wenn sie langsam gegen Ende geht. Ich habe schon öfter von Spannungsteiler in MOhme bereich mit nachgeschaltetem Pufferkondensator gehört. Grob über den Daumen gepeilt würde ich mit zwei 470k als Spannungsteiler und einer 100nF Diode nach einer Millisekunde den PCINT durch entnommenen Akku haben. Ich muss mal schauen wie weit in der Zeit die Spannung über den Pufferkondensatoren abgefallen ist und ob dann noch sicheres Schreiben in den EEPROM möglich ist. Da der ADC S/H Kondensator mit 14pF angegeben ist, könnte ich sicherlich auch noch bisal unter die 100nF gehen. Aber irgendwann ist der Spannungsteiler so hochohmig/die Kapazität so klein, dass der ADC mehr Antenne als anders ist. Ich werde dahingehend mal bisal experimentieren.
Stefan schrieb: > Also, der AVR hängt an einem LDO. Dadurch ist VCC < VABT. Da AVCC > maximal VCC + 0,3V sein soll, wird das nichts das ich AVCC direkt an die > Batterie hänge. richtig, Stefan schrieb: > ich würde aber gerne durchgehen wissen welche Spannung die > Batterie hat und nicht erst wenn sie langsam gegen Ende geht. OK Stefan schrieb: > Ich habe schon öfter von Spannungsteiler in MOhme bereich mit > nachgeschaltetem Pufferkondensator gehört. ich nicht, jedenfalls nicht so...... was gehen könnte, eine abgewandelte Schaltung von dem hier: http://www.mikrocontroller.net/articles/Datei:Schaltplan_transistortester.png Dein Spannungsteiler im Bereich Summe 10k-20k setzt die maximale Meßspannung (?) unter die Referenzspannung (? -> 1,1V oder 2,56V) angenommen Vbat max. 5,5V (3x Mignon oder Micro Alkaline je 1,7V maximal, so meine Messungen mit frischen Zellen) Uref 1,1V gibt einen Teiler von 5,5 zu 1,1 = 1/5 der obere R hat also 4/5 der unter R 1/5 Summe 20k gibt oben 16k unten 4k oder eben passende nahe dran -> 16k und 3,9k dieser Teiler kommt an Transistor T3 Collector Der Teiler wird angeschaltet nicht vom Taster S1 sondern vom µC mit T1, die LED kann entfallen, überbrückt werden. Wie hier glaubhaft versichert wurde liegt der Strom so unter 20nA wenn off ist. http://www.mikrocontroller.net/articles/AVR-Transistortester Stromverbrauch im ausgeschalteten Zustand: < 20 nA nur das eben nicht der ganze AVR damit eingeschaltet wird, hier nur der Spannungsteiler. Stefan schrieb: > Oder habe ich die Diskussion mit AVCC jetzt falsch > verstanden? weiss ich nicht, wäre noch eine Möglichkeit den Strom am AVCC abzuschalten durch einen Port, ob das noch was zusätzlich bringt, bzw. das lohnt weiss ich nicht, die Theorie meint ja bringt evtl. noch wenige µA denn wenn gerade nicht gemessen werden soll und auch keine A Ports gebraucht werden warum AVCC versorgen.
>denn wenn gerade nicht gemessen werden soll und auch keine A Ports >gebraucht werden warum AVCC versorgen. Deshalb: The ADC has a separate analog supply voltage pin, AVCC. AVCC must not differ more than ±0.3 V from VCC. AVCC ist nicht optional.
holger schrieb: > Deshalb: > > The ADC has a separate analog supply voltage pin, AVCC. AVCC must not > differ more than ±0.3 V from VCC. > > AVCC ist nicht optional. was willst du aussagen? Wer glaubt denn das AVCC aus einem Port um mehr als 0,3V von VCC abweicht wenn on? Ich wüsste nicht das ein Port 0,3V weniger als VCC liefert ohne Last, wer hat das schon mal gemessen, wo an welchem AVR? Prüfe ich gerne Montag mit einem 6,5-stelligen Voltmeter nach.
Joachim B. schrieb: > Wer glaubt denn das AVCC aus einem Port um mehr als 0,3V von VCC > abweicht wenn on? Die Frage stellt sich nicht bei "on", sondern bei "off"!
Konrad S. schrieb: > Die Frage stellt sich nicht bei "on", sondern bei "off"! wenn es nicht benutzt wird? sehe ich nicht so, aber gut, ich weiss es nicht, du vielleicht? dann schreib mehr darüber, so diffuse Halbsätze helfen ja auch nicht weiter.
@Joachim B. Das wäre wieder der geschaltete Spannungsteiler den ich oben schon erwähnt habe, nur mit PNP statt PMOS. Das würde mir aber wieder die Batterieentnahmeerkennung versauen. In irgend einem englischsprachigen Forum gab es mal eine recht lange und interessante Diskussion zu den hochohmigen Spannungsteilern mit Pufferkondensator. Was ich da so rausgelesen habe muss es sehr zuverlässig und genau sein, da es ja quasi einen Tiefpass darstellt.
Hm. Vielleicht ist mein Beitrag Beitrag "Re: Batterie messen in low power Design" ja überlesen worden. Dort habe ich die Brown-Out-Erkennung genannt. Mag auch sein, dass er nicht relevant ist - allerdings kann ich darauf keine Hinweise erkennen. Die Erkennung der Batterieentnahme spielt ja immer noch eine Rolle.
Stefan schrieb: > Das wäre wieder der geschaltete Spannungsteiler den ich oben schon > erwähnt habe, nur mit PNP statt PMOS. Das würde mir aber wieder die > Batterieentnahmeerkennung versauen. wegen der Last beim Messen? oder wie belieben? verstehe ich grad nicht, 1x pro Stunde 250µA (5V/20000 Ohm) für 50ms zu entnehmen ist ein Problem? Stefan schrieb: > In irgend einem englischsprachigen Forum gab es mal eine recht lange und > interessante Diskussion zu den hochohmigen Spannungsteilern mit > Pufferkondensator. Was ich da so rausgelesen habe muss es sehr > zuverlässig und genau sein, da es ja quasi einen Tiefpass darstellt. OK wenn Tau bekannt ist kann man es ja versuchen, nur hängt der eben immer dran ist halt ne Abwägung zwischen Dauer und Messzeit. Bitflüsterer schrieb: > Dort habe ich die Brown-Out-Erkennung genannt. nur dann ist es vielleicht zu spät? ich denke er will vorher informiert werden wenn die Spannung kritisch wird.
:
Bearbeitet durch User
AVCC abzuschalten oder nicht zu belegen macht keinen Sinn. Zum einen verlangt das Datenblatt da eine Spannung im Bereich VCC +-0,3 V und zum anderen dürfte man dadurch auch nichts gewinnen. Teile wie den ADC, die interne Ref. usw. kann man auch ganz regulär intern abschalten. Auch wenn AVCC offen ist, darf die Spannung an den Eingängen nicht höher werden, denn die internen Dioden in Richtung VCC/AVCC sind parasitäre Pfade über das Substrat. Die verschwinden nicht einfach. Die Probleme die man bekommen kann, wenn AVCC nicht angeschlossen ist, sind Fehler beim Brown-out-Detektor, und wenn es ganz dumm kommt ggf. auch ein Latchup beim einschalten. Auch ein erhöhter Stromverbrauch ist möglich, weil intern ggf. undefinierte Pegel auftreten - weniger wird es eher nicht. Der Teiler darf schon recht hochohmig sein. Man muss aber ggf. mit etwas Offset durch Leckströme rechnen. Solange man nicht bei hohen Temperaturen ist, sollte das aber in Grenzen bleiben. Eine Abschrimung gegen Störungen wird man wohl schon brauchen. Ein schnelles Sinken der Spannung (etwa weil die Akkus entnommen werden) kann man ggf. über einen Kapazitiven Teiler erkennen. Also nicht nur einen Kondensator nach Masse nutzen, sondern auch einen zum Akku. Dann reagiert der Teiler trotz hoher Widerstände auch auf schnelle Änderungen.
Stefan schrieb: > ich würde aber gerne durchgehen wissen welche Spannung die > Batterie hat und nicht erst wenn sie langsam gegen Ende geht. Ja, das bekommst du auf die Art natürlich nicht gebacken. Für diesen "Luxus" wirst du wohl einen gewissen Preis zahlen müssen, z.B. den P-MOSFET und zwei Pins. Stefan schrieb: > Batterieentnahmeerkennung ... da war noch die Möglichkeit, jeden Slot im Batteriehalter mit einer (Schottky-)Diode zu versehen. Dann kannst du einen Akku nach dem anderen austauschen, ohne die Stromversorgung zu unterbrechen. Bei insgesamt nur drei Zellen wird das allerdings etwas eng mit der Spannung: zwei weit entladene Zellen minus Spannungsverlust durch eine Diode.
Joachim B. schrieb: > Bitflüsterer schrieb: >> Dort habe ich die Brown-Out-Erkennung genannt. > > nur dann ist es vielleicht zu spät? Das ist möglich. Worauf stützt sich Deine Vermutung? Habe ich da etwas überlesen? > ich denke er will vorher informiert werden wenn die Spannung kritisch > wird. Mit einem Kondensator könnte man Vcc noch recht lange puffern, so dass Zeit für einige Aktionen bleibt. Ist das bedacht und ich habe es nur überlesen?
Hallo Stefan, ich habe jetzt nicht alle Beiträge hier gelesen, trotzdem mein Vorschlag. Nimm einen dynamischen Spannungsteiler. Das Bild zeigt die Schaltung mit einer 2,7V Zenerdiode. Die Spannung am Messpin ist damit um 2,7V kleiner als die Batteriespannung, sofern an PX.Y Low ansteht. Wird PX.Y auf High geschaltet, fließt kein Strom mehr, da die Flußspannung der Diode nicht erreicht wird. Nachteilig ist die Temperaturdrift der Diode, aber sie ist so gering (Siehe Datenblatt), daß sie bei der Messung einer Versorgungsspannung keine Rolle spielt. Ist keine geeignete Zenerdiode verfügbar, geht es auch mit drei, in Serie geschalteten Silizium Dioden (z.B: 1N4148), daran fallen ca 2V ab. Die drei Dioden haben allerdings drei Temperaturdriften, welche sich addieren (3 x 2mV/°C). Und falls Geld keine Rolle spielt (da ohnehin keines vorhanden), kannst du auch ein 2,5V Referenzelement einsetzen. Dann gibt es kaum Temperaturdrift. Je nach benötigter Genauigkeit, kannst du dir eine Möglichkeit aussuchen. Gemeinsam ist allen Lösungen, Strom fließt nur, wenn der Spannungsteiler eingeschaltet wird. Viel Erfolg. Tom
Stefan schrieb: > Batterieentnahmeerkennung Könntest Du nicht sowas machen:
1 | VBat------------------------------------------ |
2 | | |
3 | | |
4 | --------- |
5 | --------- |
6 | | |
7 | | |\ | |----Vcc |
8 | | | \ | | |
9 | |-----| -|-----| |
10 | | | / | | |
11 | | |/ | | |
12 | | | |
13 | | | |
14 | | _______ | |
15 | |---|_______|---| |
16 | | R sehr gross |
17 | | |
18 | | ___ |
19 | |-------------------> INT |
20 | | |
21 | _____|_____ |
22 | /\ |
23 | / \ |
24 | / \ |
25 | /______\ |
26 | | |
27 | __|__ |
28 | GND |
Bei schnellem Einbruch von Vbat gibts (vielleicht) einen Low-Impuls an INT. Vielleicht funktioniert das oder was ähnliches in der Art?
:
Bearbeitet durch User
Bitflüsterer schrieb: > Joachim B. schrieb: >> Bitflüsterer schrieb: >>> Dort habe ich die Brown-Out-Erkennung genannt. >> >> nur dann ist es vielleicht zu spät? > > Das ist möglich. Worauf stützt sich Deine Vermutung? Habe ich da etwas > überlesen? oder ich falsch verstanden: Stefan schrieb: > Das würde mir aber wieder die > Batterieentnahmeerkennung versauen. ich verstand Batterieentladeerkennung...... Die Idee hat was: Konrad S. schrieb: > ... da war noch die Möglichkeit, jeden Slot im Batteriehalter mit einer > (Schottky-)Diode zu versehen. Dann kannst du einen Akku nach dem anderen > austauschen, ohne die Stromversorgung zu unterbrechen.
Joachim B. schrieb: > Die Idee hat was: Ist zwar nicht meine Idee, aber ich hab' sie mir gemerkt und bei einem Gerät mit vier NiMH-Zellen auch schon mal eingebaut. Ja, hat was! Andererseits rechnet "niemand" damit und nimmt gewohnheitsmäßig erst alle Zellen raus und setzt dann erst die geladenen Zellen ein. Die Software braucht also ggf. immer noch Sicherheitsmechanismen gegen Black-Out.
Der BOD macht genau eines, das ist den uC in einen definierten Zustand zu setzen wenn die Spannung unter ein gestimmtes Level absinkt. Und er Zustand ist Reset. Das ist also nichts mehr mit noch schnell Daten in den EEPROM schreiben. Der Bod an sich läuft auch schon, nur eben zum sicheren Abschalten wenn die Batterien den Geist aufgeben. Die Schaltung über eine Zener ist sinnlos, da durch Leckströme die Spannung auch wieder auf VBAT ansteigen wird, wenn die Unterseite des Spannungsteilers abgeschaltet wird. Und auf ein Kampf zwischen den Leckströmen der Zener und den der Dioden der Pins habe ich keine Lust... Im Moment scheint es wirklich auf den hochohmigen Teiler und ein Kondensator dazu hinaus zu laufen. Es ist die sicherste Methode, die zusätzlich alles an einem Pin abwickelt. Ich habe vorhin ein bisschen experimentiert (2x 470k, 100nF) und die Messergebnisse sind wirklich hervorragend, auch bei mehreren aufeinander folgenden Messungen. Es gibt zwar einen absoluten Fehler, aber der bleibt immer gleich, insofern schreibe ich den der internen Referenz zu. Ob und in wie weit der Puffer reicht um noch in den EEPROM zu schreiben nach dem ein PCINT erkannt wurde muss ich noch schauen. Sollte aber jemand während der Phase des maximalen Strombedarfs eine Batterie entnehmen, bricht es mir halt das Genick, aber einen Tod muss man ja sterben.
> Der BOD macht genau eines, das ist den uC in einen definierten > Zustand zu setzen wenn die Spannung unter ein gestimmtes Level > absinkt. Und er Zustand ist Reset. Das ist also nichts mehr > mit noch schnell Daten in den EEPROM schreiben. Tja. Hübsch. Da habe ich mich falsch ausgedrückt. Sorry. Dann verstehe ich auch den Mangel an Begeisterung. :-) Ich meinte so eine oder eine ähnliche Schaltung wie hier: http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren
Hallo Stefan, du ziehst den Querstrom eines Spannungsteilers (im mA/µA-Bereich) dem Leckstrom einer Diode (im pA-Bereich) vor? Nun es soll jeder nach seiner Fason glücklich werden! Viel Erfolg. Tom
Bitflüsterer schrieb: > Tja. Hübsch. Da habe ich mich falsch ausgedrückt. Sorry. Dann verstehe > ich auch den Mangel an Begeisterung. :-) > > Ich meinte so eine oder eine ähnliche Schaltung wie hier: > http://www.mikrocontroller.net/articles/Speicher#EEPROM_Schreibzugriffe_minimieren Naja, genau das mache ich ja im Moment. Ein Spannunsgteiler der vor dem LDO hängt und einen ADC Pin versorgt, der in den Ruhephasen als normaler Eingang mit Pin Change Interrupt geschaltet ist. Nur habe ich halt einen sehr hochohmigen Spannungsteiler den ich per Kondensator bisschen puffere. Fällt VBAT weg wird der Kondensator über den Widerstand nach Masse entladen und nach ca. 2 x tao meldet sich der PCINT. Meine Schwierigkeit ist gerade ein Kompromiss zwischen Widerstand, und Kapazitäten zum Puffern von VCC bzw. des Spannungsteilers zu finden, damit noch genügend Energie übrig ist, wenn der PCINT anschlägt, um noch ins EEPROM zu schreiben einerseits und andererseits dem ADC eine gute Spannungsquelle zu liefern.
Stefan schrieb: > Meine Schwierigkeit ist gerade ein Kompromiss zwischen Widerstand, und > Kapazitäten zum Puffern von VCC nun endlich verstehe ich mal was du willst...................... war das ne schwere Geburt, an keiner Stelle hattest du vorher beschrieben was dein Ziel ist, ist schon ärgerlich. Ich sehe deine Schwierigkeit eher in Schaltungsbeschreibung, du willst die VCC solange puffern das wenn die Versorgung wegbricht du noch Daten ins EEPROM schreiben kannst und redest die ganze Zeit von Spannungsteiler an ADC in und entladen der Batterie. Logisch entlädt ein dauerhafter Spannnungsteiler die Batterie. Logisch darf der nicht zu groß werden wegen Fehlmessungen. Ich grübel die ganze Zeit wie ein Kondensator das am ADC verhindern soll, aber von dem hast du nie geschrieben, das blieb dein Geheimnis bis eben.
Der ADC ist im mittel recht hochohmig. Wenn dauernd gemessen wird, irgendwas im Bereich 1 MOhm, bei seltener Messung in der Größenordung 100 M. Eine niedrige Impedanz wird nur für kurze Zeiten zum Laden des S&H Kondensators von etwa 15 pF benötigt. Ein Kondensator von 15 nF am ADC Eingang reicht aus damit die Spannung beim laden des S&H Kondensators nur um etwa 1 LSB einbricht. Bis zur nächsten Messung ist dann Zeit zum nachladen. Ohne den Kondensator muss die Quelle relativ niederohmig ( < etwa 20 K) sein um die 15 pF in z.B. 10 µs zu laden. Mit Kondensator darf es dann auch 10-1000 mal mehr sein - vor allem wenn der ADC nicht schnell mehrfach misst.
Stefan schrieb: > Bitflüsterer schrieb: > Meine Schwierigkeit ist gerade ein Kompromiss zwischen Widerstand, und > Kapazitäten zum Puffern von VCC bzw. des Spannungsteilers zu finden, > damit noch genügend Energie übrig ist, wenn der PCINT anschlägt, um noch > ins EEPROM zu schreiben einerseits und andererseits dem ADC eine gute > Spannungsquelle zu liefern. Dann habe ich evtl. Dein Ziel immer noch nicht verstanden: Wozu brauchst Du einen Kompromiss? Das sind doch zwei verschiedene Kondensatoren, hätte ich jetzt gedacht. Der Spannungsteiler kommt parallel zu R3 aus der von mir verlinkten Schaltung und daran ein weiterer Kondensator, der für den ADC puffert. Den Teiler kannst Du, wie gewünscht abschalten. Die Teile beeinflussen sich auch nicht, oder doch?
Also was ich suche ist im Eingangspost sehr klar beschrieben. Eine stromsparende Schaltung um die Batterispannung zu messen und das Einbrechen durch herausnehmen der Batterie zu detektieren. Die einzig brauchbare Lösung die aufgekommen ist, ist ein hochohmiger Spannungsteiler, der per Kondensator gepuffert wird. Da diese Lösung den Spannungseinbruch nicht sofort signalisiert, sondern verzögert, da der Kondensator entladen werden muss, kommt das neue Problem dazu, dass die Stützkondensatoren für den uC so groß dimensioniert werden müssen, dass sie in dieser Zeit nicht so weit entladen werden, dass ein Schreiben ins EEPROM nicht mehr sicher möglich ist. Da hier irgendwie viele Leute entweder Sachen übersehen oder falsch verstehen und ich meine Lösung habe, würde ich die Diskussion für beendet erklären und möchte mich herzlich bei allen für die Hilfe bedanken.
Stefan schrieb: > Also was ich suche ist im Eingangspost sehr klar beschrieben. nö Stefan schrieb: > Die einzig brauchbare Lösung die aufgekommen ist, ist ein hochohmiger > Spannungsteiler, der per Kondensator gepuffert wird. die zwei passen nicht zusammen, bitte wer puffert Spannungsteiler? (ich will abnehmen und du kaufst weniger zu essen) fürs nächste Mal, du pufferst den µC damit der noch Saft für seine Aufgaben hat und nicht den Spannungsteiler, soviel Verständnis sollte schon sein, aber egal: Stefan schrieb: > würde ich die Diskussion für > beendet erklären
Joachim B. schrieb: > Stefan schrieb: > Also was ich suche ist im Eingangspost sehr klar beschrieben. > > nö Dann würde ich empfehlen den Eingangspost noch mal zu lesen. > Stefan schrieb: > Die einzig brauchbare Lösung die aufgekommen ist, ist ein hochohmiger > Spannungsteiler, der per Kondensator gepuffert wird. > > die zwei passen nicht zusammen, > bitte wer puffert Spannungsteiler? (ich will abnehmen und du kaufst > weniger zu essen) Alles über 500k bis 1M an Widerstand an einem Pin macht den zu einer besseren Antenne. Der, der keine Lust hat Radio auf dem Pin zu hören puffert ihn. Zusätzlich gibt es an die Impedanz der Spannungsquelle für einen ADC Eingang gewisse Anforderungen. Der, der diese trotz einer hochohmigen Spannungsquelle einhalten will, Puffert ihn. > fürs nächste Mal, du pufferst den µC damit der noch Saft für seine > Aufgaben hat und nicht den Spannungsteiler, soviel Verständnis sollte > schon sein, aber egal: Bitte noch mal aufmerksam lesen, was wie mit einem Kondensator gepuffert wird. 1. der Spannungsteiler und 2. die Versorgungsspannung des UC, nur ist da ein Tradeoff zu machen zwischen den beiden.
Rote LED sollen doch ne ziemlich konstante Durchlaßspannung haben aber ich weiß nicht, bei welcher Spannung der Strom so unter 10uA geht?
@ Stefan Ich denke Du schmeisst uns hier zu früh, jedenfalls aber aus dem falschen Grund die Flinte vor die Füsse. Es ist absolut unklar, inwiefern zwischen dem Kondensator am Spannungsteiler und dem Kondensator zur Pufferung ein Konflikt bestehen soll. Das habe ich oben schon geschrieben und darauf hast Du nicht geantwortet. Wenn Du das denkst, irrst Du Dich. Die Diode verhindert ja gerade, dass der Spannungsteiler davon irgendwas mitbekommt. Der Spannungsteiler sieht die tatsächliche momentane Spannung von der Batterie. So klar war und ist Deine Erklärung durchaus nicht, dass sie Deinen Unmut rechtfertigt.
Anderer Ansatz: Alle drei Akkus entladen sich gleichmässig. Also nur die Spannung einer Zelle überwachen und gut ist. Kein Spannungsteiler nötig. Nur für die Batterieentnahme musst Du noch eine Lösung finden.
Der ist gar nicht so schlecht. Wenn man nun noch vorschreibt, daß die gemessene Zelle immer zuerst rausgenommen wird, klappts auch easy mit dem Abspeichern.
Stefan schrieb: > Dann würde ich empfehlen den Eingangspost noch mal zu lesen. wie oft soll ich das lesen? es bleibt falsch beschrieben, puffern tust du den µC damit er nach Wegfall der Batterie noch was erledigen kann, basta Stefan schrieb: > Alles über 500k bis 1M an Widerstand an einem Pin macht den zu einer > besseren Antenne. Der, der keine Lust hat Radio auf dem Pin zu hören > puffert ihn. da wird nix gepuffert sondern gefiltert puffern und filtern sind 2 Dinge, die du nie unterschieden hast was aber für das Verständnis leichter rüberkommt. Woher soll ich ohne Schaltbild mit purer Prosa wissen wovon du schreibst? Aber da du eh alles besser weisst benötigst du ja keine weitere Hilfe, jedenfalls von mir.
Hallo, ich habe keinen Unmut. Nur finde ich es nicht schön wenn jemand sich die Schaltung nicht vorstellen kann, anstatt dann aber nach einem Schaltbild zu fragen eher unfreundliche Äußerungen tätigt. Da ich meine Lösung zu dem Zeitpunkt hatte, bestand für mich kein Grund den Thread weiter zu betreiben. Da hier aber scheinbar mehrere die gleiche Frage haben, bzw. die Lösung verstehen möchten, erkläre ich es gerne und versuche auf die Fragen einzugehen.
1 | .--------------------------------------. |
2 | | | |
3 | | .-. |
4 | | | |R1 |
5 | | | | |
6 | | .-----------. '-' |
7 | | D1 | | | |
8 | o---->|----o----|VCC ADC|----o-----o |
9 | | | | | | | |
10 | --- C1--- | | C2--- .-. |
11 | - --- | | --- | |R2 |
12 | | | | | | | | |
13 | | | | AVR | | '-' |
14 | | | | | | | |
15 | | | | | '--o--' |
16 | | | | | | |
17 | | | | | === |
18 | o----------o----|GND | GND |
19 | | | | |
20 | === '-----------' |
21 | GND |
Das ist die gedachte Schaltung. D1 soll hier der Einfachheit halber eine Diode als auch den LDO darstellen. R1/R2 sind ein Spannungsteiler mit in Summe ~1MOhm was den Ruhestrom auf erträgliche ~4,5uA bringt und die Spannung nicht über VCC steigen lässt. Dadurch wird die Impedanz an dem Pin jedoch so hoch, dass er als Antenne dient. C2 filtert dies. Zusätzlich sollte die Impedanz für eine AD Wandlung laut Datenblatt nicht über 10kOhm liegen, was hier deutlich überschritten wird. C2 spielt also gleichzeitig Spannungspuffer für die Spannung über R2 (@Joachim B. du hast recht es geht hier um einen Filter, aber eben primär auch um einen Puffer*). Das ganze geht nach meinen Versuchen gestern sehr gut. Nund zur zweiten Funktion. Wird die Batterie entnommen versorgt C1 den AVR für eine gewisse Zeit weiter. Die Spannung über R1/R2 bricht zwar sofort ein, nicht jedoch über R2. R2 entlädt C2 "langsam". Da der AVR im Schlafmodus ist und der ADC als Eingang mit PCINT geschaltet ist, wird aber ungefähr 0,2VCC ein Interrupt ausgelöst. 0,2VCC sind PI mal Daumen nach 2 tao (http://de.wikipedia.org/wiki/Zeitkonstante) erreicht. Innerhalb dieser Zeit darf die Spannung in C1 nicht so weit abgefallen sein, dass ein sicheres Schreiben in den EEPROM nicht mehr möglich ist. Daher ist jetzt ein Kompromiss zwischen der Entladezeit von C2 (möglichst kurz -> kleiner C) und der Pufferfunktion von C2 (möglichst gut -> großer C) in Abhängigkeit von C1 zu machen. Bei weiteren Fragen gerne schreiben. PS: Ich habe einen festen Batterihalter, daher geht das einlöten von Dioden nur schwer, zusätzlich wären die knapp 2V bei zwei leeren Zellen auch ziemlich knapp. Und die Überwachung nur einer Zelle ist damit auch nicht möglich.
Sorry, schneller geschrieben als gedacht: "wird ab ungefähr 0,2VCC ein Interrupt ausgelöst" "darf die Spannung über C1 nicht so weit abgefallen sein" oder ""darf die Energie in C1 nicht so weit abgefallen sein
Das Problem mit der langsamen Reaktion kann man umgehen, wenn man auch parallel zu R1 noch einen Kondensator hat. Da mit kann man den Teiler Frequenzunabhängig machen, oder wenn man will auch schnelle Änderungen noch betonen. Zur Detektion im Schlafmodus sollte man allerdings nicht den PCInt nutzen. Der digitale Eingang ist nicht besonders genau, und braucht an der Grenze recht viel Strom (wollte immer schon mal nachmessen wie viel). Besser ist es da den analogen Komparator zu nutzen. Den kann man auch auf jeden ADC Pin umlenken - als Vergleich dient dann die interne Ref. - die allerdings auch etwas Strom braucht. Ob das mit der Detektion dann auch gut funktioniert, hängt davon ab wie schnell die Spannung vor dem LDO einbricht. Vor dem LDO braucht man in der Regel auch einen Kondensator von 100nF - 10 µF. Je nach LDO kann da ggf. auch noch ein Leckstrom zurückfließen, so dass die Spannung ggf. gar nicht so schnell zusammenbricht. Als Notlösung ggf. ein (ggf. Reed) Kontakt am Deckel des Batteriefachs. Da hat man dann reichlich Zeit, noch bevor die Akkus überhaupt raus sind.
Naja zum Glück passiert hier nichts Schlimmes, wenn in der Nähe ein Handy funkt und die Interrupts auslöst aber generell verstehe ich hier den Kampf mit den uA nicht. Wenn es Primärzellen wären, klar aber bei Akkus, die sowieso alle paar Monate geladen werden müssen? Ansonsten gute Lösung.
Stefan schrieb: > Daher ist jetzt ein Kompromiss zwischen der Entladezeit von C2 > (möglichst kurz -> kleiner C) und der Pufferfunktion von C2 C2 muss nur ausreichend puffern um vom Sample&Hold-Kondensator im ADC bei Beginn der Messung nicht übergebührlich belastet zu werden. Ansonsten ist der ADC-Eingang extrem(!) hochohmig, es ist nur der Sample&Hold der geladen werden will. Eventuell (ungetestet) wird selbst das kein Problem mehr wenn Du nicht zwischen den Messungen den ADC-Muxer immer wieder woanders hin schaltest. Probier mal den C2 kleiner zu machen und schau wie die Messungen werden (Rauschen, etc).
Lurchi schrieb: > Das Problem mit der langsamen Reaktion kann man umgehen, wenn man > auch > parallel zu R1 noch einen Kondensator hat. Da mit kann man den Teiler > Frequenzunabhängig machen, oder wenn man will auch schnelle Änderungen > noch betonen. Bingo! Schalte den C2 nicht nach GND sondern nach VBat!
Ich hatte immer noch einen Satz aus dem ersten Posting im Kopf, das die Low-Side geschaltet wird. Daher meinte ich natürlich, dass der Spannungsteiler, bzw. nach der letzten Schaltung, der Kondensator mit dem unteren R von Gnd getrennt wird. Klar fliessen dann immer noch ein paar uA, aber so dachte ich halt.
Wenn D1 für eine Diode und einen LDO steht, dann wird es mit drei NiMH-Zellen und 3.3V für VCC ganz schön eng werden.
Lurchi schrieb: > Das Problem mit der langsamen Reaktion kann man umgehen, wenn man auch > parallel zu R1 noch einen Kondensator hat. Das ist ein Denkfehler: wenn die Batterie entnommen wird ist ein Kondensator parallel zu R1 wirkungslos. (da der Eingang hochohmig wird). Stefan schrieb: > Zusätzlich sollte die Impedanz für eine AD Wandlung laut Datenblatt > nicht über 10kOhm liegen, was hier deutlich überschritten wird. Die Forderung 10kOhm kommt nicht nur wegen der Sample-Kapazität sondern vor allem auch wegen dem maximalen Leckstrom des ADC-Pins von 1uA. 1uA * 1 Meg Eingangsimpedanz = 1V Messfehler. Da hilft der Kondensator leider nicht dagegen. Ich gebe zu: bei Raumtemperatur wird man in der Regel 1-2 Größenordnungen unterhalb des maximalen Leckstroms liegen. Aber der Einsatztemperaturbereich fehlt noch als Angabe. (Genauso wie garantierte Leckstrom-Werte bei Raumtemperatur). Für die Spannungsmessung könnte man auch einen N-Kanal FET im Spannungsteiler verwenden (bei reduziertem Messbereich). Siehe Batteriewächter Für die Batteriewechsel-Erkennung habe ich leider keine Lösung. Gruß Anja
Konrad S. schrieb: > Wenn D1 für eine Diode und einen LDO steht, dann wird es mit drei > NiMH-Zellen und 3.3V für VCC ganz schön eng werden. war mein erster Gedanke, Entladeschußspannung sollte bei 2,7V gesetzt werden, das klappt nicht mit >8MHz Anja schrieb: > Das ist ein Denkfehler: wenn die Batterie entnommen wird ist ein > Kondensator parallel zu R1 wirkungslos. (da der Eingang hochohmig wird). dafür wird ja VCC gepuffert mit einem ausreichenden C um dem MC seine letzten Aufgaben machen zu lassen -> Daten ins EEPROM schreiben was erst viel zu spät im Thread benannt wurde. Anja schrieb: > 1uA * 1 Meg Eingangsimpedanz = 1V Messfehler. das tut ja nicht weh wenn er nur den Wegfall der Spannung feststellen will, schlimmer finde ich die Dimensionierung, der C am Spannungsteiler verhindert ja auch die schnelle Detektierung weil er die letzte aufgeladene Spannung länger hält. Bernd K. schrieb: > Schalte den C2 nicht nach GND sondern nach VBat! wäre ne Möglichkeit um schneller VCC runter festzustellen, müsste probiert oder gerechnet werden. Bitflüsterer schrieb: > Ich hatte immer noch einen Satz aus dem ersten Posting im Kopf, das die > Low-Side geschaltet wird. ne hi side Schaltung war schon richtig und dachte ich auch nur da hilft es nicht alle Minute zu schauen, nimmt einer dazwischen die Batterie raus ist Essig. Auch das fehlte die ganze Zeit im Thread was getan werden soll. Stefan schrieb: > Also was ich suche ist im Eingangspost sehr klar beschrieben. > Eine stromsparende Schaltung um die Batterispannung zu messen und das > Einbrechen durch herausnehmen der Batterie zu detektieren. wo steht im Eingangspost das der AVR genau aus dieser Batterie gespeist wird? ich lese nur: Stefan schrieb: > ich würde gerne mit dem ADC eines AVR die Batteriespannung messen. Die > Batteriespannung liegt über VCC (max. 1,5V). aber egal, was übrig bleibt ist: Stefan schrieb: > Schwierigkeit zwei ist, dass ein abfallen der Spannung auf 0V (entnehmen > der Batterie) einen Interrupt auslösen soll. und das ist doch simpel: Stefan schrieb: > Da der AVR im Schlafmodus ist und der > ADC als Eingang mit PCINT geschaltet ist, wird aber ungefähr 0,2VCC ein > Interrupt ausgelöst. 0,2VCC sind PI mal Daumen nach 2 tao > (http://de.wikipedia.org/wiki/Zeitkonstante) erreicht. OK damit fällt Komperator raus, der müsste ja nicht bei 0,2 VCC ansprechen. Also Kondi an +VCC und diesen Impuls schneller rüberbringen an PCINT Kondi nach GND würde ja eher verzögern weil der durch die hochohmigen R sich nicht entladen kann, evtl. können alle R entfallen, du willst ja nur einen fetten negativen Impuls von VCC wenn eine Zelle entnommen wird. Diode und Puffer C dahinter zur Versorgung für den µC muss aber bleiben.
:
Bearbeitet durch User
Joachim B. schrieb: > Entladeschußspannung sollte bei 2,7V gesetzt > werden Für NiMH-Zellen 1.0V pro Zelle! Dann leben die ewig.
@Joachim B. Könntest du folgendes mal in ein Schaltbild fassen? >Also Kondi an +VCC und diesen Impuls schneller rüberbringen an PCINT >Kondi nach GND würde ja eher verzögern weil der durch die hochohmigen R >sich nicht entladen kann, evtl. können alle R entfallen, du willst ja >nur einen fetten negativen Impuls von VCC wenn eine Zelle entnommen >wird. @Anja Danke für den Hinweis mit dem Leckstrom.
Schau mal der hier... http://www.google.de/search?q=lp2951 ...hat für solche Zwecke sogar einen Interrupt-/PowerGood-Ausgang.
Bei dem Preis macht es keinen Sinn irgend was zu frickeln: http://www.dx.com/s/lson+probes Habe selber verschiedenen in Gebrauch und bis jetzt keine Probleme.
Hi >Bei dem Preis macht es keinen Sinn irgend was zu frickeln: >http://www.dx.com/s/lson+probes >Habe selber verschiedenen in Gebrauch und bis jetzt keine Probleme. Du bist im falschen Film: Beitrag "Billigere Alternative zu Pogopins" MfG Spess
Stefan schrieb: > @Joachim B. > Könntest du folgendes mal in ein Schaltbild fassen? OK hab ich wegen Pause und sogar mit Oszi Bild links, Aufnahme vom C R - Glied (gespeist vom Generator) oberste 2 Linien Channel 1 Spannung bricht weg gelb gedehnt auf µs, weiss gemerkt ms unterste Linien, Channe 2 Triggerimpuls für PCINT türkis gedehnt auf µs, weiss gemerkt ms wenn die Überhöhung stört kann sie mit Z-Diode D3 abgeschnitten werden oder mit einer weiteren Diode nach C2 abgeleitet werden, aber die Energie eines 10nF hier dürfte keinen AVR killen. man sieht aber schön wie das Differenzierglied den negativen Impuls transportiert und der ist im µs Bereich so lang das der AVR aufwachen sollte, die ms zum Puffern der VCC obliegt dir ja.
Keine Spannungsmessung, und an einem Generator der aktiv low treibt mag das gehen, eine entnommene Batterie ist jedoch HiZ.
Stefan schrieb: > Keine Spannungsmessung, und an einem Generator der aktiv low > treibt mag > das gehen, eine entnommene Batterie ist jedoch HiZ. probiere es aus...... notfalls bau das Batteriefach um das ein Schalter auf low zieht, oder hatten wir das schon? so ganz klar ist mir dein Plan immer noch nicht AVR im Tiefschlaf, da kann er sich nicht selber wecken um ab und an was sinnvolles zu machen. Er läuft mit den Timern weiter? dann ist der Stromverbrauch nicht minimiert und da soll es auf µA ankommen? ich kapiers nicht.
:
Bearbeitet durch User
Nimm es mir bitte nicht übel, wenn ich es jetzt so direkt sage, aber ich würde dich bitten zu dem Thread nicht weiter beizutragen. Deine Antworten waren bis jetzt wenig hilfreich bis kontraproduktiv. Danke.
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.