Forum: Mikrocontroller und Digitale Elektronik ESP.getVcc() liefert hoeheren Wert als an Spannung geliefert wird


von Framp L. (framp)


Lesenswert?

Moin liebe Leute,

willkommen zu meinem ersten Thread in diesem Forum :-)

Bei mir laufen mehrere ESP 8266 Sensoren die per DHT22 oder BME280 
Temperatur und Luftfeuchtigkeit messen und die Werte per MQTT an einen 
Broker senden. Die Werte werden dann noch per Telegraf in eine InfluxDB 
gesteckt so dass ich sie laengerfristig analysieren kann.

jetzt gibt es ein paar Locations die leider keine Stromversorgung haben 
und per Akku betrieben muessen. Dazu habe ich 2500mA LiFePo Akkus an 
ESP01-12F angeschlossen und die senden auch brav ihre Sensordaten per 
ESPNow an den Broker. Zusaetzlich zu den Sensordaten senden sie auch das 
Ergebnis von ESP.getVcc() und da gibt es etwas was ich nicht verstehe:

Ausgabe von mosquitto:
{ "measurement": "temperature", "id": "sensor61", "temperature": 5.0, 
"humidity": 59.0, "vcc": 3499 }
{ "measurement": "temperature", "id": "sensor62", "temperature": 14.0, 
"humidity": 46.0, "vcc": 3255 }

Wie man sieht gibt es zwei Sensoren, beide per LiFePo Akku mit ESP01-12F 
betrieben, die einmal ein Vcc von 3.5V und 3.2V reporten obwohl die 
Akkus nur 3.3V liefern.

Hat jemand eine Idee wie das zu erklaeren ist? Einen Unterschied gibt es 
noch: Der 3.5V Sensor benutzt ein DHT22, der mit 3.2V ein BME280.

Ich habe die ESPs ausgetauscht, die Akkus ausgetauscht - aber immer 
dasselbe Ergebnis. Mein naechster Schritt ist den DHT22 durch einen 
BME280 zu ersetzen - nur muss ich dazu erst auf eine neue HW Lieferung 
warten.

von Thomas E. (thomase)


Lesenswert?

Pe T. schrieb:
> Wie man sieht gibt es zwei Sensoren, beide per LiFePo Akku mit ESP01-12F
> betrieben, die einmal ein Vcc von 3.5V und 3.2V reporten obwohl die
> Akkus nur 3.3V liefern.

1.: Wie sicher bist, daß deine Schätzeisen verlässliche Messwerte 
liefern?

2.: Die Ladeschlußspannung bei deinen Lifepos beträgt ca. 3,7V. Die 
wird, je nach Verbrauch, auch recht lange gehalten, ehe die Spannung an 
der Nennspannung nach unten vorbeizieht.

Ohne Messungen mit verlässlicher Referenzspannung und einigermaßen 
brauchbarem DMM kann man leider nicht viel sagen zu deinem Problem.

Framp L. schrieb:
> Ich habe die ESPs ausgetauscht, die Akkus ausgetauscht - aber immer
> dasselbe Ergebnis. Mein naechster Schritt ist den DHT22 durch einen
> BME280 zu ersetzen - nur muss ich dazu erst auf eine neue HW Lieferung
> warten.

Wie schon gesagt: Messen! Vernünftig messen!

von Framp L. (framp)


Lesenswert?

> 2.: Die Ladeschlußspannung bei deinen Lifepos beträgt ca. 3,7V. Die
> wird, je nach Verbrauch, auch recht lange gehalten, ehe die Spannung an
> der Nennspannung nach unten vorbeizieht.

Vielen Dank fuer die moegliche Erklaerung.

Aus dem Grunde habe ich die Akkus zwischen beiden Sensoren ausgetauscht 
- aber - bis auf geringe Abweichungen - selbige Ergebnisse erhalten :-/

: Bearbeitet durch User
Beitrag #6614085 wurde vom Autor gelöscht.
von Helmut -. (dc3yc)


Lesenswert?

Hast du auch die Toleranzen der ESP-ADCs berücksichtigt? Ein Blick ins 
Datenblatt sollte genügen.

von Framp L. (framp)


Lesenswert?

Helmut -. schrieb:
> Hast du auch die Toleranzen der ESP-ADCs berücksichtigt? Ein Blick ins
> Datenblatt sollte genügen.

Gerechnet habe ich zugegebenermassen noch nicht.

