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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.