Forum: Mikrocontroller und Digitale Elektronik D/A Wandler ESP32S3 gibt unterschiedliche Werte


von Tobias L. (tobias_l477)


Lesenswert?

Hallo zusammen,
für mein privates Projekt verwende ich einen ESP32 (S3) Mikrocontroller 
mit Arduino und ich möchte mit Hilfe eines Spannungsteilers und eines 
D/A Wandlers einen dynamischen Widerstand berechen...

Die Spannung lese ich bei Arduino mit Hilfe der Funktion 
analogReadMilliVolts zyklisch ein und lasse sie mir per Bluetooth 
ausprinten....

Der ESP32 verträgt allgemein nur eine Inputspannung von 3,3V

Wenn ich jetzt den entsprechen Pin "offen" ohne definierten Pegel in der 
Luft hängen lasse bekomme ich einen konstant einen Wert von 3152-> 3,15 
Volt...lege ich den Pin auf den 3,3V ausgang vom ESP32S3 Board lese ich 
den selben Wert ein...
Soweit so gut (oder schlecht) ich lese also bei soll 3,3V eine Spanung 
von 3,15V ein....


Wenn ich jetzt die exakt identische Software auf einen 2ten ESP32 S3 
flashe  lese ich bei dem eine Spannung von 3173-> 3,17 Volt aus.... 
ebenso egal ob frei hängend oder auf 3,3Volt gelegt..


Meine Fragen:
1) hat Jemand anders schon sowas beobachtet?

2) hat jemand eine Idee wie ich diesen dynamischen OFfset justieren kann
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Die ADC des ESP sind an den Grenzwerten ungenau.
https://docs.espressif.com/projects/esp-idf/en/v6.0.1/esp32/api-reference/peripherals/adc/index.html

Und offene Pins sind nur Antennen. Macht eigentlich keinen Sinn darüber 
zu reden.

Ich rate zu einem verlässlichen externen ADC.
: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Tobias L. schrieb:
> Meine Fragen:
>
> hat Jemand anders schon sowas beobachtet?

Wo kommt da jetzt irgend ein D/A-Wandler ins Spiel?
von Rainer W. (rawi)


Lesenswert?

Tobias L. schrieb:
> Meine Fragen
> ...

Wo kommt da jetzt irgend ein D/A-Wandler ins Spiel?
von Mobile (mobileteser)


Lesenswert?

Ich bin mir sicher, dass bei 3,3V Versorgung der ADC nicht soweit messen 
kann. Der wird irgendwo bei 2V sein Maximum haben.
von Martin P. (billx)


Lesenswert?

Beim esp8266 musste man wenn ich mich richtig erinnere beim ADC auch 
noch weitere Dinge beachten.... Weil der ADC dort auch fürs WiFi genutzt 
wird.... Ob das natürlich beim esp32 auch noch so ist? Sagt das 
Datenblatt dazu irgendwas?
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Martin P. schrieb:
> Ob das natürlich beim esp32 auch noch so ist? Sagt das
> Datenblatt dazu irgendwas?

Natürlich!
 Einer der beiden ADCs ist für WiFi zuständig.
von Rainer W. (rawi)


Lesenswert?

Leute - Tobias fragt nach einem D/A Wandler.

Tobias L. schrieb:
> ... ich möchte mit Hilfe eines Spannungsteilers und eines D/A Wandlers

Tobias, vielleicht zeigst du einmal einem Schaltplan, von dem, was du da 
vor hast.
von Tobias L. (tobias_l477)


Lesenswert?

Ich meinte natürlich eine A/D wandlung...sollte aus dem kontext klar 
sein.
von Tobias L. (tobias_l477)


Lesenswert?

Die versorgung liegt bei 5v maximal inout voltage ist 3.3v
von Tobias L. (tobias_l477)


Lesenswert?

Laut dem bspcode im arduino nicht..
Ich bin aber offen für tips
von Tobias L. (tobias_l477)


Lesenswert?

Ich möchte an mehreren pins
über einen spannungsteiler temperatursensoren auslesen..

Ich kann verstehen dass mehr infos gut fürs Verständnis sind, aber 
sollten doch für das eigentliche problem egal sein. Oder?

Ich betreibe den esp32s3 mit 5v.
Ich lese einen analog input auf 3.3V
 Und lese bei einem esp32s3 3.15V konstant und beim anderen konstant 
3.17V...

Das heisst also dass ich bei jedem esp32s3 eine unterschiedliche 
Abweichung habe.

Was dahinter hängt ist doch erstmal egal .
von Gerald B. (gerald_b)


Lesenswert?

AD-Wandler können ziemlich tricky sein. Früher, als es nur 
Mikroprozessoren und dedizierte AD-Wandler ICs gab, oder man gar einen 
AD-Wandler als "IC-Grab" aus Operationsvertsärkern und digital ICs 
aufbaute, wurde auf derartige Feinheiten und Unzulänglichkeiten mehr 
eingegangen.
Der Analogeingang kann recht hochohmig sein, allerdings beim Sampeln 
impulsweise Strom ziehen. Da nutzt es dir herzlich wenig, wenn er 
gemittelt 1µA zieht, für eine ms aber das Tausendfache. Ein 
(hochwertiger) Integrationskondensator ist im Zweifelsfall immer eine 
gute Idee. Der "beruhigt" ebenfalls den Eingang. natürlich kann man 3 
Cent sparen und per Software aus 50 Werten das statistische Mittel 
bilden. Sind vielleicht 5 Zeilen im Code, aber man sollte abschätzen 
können, woher ein Problem stammt und wie man dem (möglichst schon 
präventiv) begegnen kann.
von Tobias L. (tobias_l477)