Aber ich habe zwei andere verschiedene ESP-12F in den Sensor gesteckt - 
aber beide zeigen - bis auf geringe Abweichungen - dieselbe 
uebernatuerlichen Vcc :-( Dass 3 ESPs nahezu dieselben Toleranzen haben 
ist unwahrscheinlich.

von Helmut -. (dc3yc)


Lesenswert?

Eine weitere Fehlerquelle könnte die Umrechnung des binären Messwertes 
in Volt sein. Wenn du fälschlicherweise nur durch 1000 statt 1024 
teilst, bekommst du auch einen zu hohen Wert heraus. Aber nur durch 
Messung mit einem genauen Voltmeter könntest du deinem Fehler auf die 
Schliche kommen.

: Bearbeitet durch User
von Framp L. (framp)


Lesenswert?

br

Helmut -. schrieb:
> Wenn du fälschlicherweise nur durch 1000 statt 1024

Vcc ist in mV und / 1000 erhalte ich V. Selbst wenn ich 1024 ansetze was 
meiner Meinung inkorrekt ist komme ich immer noch auf 3.4V > 3.3 V der 
Spannung des Akkus den ich gemessen habe.

: Bearbeitet durch User
von Michael U. (amiga)


Lesenswert?

Hallo,

hier laufen 5x ESP8266-12 jeweils mit einer LiFePO4 Zelle.
Die übermittelten Werte liegen ähnlich Deinen. Ich habe mir zugegeben 
nichtmal die Mühe gemacht, die Toleranzen des ADC zu ergünden usw., ich 
wollte ja nur einen Überblick über die Akku-Zustände haben. Die Werte 
der einzelnen ESP bleiben für sich stabil, wer da mehr meldet macht das 
immer, teilweise seit 2 Jahren und auch der draußen bei -10 Grad.
Die Akkus haben nach dem Laden nach wenigen Minuten gemessen ca. 3,45V, 
wenn die unter 3V melden ist es Zeit zum Laden. Ich habe das auch schon 
vergessen, dann ist die letzte Meldung so um 2,55V, wo der ESP noch 
klarkam.
Die Akkus selbst sind wirklich hart im Nehmen, bei einer 600mAh Zelle 
habe ich mal nach ca. 1 Jahr die Kapazität gemessen, trotz 
versehentlicher Tiefentladung usw. von 620mAh neu auf 590mAh gefallen, 
das ist ok für mich.
Wenn, dann würde ich für diese Anwendung wohl nur einen festen 
Korrekturfaktor in die Berechnung einbauen...

Gruß aus Berlin
Michael

von Framp L. (framp)


Lesenswert?

So. Da es mich wurmt dass ich nicht verstehe wieso einmal 3.2V und 
einmal 3.5V gemessen werden habe ich mal eine kleine Testreihe 
durchgefuehrt.

Ich habe 3 * ESP12F und einen minimalen Sketch geflashed der einfach nur 
alle Sekunde ESP.getVcc() aufruft und ausgibt. Dabei kamen folgende 
Werte heraus: 3.54V, 3.5V und 3.47V. Egal welchen der beiden LiFePo 
Akkus ich angeschlossen hatte. Das passt in etwas zu dem was Amiga auch 
gemessen hat. Somit liegt tomase wohl richtig dass die Spannung wohl 
hoeher liegt und mein einfaches DMM wohl Mist misst.

Jetzt wollte ich aber noch wissen warum einmal 3.5V und einmal 3.2V vom 
ESP geliefert werden. Dazu habe ich einen weiteren ESP12F ebenso mit 
einem BME280 in Betrieb genommen weil ich vermutete dass es vielleicht 
am DHT22 liegt. Aber Pustekuchen: Auch mit dem BME280 liefert der zweite 
ESP 3.5V ... der andere 3.2V.

Die Akkus sind nahezu identisch, die ESPs messen nahezu gleich den Vcc, 
beide ESPs nutze I2C zum Lesen eines BME280 - und trotzdem gibt es zwei 
verschiedene Spannungen. Das verstehe ich nicht.

Es gibt noch einen Unterschied - es sind zwei verschiedene Breadboards 
auf denen die HW gesteckt ist. Kann es daran liegen?

von Stefan F. (Gast)


Lesenswert?

Framp L. schrieb:
> Hat jemand eine Idee wie das zu erklaeren ist?

Der ADC ist nur ein grobes Schätzeisen.

Laut Datenblatt sind bis zu 20% Abweichung normal. Die Info haben die 
aber gut versteckt. Dazu kommt noch die Ungenauigkeit des 
Spannungsteilers vor dem ADC.

Wenn die WLAN während der Messung deaktivierst, bekommst du bessere 
Ergebnisse, aber dafür musst du 2x rebooten.

von Michael U. (amiga)


Lesenswert?

Hallo,

Stefan ⛄ F. schrieb:
> Laut Datenblatt sind bis zu 20% Abweichung normal. Die Info haben die
> aber gut versteckt. Dazu kommt noch die Ungenauigkeit des
> Spannungsteilers vor dem ADC.
Wenn er die interne Funktion benutzt gibt es keinen Spannungsteiler, der 
ADC-Eingang ist dann abgeschaltet.

> Wenn die WLAN während der Messung deaktivierst, bekommst du bessere
> Ergebnisse, aber dafür musst du 2x rebooten.
Kenne ich bisher nur vom ESP32 und da auch nur bei dem einem ADC, der 
andere stört sich da nicht merklich.

Gruß aus Berlin
Michael

von Framp L. (framp)


Lesenswert?

Michael U. schrieb:
> Wenn er die interne Funktion benutzt gibt es keinen Spannungsteiler,

Sorry, das hatte ich vergessen zu erwaehnen. Ja, ich benutze 
ADC_MODE(ADC_VCC), also die interne Funktion.

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.