ESP8266 analogRead für VCC

OP #5193281
Lesenswert?

Hallo zusammen,
ich versuche gerade mit dem internen AD-Wandler des ESP8266 die interne 
Versorgungsspannung zu lesen.
Ein extern beschaltetes Poti liefert bei
1
ADWert = analogRead(A0);
2
Serial.println(ADWert);
die erwarteten Werte im Bereich 0-1024 (nicht 1023!?!). Ist 1024 (11. 
Bit gesetzt) ein Overflow-Hinweis?
Wie dem auch sei, gemäß der Arduion-Referenz
http://esp8266.github.io/Arduino/versions/2.0.0/doc/reference.html#analog-input
sollte es mit der Angabe ADC_MODE(ADC_VCC); möglich sein, die interne 
Versorgungsspannung zu messen. Dabei erhalte ich aber als Ergebnis nur 
den Wert 65535 (bzw. -1 bei signed int).
Hat das schon mal jemand erfolgreich probiert? Zur Not kommt extern halt 
ein Spannungsteiler 330k/100k dran. Die 10µA machen es auch nicht aus.

tschuessle
Bernhard
OP #5193899
Lesenswert?

habe es nochmal mit einem NodeMCU (Rev.1.2) getestet. Hier ist der 
Analogeingang A0 definitiv unbeschaltet.
Gleiches Ergebnis, bei
analogRead(A0) kommt nur -1, bei
analogRead(1) kommt immer 0, bei
analogRead(A1) kommt ein Compilerfehler....

Arduino-Version 1.6.7, ESP-Board-Version 2.4.0-RC2 (ohne KRACK-Bug).
OP #5194108
Lesenswert?

Ok, mit ESP.getVcc(); geht es.
Allerdings bekomme ich jetzt bei 3,25V Versorgungsspannung Werte von 
2980-3000 zurück. Ich liebe stabile Bibliotheken...

Beim NodeMCU ist auch der "nackte" ADC-Pin rausgeführt. Der Pin ADC_EX 
(J1.1) geht über besagten Spannungsteiler (hier würde ich für einen 
LiIo-Akku eher nochmal 100k in Reihe schalten, damit der Messbereich bis 
4.3V geht). Der Pin nebendran (J1.2) ist direkt mit ADC verbunden (auf 
einigen NodeMCU ist der aber mit RSV beschriftet).
OP #5194784
Lesenswert?

G. H. schrieb:
> nein, der nackte A0 pin ist nicht hinausgeführt !!!!
> Der 100k gegen Masse ist immer dran !!!
Der nackte Pin ist zumindest verfügbar. Wenn ich den 100k-Widerstand 
auslöte ist der komplett offen.
Layout Seite 8, Pinbezeichnung ist RSV, aber eindeutig der 2. Pin am 
ESP-12E:
https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF

Ich nehme mal an, dass der bisher vorhandene 100k gegen Masse die 
interne Messung verfälscht. Mit
1
ADWert=ESP.getVcc();
2
serial.print(ADWert/912.0);
3
serila.println(" Volt");
bekomme ich schonmal einigermassen den mit dem Multimeter gemessenen 
Wert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren