Forum: Mikrocontroller und Digitale Elektronik ADC: jetzt nur noch die Batteriespannung messen.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Sven Scholz (Gast)


Lesenswert?

Hallo Gemeinde.

Ich verwende ein Arduino Pro Mini Board und anfangs direkt mit einer 
Spannung aus 2x AA Akkus (2,8V - 1,8V).
Jetzt musste ich doch den MCP1700 verbauen, da der DS1820 eine konstante 
3V Spannung benötigt. Sollte alles hinreichend bekannt sein. :-)

Nun geht es mir darum, den Zeitpunkt, wann meine Spannungsversorgung 
schlapp macht bzw. wann die Batterie "leer" sind zu ermitteln mit dem 
ADC des Atmega328p.

Im Netz habe ich erfahren, dass man hierfür die interne Referenzspannung 
hernehmen kann, diese aber vorher mit dem Multimeter genau bestimmen 
muss.
Die Referenzspannung schwankt anscheinend um 10% und kann daher zwischen 
1 - 1,2V liegen...
Gut, könnte ich machen. Allerdings benötige ich ja dann einen 
Spannungsteiler...

Jetzt meine eigentlich Frage:
Der MCP1700 liefert mir doch auch eine konstante Spannung oder? Wie 
genau ist die? Ich setze momentan den Typ für eine 3,3V Spannung ein. 
Hätte es irgendwelche Vorteile diese herzunehmen?
Man Batteriefach kann 3xAA aufnehmen. Da ich mir noch nicht sicher bin, 
welchen Typ ich einsetze (Akku oder Batterie) schwankt die 
Eingangsspannung zum MCP1700 von 4,5/4,2 bis runter auf 2,7V.
Der MCP dürfte ja noch bis ca. 3,1V funktionieren... (meine Schaltung 
zieht max. 25mA).

von Stefan F. (Gast)


Lesenswert?

Sven Scholz schrieb:
> Allerdings benötige ich ja dann einen Spannungsteiler...

Brauchst du nicht. DU kannst als ADC Referenz die Versorgunsgspannung 
einstellen und dann über den ADC Multiplexer die interne Referenz messen 
(also den Spieß umdrehen).

von M. K. (sylaina)


Lesenswert?

Vorsicht: Die interne Referenz des Atmegas ist auf ca. +/- 10% genau, 
sie schwankt aber nicht um diesen Wert. Diese "Genauigkeit" ist (u.a.) 
herstellungsabhängig. Wenn du die Referenz in der Zielschaltung misst 
ist diese eigentlich sehr genau/stabil und zwar so, dass es idR für 10 
bit ausreichend ist.
Der MCP1700 ist mit seinen 0.4% Output Voltage Regulation und den 1.0% 
Load Regulation nicht wirklich als Referenz für einen 10 bit ADC 
geeignet.
Auf der anderen Seite musst du dich nur fragen, wie genau brauchst du es 
wirklich. Ich denke, es würde genügen die Batterie-Spannung auf 1 bis 2 
% genau zu messen und dafür wäre auch der MCP1700 ausreichend.
Ich mein, ob du jetzt bei 3.10 V oder 3.05V sagst, dass der Akku leer 
ist, kann ja eigentlich nicht soo dramatisch für den DS1820 sein. ;)

von HildeK (Gast)


Lesenswert?

M. K. schrieb:
> Der MCP1700 ist mit seinen 0.4% Output Voltage Regulation und den 1.0%
> Load Regulation nicht wirklich als Referenz für einen 10 bit ADC
> geeignet.

In der von Stefanus vorgeschlagenen Vorgehensweise muss sie das auch 
nicht, denn gerade deren Schwankung soll ja bestimmt werden. Sie ist 
auch nicht "die Referenz", sondern soll nur so eingestellt werden und 
die interne, konstante Ref wird gemessen - die ist der Bezug für die 
Rechnung.

von M. K. (sylaina)


Lesenswert?

HildeK schrieb:
> In der von Stefanus vorgeschlagenen Vorgehensweise muss sie das auch
> nicht, denn gerade deren Schwankung soll ja bestimmt werden. Sie ist
> auch nicht "die Referenz", sondern soll nur so eingestellt werden und
> die interne, konstante Ref wird gemessen - die ist der Bezug für die
> Rechnung.

Keine Frage, kann man so machen wenn mans so braucht. Ist hier aber 
nicht der Fall. Zumindest denke ich mir, dass das ziemlich viel Aufwand 
dafür ist, nur um das Schätzeisen DS1820 nicht bei unter 3V zu betreiben 
;)

von HildeK (Gast)


Lesenswert?

M. K. schrieb:
> Zumindest denke ich mir, dass das ziemlich viel Aufwand
> dafür ist, nur um das Schätzeisen DS1820 nicht bei unter 3V zu betreiben

