In einem früheren Post hatte ich das ADDA-Subsystem des ESP32 untersucht und konnte nur wenig überzeugende Resultate präsentieren.
Ich habe die Messungen an einem neuen ESP32_Core_board v2 wiederholt. Die Resultate waren vergleichbar zur letzten Untersuchung.

Im ESP32 Forum habe ich einen Hinweise zum Thema gefunden (https://www.esp32.com/viewtopic.php?f=2&t=4784&hilit=adc+accuracy) und eine Polynomapproximation der Kennlinie auf Github.
Diese Funktion habe ich in meinen Test eingebaut und die folgenden Ergebnisse erzielt:

Schon in der Gesamtcharakteristik ist eine verbleibende Nichtlinearität zu erkennen, die im Detailbild noch deutlicher wird. Die Trendlinie zeigt eine Korrekturmöglichkeit am Gain. Es bleiben aber die nichtlineare Abweichungen , die allenfalls durch ein angepasstes Polynom reduziert werden könnten.

Eine Alternative ist ein externer ADC. Ich verwende einen 12-bit ADC ADS1015, den es als Breakout Board von Adafruit u.a. gibt.

Das Testprogramm ESP32_DAAD_ext_Test.ino ist auf Github abgelegt.
Die Resultate sehen folgendermassen aus:

Erwartungsgemäss bekommen wir eine lineare Kennlinie, die aber bei näherem Hinsehen mit einem Offset und einem Gain behaftet ist, wie die folgende Darstellung besser zeigt.

Diese Eigenschaften lassen sich kalkulatorisch ausgleichen und wir erhalten schliesslich Abweichungen im Bereich weniger mV.

Pingback: Arduino Portenta H7 – ckArduino