Ich mache zu dem Thema am besten mal einen neuen Thread auf anstatt den alten mit ungenauem Titel weiterzuverwenden. Eigentlich ist der ESP32 ja ein toller Controller, aber nach einigem Lesen stellt man fest, daß die Chinesen zwar laut Datenblatt gerne gekonnt hätten, aber es dann stellenweise leider doch nicht so gut konnten. Bestes Beispiel ist der ADC, der zwar viele Kanäle und 12 Bit hat, dafür aber mit großen Nichtlinearitäten und hohem Offsetfehler glänzt, zudem ist er sehr viel langsamer als im Datenblatt angegeben. Ich würde trotzdem gerne eine MSR-Aufgabe mit diesem Schaltkreis probieren, die WLAN-Konnektivität ist der ausschlaggebende Punkt, aber ich brauche trotzdem einen einsetzbaren ADC. Daher die Frage, wie holt man zumindest in dem Messbereich, in dem der ADC des EPS32 ausreichend linear arbeitet, das beste Ergebnis heraus? Wer hat Erfahrungen mit dem ADC, was machen machen sollte und was besser nicht bzw. was hat keinen Sinn? Die Alternative wäre sicherlich ein externer 8fach 12/16Bit ADC, der sich über SPI oder I2C anbinden lässt, aber habe ich nicht da, kostet Geld und ich wüsste auch erstmal keinen, bzw. nur 4fach gibt's bei der Arduino-Fraktion gute Lösungsansätze. Aber dann brauche ich auch keinen ESP32, dann kann ich die eigentliche Regelaufgabe auch mit einem AVR machen und zur Kommunikation den einfacheren ESP8266 verwenden.
Ben B. schrieb: > dafür aber mit großen Nichtlinearitäten und hohem Offsetfehler > glänzt Das kann auch von der externen Beschaltung abhängen. Die Referenz sollte nicht rauschen, die Versorgung bei Last nicht einbrechen, ... Und sonst würde ich die Fehler versuchen herauszukalibrieren. Kostet nichts und geht schön in Software. Ben B. schrieb: > Die Alternative wäre sicherlich ein externer 8fach 12/16Bit ADC, der > sich über SPI oder I2C anbinden lässt, aber habe ich nicht da, kostet > Geld und ich wüsste auch erstmal keinen Also SPI ADCs gibt es sehr viele auch mit vielen Kanälen. https://www.mouser.de/c/semiconductors/data-converter-ics/analog-to-digital-converters-adc/?interface%20type=3-Wire%2C%20QSPI%2C%20SPI~~I2C%7C~SPI&number%20of%20channels=4%20Channel%2F8%20Channel%7C~8%20Channel~~8%20Channel%2F16%20Channel%7C~10%20Channel%7C~12%20Channel~~16%20Channel&resolution=16%20bit&instock=y&rp=semiconductors%2Fdata-converter-ics%2Fanalog-to-digital-converters-adc%7C~Number%20of%20Channels%7C~Interface%20Type
hattest Du nicht schon die Lösung? eine Mapping Tabelle
So unintelligent, wie es klingt ist es nicht, wenn die ADC über ein kleines Binärprogramm (in Assembler geschrieben) die Werte einlesen würden. (Hobby)Theoretisch bringt das was, praktisch ist es vergeudete Lebenszeit. Wenn es noch viel langsamer sein darf, wäre "Oversampling" beim Einlesen ein Methode. Hierzu gibt man zusätzliche bekannte modulierte kleine Störspannungen auf den Eingang und rechnet das korrigierend heraus.
Ben B. schrieb: > Die Alternative wäre sicherlich ein externer 8fach 12/16Bit ADC, der > sich über SPI oder I2C anbinden lässt, aber habe ich nicht da, kostet > Geld und ich wüsste auch erstmal keinen https://www.microchip.com/en-us/product/mcp3208 Wird dich auch nicht arm machen, und der funktioniert. fchk
Ben B. schrieb: > Ich würde trotzdem gerne eine MSR-Aufgabe mit diesem Schaltkreis > probieren, die WLAN-Konnektivität ist der ausschlaggebende Punkt, aber > ich brauche trotzdem einen einsetzbaren ADC. Was ist denn die Aufgabe? Ich vermute das für deine Aufgabe der ESP schon ausreichend gut genug ist und falls nicht, eine Kalibrierung in Software ausreichend ist.
Danke euch allen und danke für die Links, da habe ich erstmal was zum Lesen. Oversampling wäre das einzige, was mir bislang brauchbar erschien. Die aktive Einkopplung einer Störspannung kann man sich beim ESP32 sparen, das macht der mit aktiviertem WiFi ganz alleine. Ich wollte erst einmal ein wenig mit dem Ding herumprobieren, evtl. mal einen Solar-MPP-Tracker damit bauen. Wenn er das kann, dann reicht er für alles andere auch.
Ben B. schrieb: > Oversampling wäre das einzige, was mir bislang brauchbar erschien. Damit kannst du die Kennlinie nicht linearisieren. Ben B. schrieb: > das macht der mit aktiviertem WiFi ganz alleine. Hat er nicht 2 ADC? Von denen einer viel empfindlicher auf BT/Wlan Gezappel reagiert als der andere....
Linear sollte er im Bereich 0,2..2,5V einigermaßen sein, der Offsetfehler soll recht groß sein und die Exemplarstreuung ist hoch... Bei aktivem WiFi braucht der ESP den ADC2 selbst, man kann daher sowieso nur ADC1 benutzen.
Solange WLAN aktiv ist, bleiben dir von den vielen Bits des ADC nicht einmal 8 Bits übrig. Der größte Knackpunkt ist die Nähe des zum RF Schaltkreis. Die Naturgesetze gelten auch für Espressif. Auch ich empfehle dir die Nutzung eines externen ADC. Mit dem MCP3208 bin ich sehr gut zurecht gekommen. Abstand zum ESP Modul, eine gut gefilterte Stromversorgung, niederohmige Widerstände und eine externe Antenne können hilfreich sein.
> Solange WLAN aktiv ist, bleiben dir von den > vielen Bits des ADC nicht einmal 8 Bits übrig. Mich würde interessieren ob das auch noch gilt wenn ich 64 oder 128 ADC-Messungen zusammenaddiere und die unteren 6/7 Bits vom Ergebnis wegschmeiße. Wie genau ist der Teil, der dann noch stehenbleibt?
Ben B. schrieb: > Mich würde interessieren ob das auch noch gilt wenn ich 64 oder 128 > ADC-Messungen zusammenaddiere und die unteren 6/7 Bits vom Ergebnis > wegschmeiße. Wie genau ist der Teil, der dann noch stehenbleibt? Das wirst du im Einzelfall durchprobieren müssen. Bedenke, dass die Aktivität im WLAN kaum vorhersehbar ist und ganz andere Störungen verursacht, als allgemeines Rauschen.
Yep, sehe das schon kommen... aber wenns schiefgeht kann ich die Platine mit dem ESP32 immer noch wieder runternehmen und stattdessen eine mit AVR oder externen ADCs draufpacken, dann würde die Schaltung immerhin trotzdem funktionieren. Was ich mit dem ESP32-Board mal testen werde: 47k/47k Spannungsteiler mit 3,3V an den ADC-Eingang, mal mit und mal ohne Abblock-C, WiFi im Access-Point Mode (dann hat man alle 100ms schicke Beacons) und mal schauen was passiert, evtl. ein kurzes Script drauf was den Mittelwert über viele Messungen und die maximalen Abweichungen speichert. Für den "professionellen Einsatz" habe ich mich schon damit abgefunden, daß die internen ADCs nicht zu gebrauchen sind und man zwingend was externes braucht. Schade, macht solche Projekte dann wieder ein gutes Stück teurer.
Ben B. schrieb: > 47k/47k Spannungsteiler Zu hochohmig, da streut dir das Funksignal stark rein. Gehe auf 2,2 kΩ runter oder schalte einen Kondensator parallel zum "unteren" Widerstand, um HF Anteile kurz zu schließen. > mal mit und mal ohne Abblock-C Meinst du damit einen Abblock-Kondensator an der Stromversorgung? Auf den sollte man nie verzichten. Typischerweise 100 bis 220 µF an VCC/GND zusätzlich zu den kleineren Kondensatoren, die sich bereits unter dem Abschirmblech befinden.
>> 47k/47k Spannungsteiler > Zu hochohmig Ich weiß, absichtlich zu hochohmig. Ich versuche es eigentlich zu vermeiden, mehr als 0,5 oder 0,1mA durch solche Spannungsregler zu jagen - ich will einfach sehen wie schlecht das Ergebnis wirklich wird. Praktisch nehme ich für sowas gerne 10k als unteren Spannungsteilerwiderstand, oder 4,7k wenn's sein muss, aber das ist dann echt schon viel Strom durch das Ding. Normalerweise wird das Ergebnis eines (10 Bit) AVR-ADCs mit 10k/10nF schon sehr gut und stabil. > Meinst du damit einen Abblock-Kondensator an der Stromversorgung? Nein, daß man den nicht weglassen darf, ist mir klar. Ich meinte den Kondensator parallel zum unteren Spannungsteilerwiderstand, mit dem man sonst versucht, ein stabileres Signal hinzukriegen. Espressif selbst hätte da gerne satte 100nF an ADC-Pins, aber wenn man etwas mehr Streuung für Oversampling möchte, dann interessiert mich, in welchen Bereichen man damit arbeiten kann.
˙ɟ uɐɟǝʇs schrieb: > Solange WLAN aktiv ist, bleiben dir von den vielen Bits des ADC nicht > einmal 8 Bits übrig. Was verstehst du unter "WLAN aktiv"? Solange gerade nicht gesendet wird, kann sooh viel schlimmes nicht passieren. Ansonsten ist es vielleicht sinnvoll, ADC- und WLAN-Aktivität zeitlich aufeinander abzustimmen.
Ben B. schrieb: > wenn man etwas mehr Streuung für Oversampling möchte, > dann interessiert mich, in welchen Bereichen man damit arbeiten kann. Dabei will man das Eigen-Rauschen des ADC nutzen, die zu messende Spannung muss stabil sein.
Rainer W. schrieb: > Was verstehst du unter "WLAN aktiv"? > Solange gerade nicht gesendet wird, kann sooh viel schlimmes nicht > passieren. Genau. Wenn WLAN aktiv ist, wird ab und zu (typisch mehrmals pro Sekunde) etwas gesendet, um die Verbindung aufrecht zu erhalten. > Ansonsten ist es vielleicht sinnvoll, ADC- und WLAN-Aktivität > zeitlich aufeinander abzustimmen. Das hast du als Anwendungsentwickler nicht unter Kontrolle. Du müsstest die WLAN Schnittstelle aus schalten, damit sie inaktiv ist.
> Ansonsten ist es vielleicht sinnvoll, ADC- und WLAN-Aktivität > zeitlich aufeinander abzustimmen. Keine Chance, man weiß ja nicht wann über die WLAN-Verbindung Daten hereinkommen und ich weiß nicht ob der IC sowas kann wie RX only und dann später kein TX mehr nachdem man die Antwort gesendet hat. Kein Plan, ob man das synchronisiert bekommt, selbst bei nur RX müsste man ja auch ein Ack senden, nachdem man einen Datenframe empfangen hat. > Dabei will man das Eigen-Rauschen des ADC nutzen, > die zu messende Spannung muss stabil sein. Nein. Der ADC des AVR z.B. ist in sich so stabil, daß das eigene Rauschen dafür nicht reicht. Man kann das Oversampling ja auch benutzen, um einem ADC zu mehr Auflösung zu verhelfen - dazu pro zusätzlichem Bit die Samples vervierfachen, alles addieren und das Ergebnis halbieren. Wenn das Rauschen zu gering ist, entstehen Treppeneffekte und dann muss man ein zusätzliches Störsignal in die Messgröße oder in die Referenzspannung einkoppeln. Mich interessiert im Moment, ob man das Ergebnis damit einfach nur stabil und ausreichend genau bekommt, wenn man z.B. 128 Messungen addiert, aber keine zusätzlichen Bits nutzt. 12 Bit Auflösung würden mir eigentlich reichen, aber Auflösung alleine bringt genau gar nichts wenn die Genauigkeit für'n Arsch ist und sich auch nicht durch eine einfache Offset-Kompensation zurechtbiegen lässt.
Ben B. schrieb: > Mich interessiert im Moment, ob man das Ergebnis damit einfach nur > stabil und ausreichend genau bekommt, wenn man z.B. 128 Messungen > addiert, Wenn die WLAN-Störungen die Anzahl der effektiven Bits gegenüber der Wandlerauflösung um vier reduziert, d.h. um einen Faktor 16, sollte Oversampling mit einem Faktor 256 (=(16)^2) die Sache wieder gerade biegen - vorausgesetzt die Störungen sind ausreichend stationär und unkorreliert. Genau das könnte zum Problem werden. ;-)
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.