Spannung messen mit dem ESP32

Hallo Gemeinde.
Bin wieder dabei, die Dinge, die ich mit Mega / Uno / Nano schon durch habe, auch am ESP32 mal zu testen. Und bin auch schon wieder an einem Punkt, wo es nicht klappt, wie gedacht. Ich messe Spannung am Pin 34. Die Werte die ich da auslese sollten doch 0-4095 bei 0-3,3 Volt sein, wenn die Betriebsspannung der CPU 3,3 Volt beträgt. Es ging mir nicht um Genauigkeit, sondern nur um klappt / oder nicht. Ich habe als ein Poti zwischen + und - 3,3V und die Mittelanzapfung am Pin 34. Dann habe ich das Poti hochgeschraubt bis ich an der Serialen Ausgabe 4095 bekommen habe. Dann schaue ich aufs Messgerät, mit dem ich die Spannung am Pin 34 im Auge habe und sehe da nicht 3,3 Volt, sondern nur 3,1 Volt. :astonished: Ich habe die Spannung an ESP32 nochmal gemessen, die hat aber 3,3 Volt. Warum bekomme ich dann bei 3,1 Volt schon Vollgas "4095" beim Auslesen am Pin34 ??

Wünsche eine gute Nacht
Franz

Hier ist das Programm. Ich denke da kann man nichts falsch machen :slightly_frowning_face:

int analogwert; // Vollgas ist 4096
void setup()
{
  Serial.begin(115200); //starten des seriellen Monitors
}

void loop() 
{
  analogwert = analogRead(34); // Auslesen Pin. 34
  Serial.println(analogwert);  // Ausgabe des analogen Werts
  delay(2000);
}

Kai Neahnung von ESP aber Vermutung:

Die Referenzspannung könnte wegen der gesamten Umschalt-Mimik geringer als Vcc sein. Siehe adc_vref_to_gpio() zum Nachmessen der Referenzspannung an einem Pin von ADC2.

Hast Du schon mal die eingebaute 1,1V Referenz getestet? Unkalibriert kann die allerdings auch irgendwo zwischen 1,0V und 1,2V liegen.

Vermutlich ist es der Knick bei 3 V: ADC is Non-linear

Danke für die Antworten. Ich dachte, dass ich vielleicht irgendwas nicht weiß, was man beim ESP32 anders machen muss. Wäre ja gut möglich. :slightly_frowning_face: Das mit der eingebauten Referenz schaue ich mir hier noch an, weil das ja mit den 200mV Fehlmessung auf jeden Fall keine Option ist.

Schönen Tag
Franz

Du mußt Dich eben im Meßbereich einschränken, nicht zu nahe am oberen und unteren Ende des Bereichs. Wenn man die dortige Nichtlinearität irgendwie rausrechnen kann, dann müßte das eigentlich schon lange irgendwo im Forum oder Web stehen.

Ja, diesen oberen und Unteren Bereich muss man wohl umgehen. Ich habe die Kurve, die diese Bereiche zeigt schon gefunden, aber ich dachte eigentlich da hat jemand übertrieben. Aber man muss ja nicht in diese Bereiche kommen. Ich kann auch externe ADC´s benutzen, oder nen guten Spannungsteiler nutzen, und, und, und. Im Moment gehts mir nur ums kennen lernen der ESP´s und ihrer Grenzen. Und dass ich weiß, wo man anders arbeiten muss, als mit den Uno´s, Mega´s, Nano´s.

Ich habe jetzt mal 1 Volt damit gemessen. Das Ergebnis ist von 1127 bis 1193!! Also schon eine gewaltige Spanne. Dann habe ich mal die 3,1 Volt für 4095 zugrunde gelegt. Und mit einem Tischrechner einen Mittelwert des Messergbnises von 1 Volt benutzt. Dann kommen rechnerisch 0,87 Volt raus. Mit dem oberen Ergebis der 1 Volt Messung kommt 0,903 Volt raus. Das eine Volt ist mit einem Labornetzteil erzeugt und ein Messgerät parallel zur Kontrolle.

