Forum: Mikrocontroller und Digitale Elektronik [AVR] Betriebsspannung messen via interne Referenz?


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 Arno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin allerseits,

helft mir mal bitte beim Denken bzw. sagt mir, ob ich einen Denkfehler 
habe:

Ein ATMega328P soll von einer Lithium-Zelle (direkt) versorgt werden.

Ich würde gern die Batteriespannung messen, um bei Unterspannung 
abzuschalten (bzw. in den tiefsten Schlafmodus zu wechseln - 0,2mA ist 
gering genug bei einem 1700mAh-Akku).

Klassischerweise macht man das per Spannungsteiler gegen die interne 
Referenz. Aber dazu muss ich für andere Messungen die Referenz hin und 
her schalten (und jeweils die erste Messung verwerfen) außerdem zwei 
Widerstände bestücken, die permanent Strom aus dem Akku ziehen -> geht, 
aber nicht so 100% schön.

Jetzt lese ich im Datenblatt des AVR: Mit MUX[3:0] == 1110 kann ich die 
interne Referenz von 1,1V (+-10%) messen. Wenn ich als Referenzspannung 
weiterhin die Betriebsspannung = Batteriespannung behalte, müsste der 
Messwert doch steigen, wenn die Batteriespannung fällt, oder?

Von ca.
 bei voll geladenem Akku und angeschlossenem Ladegerät auf
 bei leerem Akku (und zu wenig Restspannung für den LDO-Regler, der 
andere Spannungsteile mit 3V versorgt)?

Klappt das so (mit Kalibrierung auf die tatsächliche Referenzspannung)? 
Hat das hier schonmal jemand erfolgreich umgesetzt? Und wenn nicht, wo 
liegt mein Denkfehler?

Vielen Dank und viele Grüße,
Arno

von Michael W. (michael_w738)


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> Ich würde gern die Batteriespannung messen, um bei Unterspannung
> abzuschalten (bzw. in den tiefsten Schlafmodus zu wechseln - 0,2mA ist
> gering genug bei einem 1700mAh-Akku).

Ist denn das erforderlich? Kann man dafuer nicht einfach den Brownout 
verwenden?

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
1
Vcc = 1023 * 1100 / ADC;  // = mV

Beitrag #5723381 wurde vom Autor gelöscht.
von Axel S. (a-za-z0-9)


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> Klappt das so (mit Kalibrierung auf die tatsächliche Referenzspannung)?

Ja. Das ist das Standardverfahren, um die Betriebsspannung gegen die 
interne Referenz zu messen. Geht aber nicht bei allen AVR, sondern nur 
bei denen, die Vcc auf einen Eingang des ADC-MUX aufgelegt haben.

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> Klappt das so (mit Kalibrierung auf die tatsächliche Referenzspannung)?
> Hat das hier schonmal jemand erfolgreich umgesetzt? Und wenn nicht, wo
> liegt mein Denkfehler?

Ich würde die Berechnung anders durchziehen.

Mit einem einstellbaren Netzgerät den benötigten Spannungsbereich 
durchfahren.
Möglichst weit auseinander, je einen Punkt wählen.
Steigung und Offset im EEPROM speichern.
Beim messen, die Geradengleichung verwenden.

Als Temperaturkorrektiv, könnte man dann auch noch den inneren 
Temperatursensor verwenden.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Axel S. schrieb:
> Geht aber nicht bei allen AVR, sondern nur
> bei denen, die Vcc auf einen Eingang des ADC-MUX aufgelegt haben.

Nein. (A)Vcc ist die Referenz und gemessen wird die Bandgapspannung von 
1,1V beim 328er.

von Arno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael W. schrieb:
> Arno schrieb:
>> Ich würde gern die Batteriespannung messen, um bei Unterspannung
>> abzuschalten (bzw. in den tiefsten Schlafmodus zu wechseln - 0,2mA ist
>> gering genug bei einem 1700mAh-Akku).
>
> Ist denn das erforderlich? Kann man dafuer nicht einfach den Brownout
> verwenden?