SW-Aufwand? Oder was?
Er will mit dem ADC ohne Spannungsteiler (zusätzlicher Stromverbrauch 
bei Batteriebetrieb) die Versorgung überwachen. Es ist doch nichts 
Einfacher als das, nicht mal eine zusätzliche Leitung wird benötigt, nur 
eine andere Formel zur Bestimmung der Spannung. Damit wird nach einer 
notwendigen Kalibrierung die Versorgungsspannung mit der Genauigkeit der 
internen Referenz bestimmbar sein.
Der MCP1700 ist w.c. mit ±3% spezifiziert. Ob das dem DS1820 reicht, 
weiß ich nicht, seine untere Grenze liegt bei 3.0V. Zu wissen, ob man 
die 3.0V unterschreitet, ist also sinnvoll.

Oder ich verstehe deinen Einwand nicht :-).

von M. K. (sylaina)


Lesenswert?

HildeK schrieb:
> Oder ich verstehe deinen Einwand nicht :-).

Mein Einwand war nur, da der TE sich fragt ob die interne Referenz genau 
genug ist um die Versorgung damit zu messen obs nicht besser sei den 
MCP1700 zur Messung zu nutzen. Und hier ist mein Einwand nur, dass der 
MCP1700 noch viel ungenauer ist als die interne Referenz ;)

von Axel S. (a-za-z0-9)


Lesenswert?

M. K. schrieb:
> HildeK schrieb:
>> Oder ich verstehe deinen Einwand nicht :-).
>
> Mein Einwand war nur, da der TE sich fragt ob die interne Referenz genau
> genug ist um die Versorgung damit zu messen obs nicht besser sei den
> MCP1700 zur Messung zu nutzen.

Das ergibt nach wie vor keinen Sinn. Der MCP1700 ist ein 
Spannungsregler. Mit dem kann man so oder so nichts messen.

Auch sonst ist leidlich unklar, was genau der TE machen will. Mit 
seinen 2 Primärzellen kommt er auch mit dem MCP1700 nicht auf 3V. Also 
wird er wohl auf 3 oder 4 Zellen upgraden müssen.

Nehmen wir an, es sind 3 Zellen. Aus denen könnte er den ATMega nach wie 
vor direkt betreiben. Dann kann er die Batteriespannung vor dem MCP1700 
messen, was IMHO Sinn ergeben würde aber die Kommunikation mit dem 
DS1820 erschwert. Oder er betreibt den ATMega ebenfalls an den 
stabilisierten 3V. Dann mißt er die meiste Zeit stabile 3.0V und erkennt 
die leere Batterie erst, wenn es eigentlich schon zu spät ist.

Die Genauigkeit der Referenz spielt für diese Anwendung aber keine 
Rolle, das heißt nur daß er nicht einfach eine hartcodierte Schwelle für 
den ADC-Meßwert verwenden kann, sondern jeden µC einmalig kalibrieren 
muß. Wenn er die 3V mißt, kann das sogar automatisch geschehen. Denn er 
bekommt dann die meiste Zeit über einen leidlich konstanten Wert vom ADC 
und muß nur die Abweichung detektieren.

von M. K. (sylaina)


Lesenswert?

Axel S. schrieb:
> Das ergibt nach wie vor keinen Sinn. Der MCP1700 ist ein
> Spannungsregler. Mit dem kann man so oder so nichts messen.

Der soll ja auch nur als Referenz für den ADC des AVRs herhalten. Wenn 
man den Thread liest ist das klar.

Axel S. schrieb:
> Auch sonst ist leidlich unklar, was genau der TE machen will. Mit
> seinen 2 Primärzellen kommt er auch mit dem MCP1700 nicht auf 3V. Also
> wird er wohl auf 3 oder 4 Zellen upgraden müssen.

Und auch hier: Lesen hilft. Aktuell nutzt der TE nur zwei Zellen, sein 
Batteriefach bietet aber Platz für drei Zellen und dann passts auch für 
den MCP1700.

Lies dir erst noch mal in Ruhe den Thread durch. ;)

von Axel S. (a-za-z0-9)


Lesenswert?

M. K. schrieb:
> Axel S. schrieb:
>> Das ergibt nach wie vor keinen Sinn. Der MCP1700 ist ein
>> Spannungsregler. Mit dem kann man so oder so nichts messen.
>
> Der soll ja auch nur als Referenz für den ADC des AVRs herhalten. Wenn
> man den Thread liest ist das klar.

Eigentlich nicht. Welchen Vorteil soll das bieten? Und es geht auch nur 
ausschließlich dann, wenn er den ATMega aus der unstabilisierten 
Rohspannung betreibt.

> Axel S. schrieb:
>> Auch sonst ist leidlich unklar, was genau der TE machen will. Mit
>> seinen 2 Primärzellen kommt er auch mit dem MCP1700 nicht auf 3V. Also
>> wird er wohl auf 3 oder 4 Zellen upgraden müssen.
>
> Und auch hier: Lesen hilft. Aktuell nutzt der TE nur zwei Zellen, sein
> Batteriefach bietet aber Platz für drei Zellen