Ich nehme mal einen anderen ESP32 mit USB Versorgung. Mal schauen ob da die Ergebnisse anders sind.

Das deutet auf gewaltigen Brumm auf Deiner Spannungsquelle hin!
Vielleicht wäre ein Scope besser zum Messen der Spannung als ein DVM.

Anzeige Multimeter: 1000.1 mV

Monitor:

1069
1068
1087
1074
1064
1072
1065
1067
1067
1069
1072
1072
1051
1058
1055
1067
1063
1086
1072
1065

Also, Spannung ist sauber. Auch am Oszi ein sauberer Strich mit 3,3 Volt. Dann habe ich trotzdem noch die Versorgung auf ein Labornetzteil gehängt. Aber immer noch die selbe Trifft. Auch die 1 Volt, die ich messe, kommen von einem Labornetzteil. Aber ich gehe jetzt mit der Spannungsmessung mal auf einen anderen ESP32 mit USB Versorgung. Mal schauen was da rauskommt. Ist schon seltsam. :slightly_frowning_face:

Deine Trifft ist nicht soooo weit, wie bei mir. 1051 - 1087, bei mir 1127 bis 1193. Aber jetzt habe ich erst mal Hunger. Dann mache ich das mit dem neuen ESP32 an USB.

Oberlehrer: das schreibt sich "Drift"!!!

Und eine Drift läuft in einer Richtung weg. Sonst ist es Brumm oder Rauschen.

Ja, ändert nur nichts an der Tatsache.

Jetzt habe ich einen anderen ESP32. Am USB angesteckt, also über USB versorgt. Und das eine Volt wieder vom Labornetzteil. Die Werte von 1058 bis max 1159 :astonished: Das ist Sch**** Bei 3,2 Volt war ich bei dem ESP32 auf 4095.
1 Volt von 1058 bis 1159
2 Volt von 2303 bis 2368
3 Volt von 3790 bis 3859
3,1 Volt von 3994 bis 4079
3,2 Volt 4095
Also Spannung messen wohl nur mit einem externen ADC

Wenn ich mich recht entsinne, kann man den ADC konfigurieren. Eventuell versteckt sich da noch Potential.

Wie wäre es, wenn Du die Spannung gleichzeitig mit dem ESP und einem anderen Arduino (Uno, Micro...) mißt? Dann könnte man sehen, ob und wieviel schlechter der ADC des ESP ist.

Naja, ich habe hier einen Uno, den ich aber dafür etwas optimiert habe, die Spannung einigermaßen genau zu messen. Der wäre da schon sehr im Vorteil. Über AREF mit einer Zehnerdiode auf 4,096 Volt Messspannung. Da könnte ich aber genauso auch ein Messgerät als Vergleich heranziehen. Ich schätze mal du meinst z.B. einen Uno genauso wie beim ESP32 ohne spezielle Änderungen. Einfach nur ADC Uno, vergleichen mit ADC ESP32 ? Da war der UNO aber wesentlich besser, wenn ich mich da recht erinnere.

Ich dachte auch, da schon mal ein Programm am ESPxx mit mehr Aufwand zur Spannungsmessung gesehen zu haben. :roll_eyes:

Nicht nur den ADC, auch die zu messende Spannung. Ich habe da immer noch so einen Verdacht wegen der schwankenden Werte.

Ideal wäre natürlich ein 3,3V (Pro Mini...) Controller, damit beide Controller auch noch die Identische Versorgunsspannung benutzen.

Welcher Verdacht soll das bitte sein? Ich habe doch schon einen anderen ESP32 NUR AM USB mit etwa genauso großer Abweichnung. Und die Spannung die ich da messe kommt von einem Labornetzteil. ALSO NICHTS SEBSTGEBASTELTES. Und was das für Netzteile sind, das denke ich ist gut zu sehen auf meiner HP zu dem Thema.

Alles was den Meßaufbau von außen beeinflussen kann. Es gibt da so viele Möglichkeiten, daß man am besten einen redundanten Aufbau benutzt. Damit kann man zwar nicht die Quelle einer Störung lokalisieren, aber doch deren Auswirkung.