Ja (in meinem Fall), denn es soll nicht der Controller einfach nur in 
Reset gehen, sondern diverse andere Hardware kontrolliert abgeschaltet 
werden.

Axel S. schrieb:
> Arno schrieb:
>> Klappt das so (mit Kalibrierung auf die tatsächliche Referenzspannung)?
>
> Ja. Das ist das Standardverfahren, um die Betriebsspannung gegen die
> interne Referenz zu messen. Geht aber nicht bei allen AVR, sondern nur
> bei denen, die Vcc auf einen Eingang des ADC-MUX aufgelegt haben.

Danke (auch allen anderen). Du meinst, V_BG (interne Referenz) auf einem 
Eingang des ADC-MUX, nehme ich an, nicht Vcc?

Dann war ich bisher mit Spannungsteiler etwas "konventionell" unterwegs 
:) Man lernt ja (zum Glück) nie aus.

MfG,
Arno

von Sascha W. (sascha-w)


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> 1.1/4.2 * 1024 = 268
> 1.1/3.3 * 1024 = 341
genau, und für die Zwecke reicht eine Einpunktkalibrierung.
Ich mach das immer so:
1. Kalibrierspannung anlegen z.B 3.3V => Sollwert 330 (Int in 10mV 
Schritten)
2. 330 * ADC_3.3V = 112530 => im EEProm speichern
kalibrieren über Taster/Menü/Pin/... auslösen (was man gerade so hat)

3. Spannung bestimmen: 112530 / ADC_4.2V = 420


Sascha

von Arno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Weiter gedacht: Wahrscheinlich kann ich sogar automatisch kalibrieren - 
mit der Annahme V_BG = 1,25V anfangen und jedes Mal wenn die Messung 
mehr als 4,2V ergibt, auf 4,2V nachkalibrieren. Denn der Akku wird über 
einen externen MCP73831 geladen, der die 4,2V auch erreicht. Zumindest 
bisher, ich hab noch nicht die volle Schaltung in Betrieb mit 
gleichzeitigem Laden getestet. Und was das Lade-IC ausgibt, wenn kein 
Akku angeschlossen ist, muss ich dazu natürlich auch im Datenblatt 
nachsehen und messen.

Genauer als die Konstantspannung des Lade-IC braucht die 
Unterspannungsabschaltung (bei 3,3V) aber nicht zu werden.

MfG, Arno

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> Genauer als die Konstantspannung des Lade-IC braucht die
> Unterspannungsabschaltung (bei 3,3V) aber nicht zu werden.

Wenn dir's nur darauf ankommt, musst du auch nichts kalibrieren. Dem 
Akku ist das ziemlisch wurscht, ob du nun schon bei 3,3 V oder erst bei 
2,7 V abschaltest.  Die Energiemenge zwischen beiden Potenzialen ist 
sowieso nur sehr gering, und tief entladen ist beides auch noch nicht.

von Arno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Arno schrieb:
>> Genauer als die Konstantspannung des Lade-IC braucht die
>> Unterspannungsabschaltung (bei 3,3V) aber nicht zu werden.
>
> Wenn dir's nur darauf ankommt, musst du auch nichts kalibrieren. Dem
> Akku ist das ziemlisch wurscht, ob du nun schon bei 3,3 V oder erst bei
> 2,7 V abschaltest.  Die Energiemenge zwischen beiden Potenzialen ist
> sowieso nur sehr gering, und tief entladen ist beides auch noch nicht.

Naja, Unterspannungsabschaltung nicht nur für den Akku, sondern auch für 
die Schaltung - "kurz davor" (noch zu definieren) will ich den Benutzer 
warnen (LED blinkt statt zu leuchten) und der ESP8266 hinter dem 3V-LDO 
soll es auch noch schaffen, sich vom WLAN abzumelden. 2,7V am Akku wird 
dafür zu wenig sein.

