Hallo, ich wollte mit dem ESP32 ADC ein Spannungssignal messen. Das hat auch geklappt, als ich für die Schaltung (RC-Glied) die maximale Spannung verwendet hab. Weil diese aber zu groß für den ADC war (3.3 V, er misst nur bis 2.5 V) wollte ich mit dem DAC ein Spannungssignal erzeugen das bei 2.5 V liegt. Das hat auch geklappt (hab's mit dem Multimeter nachgemessen), nur wenn ich mit dem ADC messe kommen auf einmal seltsame Werte heraus. Die Spannung liegt auf einmal immer nur bei ~ 1.8 V (bzw. bei ~2990 in Bits, wobei die Auflösung auf 2¹² gestellt ist). Hat jemand eine Idee woran das liegt? Danke und Grüße
Der ESP32 misst doch bis 3,3V soweit ich weiß. Das würde passen, 2990 würde dann 2,41V entsprechen. Ich meine mich zu erinnern das der ADC nicht so ganz linear war und etwas unter dem eigentlichen Wert lag. Demnach wäre der gemessene Wert etwas größer als 2,41V. Mein alter ESP hatte bei ca. 3,25V seinen Maximalwert. Eine Fehlerquelle könnte aber auch die Ausgangsimpedanz des DACs sein, sofern er intern keinen Buffer hat.
Jonas B. schrieb: > Hat jemand eine Idee woran das liegt? Ich habe noch etwas zur Vertiefung zum ADC. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html#overview Der eigentliche ADC misst nur von 0 V bis 1,1 V. Durch eine äußere Beschaltung mit einem Spannungsteiler kann er auch 3,3 V messen. Es gibt sogar 2 ADC. Der zweite ADC wird allerdings auch beim WiFi vom System mitbenutzt. Also, so bald WiFi aktiv ist kann der ADC2 nicht genutzt werden. Es gibt dann noch etwas zur Rauschminimierung und zur Kalibration. mfg Klaus
:
Bearbeitet durch User
Jonas B. schrieb: > Hat jemand eine Idee woran das liegt? Der ADC ist ein grobes Schätzeisen - Er hat einen DC Offset um 150mV. - Die Referenzspannung kann bis 10% vom Ideal (1,1V) abweichen. - Er misst nicht linear - Er lässt sich vom HF Signal der WiFi Schnitstelle beeinflussen Alles zusammen führt dazu, dass Abweichungen bis 20% völlig normal sind. Und wenn er gerade sendet, dann noch mehr. > Die Spannung liegt auf einmal immer nur bei ~ 1.8 V (bzw. > bei ~2990 in Bits, wobei die Auflösung auf 2¹² gestellt ist). Hier würde ich erst mal eine andere Signalquelle an den ADC anschließen, zum Beispiel ein 10kΩ Poti. Und dann schauen, ob du dessen Ausgangsspannung halbwegs korrekt messen kannst. Wenn nicht, liegt wohl ein Softwarefehler vor. Und wenn es geht, dann hast du wohl ein Problem mit deinem DAC oder den Verbindungen dazwischen.
Stefan ⛄ F. schrieb: > Und dann schauen, ob du dessen Ausgangsspannung halbwegs korrekt messen > kannst. Wenn nicht, liegt wohl ein Softwarefehler vor. ... oder es fehlt ein Kondensator.
Hi, ich hab mich auch mal gefragt wie man genauer messen kann ohne was an der Außenbeschaltung zu machen. Somit hab ich mir aus dem Internet ein Script zusammen "geklaut" und ein bisschen erweitert. Da sind fast alle ADC Einstellungsmöglichkeiten aufgeführt. ich hatte das mal ein Tag laufen lassen und mir min/max/ist ausgegeben. Jeh nachdem was ich gemessen hab, war teilweise ein drift von mehr als 200 dabei. Wobei ich versucht hab alles Temperatur stabil zu halten. Verglichen habe ich normalen AnalogRead mit der "bessere Mess" Funktion ohne was an der Hardware zu ändern. Der drift ging durch die Funktion zurück. Evtl hilft es dir ja, sonst scroll weiter ;) Gruß
tester schrieb: > ich hatte das mal ein Tag laufen lassen und mir min/max/ist ausgegeben. > Jeh nachdem was ich gemessen hab, war teilweise ein drift von mehr als > 200 dabei. Oh je! Wenn das eine echte Drift ist, dann muß man den zu erwartenden Meßfehlerbereich deutlich erhöhen. Die Ungenauigkeit läge bei 5%. Wenn man einen Mittelwert hat, dann liegt der Toleranzbereich bei +/- 2,5%. Frage: Du hast am ADC-Input Spannungen vorgegeben? Das waren Gleichspannungen die Du mit einem Meßgerät ausgemessen hast? Ein Rauschen war da nicht überlagert? Gemäß espressif, Minimizing Noise, liegt das Rauschen bei grob +/- 20 Bit, ohne 100 nF. Mit 100 nF geht es herunter auf grob +/- 5 Bit. Das schränkt aber die Bandbreite ein, je nach Innenwiderstand der Quelle. Hier ist aber nach meiner Ansicht der Spannungsteiler, mit dem erst Messungen von 3,3 V möglich sind, noch berücksichtigt. https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html#minimizing-noise Soll dieser Ausdruck die Messung linearisieren? Woher kommt diese Info?
1 | return -0.000000000000016 * pow(reading, 4) + 0.000000000118171 * pow(reading, 3) - 0.000000301211691 * pow(reading, 2) + 0.001109019271794 * reading + 0.034143524634089; |
mfg klaus
Hallo, hab in vielen anderen Foren gelesen das der ADC wohl misst sein sollte. Dann bin ich auf den Github Post gestoßen. https://github.com/G6EJD/ESP32-ADC-Accuracy-Improvement-function getestet hatte ich ein Drucksensor der eine gleichbleibende Druck bekommen hat und ein Poti bei beiden das verhalten. Drucksensor . 5V GND PIN34 Poti 3.3V PIN34 GND die Drucksensor daten hab ich sogar gefunden. Alle 10 Sekunden wurde gemessen. Klaus R. schrieb: > Frage: Du hast am ADC-Input Spannungen vorgegeben? Das waren > Gleichspannungen die Du mit einem Meßgerät ausgemessen hast? Ein > Rauschen war da nicht überlagert? Ja einmal durch ein Drucksensor und einmal ein Poti. Jop Gleichspannungen. Hab dir oben geschrieben wie ich das angeklemmt hab. Die Spannungen waren vom esp32 Diot Board. Hab auch irgendwo gelesen, dass wenn man ADC2 nur benutzen soll wenn Wifi deativiert ist. Drucksensor: https://de.rs-online.com/web/p/entwicklungstools-sensorik/1887119/?relevancy-data=7365617263685F636173636164655F6F726465723D31267365617263685F696E746572666163655F6E616D653D4931384E53656172636847656E65726963267365617263685F6C616E67756167655F757365643D6465267365617263685F6D617463685F6D6F64653D6D61746368616C6C7061727469616C267365617263685F7061747465726E5F6D6174636865643D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B24267365617263685F7061747465726E5F6F726465723D313333267365617263685F73745F6E6F726D616C697365643D59267365617263685F726573706F6E73655F616374696F6E3D267365617263685F747970653D4B4559574F52445F53494E474C455F414C5048415F4E554D45524943267365617263685F7370656C6C5F636F72726563745F6170706C6965643D59267365617263685F77696C645F63617264696E675F6D6F64653D4E4F4E45267365617263685F6B6579776F72643D465352343032267365617263685F6B6579776F72645F6170703D465352343032267365617263685F636F6E6669673D3026&searchHistory=%7B%22enabled%22%3Atrue%7D
ups, in der Daten.txt Zeit : ADC-Value : Ist-Value : min-Value : max-Value : difference
sry noch zu früh am morgen... der zweite wert ist nicht direkt der ADC Value .. guckt einfach im Code der weiter oben gepostet wurde :)
tester schrieb: > getestet hatte ich ein Drucksensor der eine gleichbleibende Druck > bekommen hat und ein Poti bei beiden das verhalten. Kannst du bitte mal einen klaren Gedanken fassen und den dann auch unmissverständlich kommunizieren? Mit ist jetzt weder klar, was du gemacht hast, noch was dabei heraus gekommen ist. Es kann ja wohl nicht so schwer sein, einfach mal ein Poti anschließen und dann die Messwerte für ein paar Einstellungen zu notieren: Linker Anschlag Spannung=0V, Messwert= Mitte Spannung=1,6V, Messwert= Rechter Anschlag Spannung=3,3V, Messwert=
:D okay. esp32 Diot Board Sensor: link oben Porti: 10k Spannungen vom Board genommen. 1. Gewichtsstück auf Sensor (5V Pin34 GND) gelegt 10 Stunden lang gemessen -> drift festgestellt. 2. Poti genommen (3.3V Pin34 GND) auf irgendeine Stellung eingestellt und 10 Stunden lang gemessen. Dift festgestellt. Weiter oben ist der Code. Sry für den ganzn Quatsch :D Gruß
Hallo tester, ich habe dich mit Jonas verwechselt. Was den Drift angeht: Damit musst du leben. Der interne ADC des ESP ist halt kein Präzisions-Messgerät. Hallo Jonas, Mache bitte drei Messungen machen mit ganz bestimmten Spannungen machen. Nur dann kann man prüfen, ob das Ergebnis korrekt ist. Wenn es nicht korrekt ist, dann geben die konkreten Zahlen mit Glück sogar einen Hinweis zur Fehlerursache. Linker Anschlag Spannung=0V, Messwert= Mitte Spannung=1,6V, Messwert= Rechter Anschlag Spannung=3,3V, Messwert=
Stefan ⛄ F. schrieb: > Wenn du irgendwas misst, bekommt du irgendwelche Messwerte. Da kann man > kaum klare Aussagen darüber treffen, ob die Messwerte nun richtig oder > falsch sind. Das mir auch klar :D Stefan ⛄ F. schrieb: > Also nochmal: > > Linker Anschlag Spannung=0V, Messwert= > Mitte Spannung=1,6V, Messwert= > Rechter Anschlag Spannung=3,3V, Messwert= Das war für mich irrelevant. Ich wollte nur eine stabile Messung über Zeit. Sry das das alles für Verwirrung gesorgt hat. War doch wohl nicht passend zum Thema. Mir ist das aufgefallen weil ich Gehäuse Verformungen über 3 Monate messen wollte (bzw. bleibt der Aufbau druck stabil) oder sind die Gehäusewände zu dünn gewählt. Dabei ist mir das driften aufgefallen und hab mir ein externen ADC besorgt. PEACE
> Mache bitte drei Messungen machen mit ganz bestimmten Spannungen machen.
Und vergiss nicht, es zu machen :-)
Was war da los?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.