Stimmt. Den Teil mit 3 Zellen hatte ich tatsächlich überlesen. Immerhin 
hatte ich das richtig geraten. Aus welcher Spannung er seinen ATMega 
betreiben will, schreibt er aber nicht.

> und dann passts auch für den MCP1700.

Naja. Eigentlich nicht. Für den 3.3V Typ schon gar nicht. Und auch mit 
dem 3.0V Typ kriegt er nicht die volle Energie aus den Zellen.

Braucht der DS1820 wirklich konstante 3V? Dem Datenblatt entnehme ich 
das nicht. Da steht nominal 5V, minimal 2.8V. Würde gut zu 3 Zellen 
passen.

von Sven Scholz (Gast)


Lesenswert?

Hallo nochmal,

danke für eure hilfreichen Antworten.
Natürlich möchte die Spannung am MCP-Eingang, also die direkte 
Batteriespannung per ADC ausmessen.
Alles andere macht wenig Sinn...

(Direkt den Atmega328p über 3xAA zu speisen wird wohl nicht gehen, da 
ich ja dann 4,5V bekomme und dies der Atmega328p nicht verträgt. Auch 
andere Sensoren vertragen nur max. 3,6V.)

Ich verwende somit die interne Referenzspannung...
Damit kann ich aber dann doch nur Spannungen unter den ~1,1V messen 
oder?

Danke!

von Stefan F. (Gast)


Lesenswert?

Sven Scholz schrieb:
> da ich ja dann 4,5V bekomme und dies der Atmega328p nicht verträgt.

Er verträgt bis zu 5,5V ganz offiziell.

Sven Scholz schrieb:
> Ich verwende somit die interne Referenzspannung...
> Damit kann ich aber dann doch nur Spannungen unter den ~1,1V messen
> oder?

Fast richtig. Die meisten AVR haben drei Reqferenzen zur Verfügung:

1) Versorgungsspannung (das wären dann die 4,5V)
2) 2,56V
3) 1,1V

Du kannst in allen drei Fällen Eingangsspannungen von Null Volt bis zur 
Höhe der Referenzspannung messen. Bei vielen AVR Modellen kannst du 
außerdem eine der internen Referenzen relativ zur Versorgungsspannung 
messen. Dann ist VCC die Referenz und du misst die 1,1V Spannung.

Siehe hier, erste Antwort: 
https://arduino.stackexchange.com/questions/50769/how-to-measure-the-supply-voltage-of-arduino-without-using-an-analog-pin

von HildeK (Gast)


Lesenswert?

Axel S. schrieb:
> Braucht der DS1820 wirklich konstante 3V? Dem Datenblatt entnehme ich
> das nicht. Da steht nominal 5V, minimal 2.8V. Würde gut zu 3 Zellen
> passen.

Ich las zwar min. 3.0V, aber egal: Den Regler braucht er nicht! Sowohl 
der DS als auch der Mega sind in dem Bereich von 3 Batteriezellen fast 
ideal zu betreiben; gut, unten verliert man ein paar Prozent an 
Kapazität, wenn die 3.0V als Minimum für den DS korrekt sind - ob das 
relevant ist?
Und dann ist es tatsächlich fraglich, ob man die Batteriespannung 
überwachen muss - allerdings kostet das auch nur ein paar Zeilen Code 
und einen Kalibriervorgang für jeden Mega. Aber auch ein wenig Energie 
...

von M. K. (sylaina)


Lesenswert?

Axel S. schrieb:
> Eigentlich nicht. Welchen Vorteil soll das bieten?

Na das sag ich doch ;)

Stefanus F. schrieb:
> Fast richtig. Die meisten AVR haben drei Reqferenzen zur Verfügung:

Und welchen AVR hat das Arduino Pro Mini Board? Genau, einen Atmega328P 
und der hat nur eine interne Referenz von 1.1 VDC ;)

von Stefan F. (Gast)


Lesenswert?

M. K. schrieb:
> Und welchen AVR hat das Arduino Pro Mini Board? Genau, einen Atmega328P
> und der hat nur eine interne Referenz von 1.1 VDC ;)

Ja. Mir ging es eher darum, klarzustellen, dass er auch größere 
Versorgungsspannungen als 1,1V messen kann, wenn er den Spieß umdreht 
(Referenz=aVCC und Multiplexer=1,1V).

von M. K. (sylaina)


Lesenswert?

Stefanus F. schrieb:
> M. K. schrieb:
>> Und welchen AVR hat das Arduino Pro Mini Board? Genau, einen Atmega328P
>> und der hat nur eine interne Referenz von 1.1 VDC ;)
>
> Ja. Mir ging es eher darum, klarzustellen, dass er auch größere
> Versorgungsspannungen als 1,1V messen kann, wenn er den Spieß umdreht
> (Referenz=aVCC und Multiplexer=1,1V).

Das hattest du ja schon oben geschrieben ;)

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.