Aber ja, insgesamt ist das recht unkritisch - der Akku hat auch eine 
integrierte Schutzschaltung und es sind keine Menschenleben gefährdet, 
wenn der ESP sich nicht sauber vom WLAN abmeldet ;)

MfG, Arno

von Manfred (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Dem
> Akku ist das ziemlisch wurscht, ob du nun schon bei 3,3 V oder erst bei
> 2,7 V abschaltest.  Die Energiemenge zwischen beiden Potenzialen ist
> sowieso nur sehr gering, und tief entladen ist beides auch noch nicht.

Diese Aussage so pauschal streite ich ab, schaue Dir den Anhang an. 
Diese Panasonic LiIon 18650 spuckt von 3,3 bis 3,0 Volt noch rund 600mAh 
aus, gut 20% ihrer Gesamtkapazität!

Bei anderen Zellen mit höherem Innenwiderstand und vielen Zyklen sieht 
das anders aus.

Die Abschaltschwelle sollte man von der Last abhängig definieren, bei 
geringem Strom früher weg als bei hoher Last. Wenn man langjährig Freude 
haben will, bleibt man von den Endpunkten weg.

Es sind noch einige DECT-Telefone in Betrieb, die nach über 10 Jahren 
noch 50% Akkukapazität haben. Die laden nicht bis Anschlag voll und 
schalten frühzeitig aus, die damaligen Kollegen wussten, was sie tun.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
Manfred schrieb:
> Die laden nicht bis Anschlag voll und
> schalten frühzeitig aus, die damaligen Kollegen wussten, was sie tun.

Die hatten aber auch nicht damit zu kämpfen, daß 10 Minuten mehr 
Akkulaufzeit ein entscheidendes Verkaufsargument waren.

von Manfred (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Arno schrieb:
> der ESP8266 hinter dem 3V-LDO soll es auch noch schaffen, sich vom WLAN 
abzumelden.

Welchen Typ LDO, wieviel Strom?

Beim MCP1703 und 200mA Last sind etwa 600mV Dropout zu erwarten, das 
wird verflucht eng bis zu geht nicht.

Versuchsaufbau gemacht und getestet?

von Manfred (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Thomas E. schrieb:
>> Die laden nicht bis Anschlag voll und
>> schalten frühzeitig aus, die damaligen Kollegen wussten, was sie tun.
> Die hatten aber auch nicht damit zu kämpfen, daß 10 Minuten mehr
> Akkulaufzeit ein entscheidendes Verkaufsargument waren.

Das waren Geräte für den kommerziellen Bereich, einfaches LC-Display 
monochrom und um 50h standby / 5h telefonieren.

Nachfolger haben ein Farbdisplay, können doppelt so lange Standby - aber 
die Akkus leben nicht mehr annähernd so lange.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Manfred schrieb:
> Diese Aussage so pauschal streite ich ab, schaue Dir den Anhang an.
> Diese Panasonic LiIon 18650 spuckt von 3,3 bis 3,0 Volt noch rund 600mAh
> aus, gut 20% ihrer Gesamtkapazität!

OK, die 3,3 V stammten vom TE – ich hätte die Grenze auch eher bei 3,0 V 
angesetzt. Deine Messung bestätigt das.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Wobei das meiner Erinnerung nach nur ein Problem ist beim Umschalten der 
Referenz. Wenn man ausschließlich diesen einen Kanal und nur mit einer 
Referenz misst, bleiben die Werte stabil.

Auch die Umschaltung kann man aber in den Griff bekommen. Habe ein 
Gerät, welches regelmäßig die Spannung eines AD8319 erfasst und 
gelegentlich auf Batteriespannungsmessung umschaltet, funktioniert 
problemlos.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Wobei das meiner Erinnerung nach nur ein Problem ist beim Umschalten der
> Referenz.

Nö, die Referenz bleibt VCC. Das Problem tritt auf beim Umschalten des 
MUX.
Die 1,1V sind so hochohmig, daß das Umladen des S&H Kondensators sehr 
lange dauert. Man sieht deutlich, daß das Ergebnis sich vom Wert des 
vorher ausgewählten Eingangs annähert.

von Arno (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Peter D. schrieb:
> Jörg W. schrieb:
>> Wobei das meiner Erinnerung nach nur ein Problem ist beim Umschalten der
>> Referenz.
>
> Nö, die Referenz bleibt VCC. Das Problem tritt auf beim Umschalten des
> MUX.
> Die 1,1V sind so hochohmig, daß das Umladen des S&H Kondensators sehr
> lange dauert. Man sieht deutlich, daß das Ergebnis sich vom Wert des
> vorher ausgewählten Eingangs annähert.

Danke für den Hinweis - ich mittele sowieso 16 Werte, dann schmeiße ich 
für die Batteriespannungsmessung in Zukunft die ersten acht weg.

Alles weitere läuft sehr weit weg von meiner eigentlichen Frage, aber 
die ist ja beantwortet :) nur bitte keine Aufregung, dass die Infos 
nicht alle im ersten Post enthalten waren - das war alles nicht wirklich 
relevant für die Frage...

Manfred schrieb:
> Arno schrieb:
>> der ESP8266 hinter dem 3V-LDO soll es auch noch schaffen, sich vom WLAN
> abzumelden.
>
> Welchen Typ LDO, wieviel Strom?

NCV8161 bei durchschnittlich ca. 100mA, Spitzen bis ~300mA (ESP8266 
eben, sonst nichts an der 3V-Schiene). Laut Datenblatt hat der in der 
1,8V-Version rund 300mV Dropout bei 300mA, in der 3,3V-Version unter 
200mV.

> Versuchsaufbau gemacht und getestet?

Versuchsaufbau (will sagen: Eine testweise bestückte Platine) habe ich. 
Test läuft noch nicht, bisher nehme ich den AVR in Betrieb, der den 
Spannungsregler überhaupt erst einschalten soll. Ruhestrom aktuell 
250µA, wobei ich auch noch einen 
Batteriespannungsmessungs-Spannungsteiler drauf habe, den ich ja 
offenbar nicht brauche :)

Jörg W. schrieb:
> Manfred schrieb:
>> Diese Aussage so pauschal streite ich ab, schaue Dir den Anhang an.
>> Diese Panasonic LiIon 18650 spuckt von 3,3 bis 3,0 Volt noch rund 600mAh
>> aus, gut 20% ihrer Gesamtkapazität!
>
> OK, die 3,3 V stammten vom TE – ich hätte die Grenze auch eher bei 3,0 V
> angesetzt. Deine Messung bestätigt das.

Das ist durchaus OK, dann kann man das Gerät ~12-15h nutzen, bis es 
"Akku leer" meldet, und hat dann immer noch ~1000h Zeit, es an Strom 
anzuschließen, ohne den Akku unnötig tief zu entladen - und es ist genug 
Restladung im Akku, regelmäßig die Akkuspannung zu prüfen und zu merken, 
wenn es wieder aufgeladen wird. Aber viel über 3,3V sollte ich dann 
tatsächlich nicht abschalten...

(Der Akku ist ein 103058 von "Cellevia Batteries", den es bei TME gibt: 
https://www.tme.eu/en/details/accu-lp103058_cl/rechargeable-batteries/cellevia-batteries/lp103058/ 
- ich hab mich schwer getan, einen Akku mit Schutzschaltung mit ca. 
30-35mm Breite, maximal 10mm Dicke und bis zu 65mm Länge zu finden, bei 
dem ich auch in drei-vier-fünf Jahren noch eine Chance hab, ihn zu 
kaufen - wäre froh, wenn es ein richtiges Datenblatt dazu gäbe, ist aber 
nicht drin...)

MfG, Arno

von Ralph G. (rhg)


Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.