Angehängte Dateien:

Lesenswert?

Rainer W. schrieb:
> Leute - Tobias fragt nach einem D/A Wandler.
>
> Tobias L. schrieb:
>> ... ich möchte mit Hilfe eines Spannungsteilers und eines D/A Wandlers
>
> Tobias, vielleicht zeigst du einmal einem Schaltplan, von dem, was du da
> vor hast.

Sorry meine letzte Antwort war auf den post bezogen..

Der schaltplan drum rum sollte doch eigentlich egal sein...

P.s. ich arbeite sowohl mit dem esp32 als auch mit dem esp32s3
von Helmut -. (dc3yc)


Lesenswert?

Und du meinst, jeder unterschiedliche Chip hat die gleiche 
Referenzspannung für den ADC? Träum weiter.
von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Ich habe das doch verlinkt!
> By design, Vref is set to 1100 mV. However,
> due to manufacturing variations, the actual
> value may range between 1000 mV and 1200 mV
> depending on the chip.

Sogar eine Kalibrieranleitung findet sich da.
von Nemopuk (nemopuk)



Lesenswert?

Ich empfehle, zwischen
- dem ESP32S3 Chip
- einem ESP32S3 Modul und
- einem Board mit ESP32S3 Chip
- einem Board mit ESP32S3 Modul
- und welchem Board konkret
zu unterscheiden.

Der ESP32S3 Chip kann nicht mir 5V versorgt werden. Seine normale 
Versorgungsspannung beträgt 3,3V. Board enthalten üblicherweise einen 
LDO Spannungsregler.

Der ADC hat 12 Bit und misst 0 bis 1,1 Volt. Der Wert 4095 entspricht 
dann 1,1 Volt.

Warum denkst du, dass der Wert 3152 der Spannung 3,15 Volt entspricht?

Auf Boards sind eventuell Spannungsteiler vorgeschaltet, um den 
Messbereich zu erweitern. Das muss jedoch nicht zwingend 3,3V sein. 
Kommt aufs konkrete Board an. Ich habe mal einen Schaltplan aus dem Netz 
angehängt, dort ist KEIN Spannungsteiler eingezeichnet. Wenn dein Board 
ebenfalls keinen Spannungsteiler hat, dann bedeutet der Messwert 3152 
nicht 3,15V sondern 0,89V.

https://documentation.espressif.com/esp32-s3_datasheet_en.html#electrical_characteristics

https://documentation.espressif.com/esp32-s3_technical_reference_manual_en.pdf 
Kapitel 39.3.5
: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Nemopuk schrieb:
> Wenn dein Board ebenfalls keinen Spannungsteiler hat, dann bedeutet der
> Messwert 3152 nicht 3,15V sondern 0,89V.

Bei einer Funktion, die

Tobias L. schrieb:
> Funktion analogReadMilliVolts

heißt, wäre es allerdings naheliegend, dass die einen Wert skaliert in 
Millivolt zurück gibt - wie auch immer diese Funktion den Wert der 
Referenzspannung von dem Exemplar erfährt bzw. erfahren soll.

Was sagt die Doku der Funktion zu dem Thema?
: Bearbeitet durch User
von Harry S. (Firma: SD) (harry2025)


Lesenswert?

Tobias L. schrieb:
> Ich möchte an mehreren pins
> ...
>
> Das heisst also dass ich bei jedem esp32s3 eine unterschiedliche
> Abweichung habe.
>
> ...

Das ist so. Habe mit ChatgPT ein Projekt entwickelt, bei dem Ströme über 
ADCs (vorherige Unwandlung in Spannungen) gemessen werden.
Das Programm habe ich kalibriert.

Nach Flashen eines weiteren ESP32 Boards stimmten die kalibrierten Werte 
überhaupt nicht mehr.

Für ChatGPT war das logisch ... hat irgendeine Espressif Doku 
ausgegraben, in der auf den Umstand hingewiesen wird, dass ADCs bei 
jedem ESP32 hardwarespezifisch kalibriert werden müssen.
von Rainer W. (rawi)


Lesenswert?

Tobias L. schrieb:
> Der schaltplan drum rum sollte doch eigentlich egal sein...

Dir ist klar, dass der G266 kein Analogsignal am Ausgang liefert, 
sondern ein binäres, dass immer zwischen H und L hin- und her springt?
Der Ölstand/-temperatur ist im Tastverhältnis kodiert.

Soviel zum Thema "Schaltplan ist egal" ...
: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Tobias L. schrieb:
> hat jemand eine Idee wie ich diesen dynamischen OFfset justieren kann

Warum meinst du, dass das ein Offset ist und kein Skalierungsfaktor?

Dann müsste der Unterschied auch bei 0V Eingangsspannung bestehen. 
Darüber sagst du nichts.

Wie berücksichtigt deine Funktion analogReadMilliVolts() Unterschiede in 
der Referenzspannung des ADC?
von Nemopuk (nemopuk)


Lesenswert?

Ich weiss nicht, ob es bei ESP32 auch so krass ist: der ADC des ESP8266 
durfte Laut einer älteren Version des Datenblattes unter 
Berücksichtigung aller Schwächen bis zu 20% vom richtigen Wert 
abweichen. Gemessen habe ich 10%. Im Internet gibt es irgendo ein 
ausführliches Messprotokoll, wo jemand auf etwa 15% kam, soweit ich mich 
erinnere.
von Richard (user1234567890)


Lesenswert?

von Alexander (alecxs)


Lesenswert?

Martin P. schrieb:
> Beim esp8266 musste man wenn ich mich richtig erinnere beim ADC auch
> noch weitere Dinge beachten

z.B. den Messbereich nur 0 - 1V
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.