Forum: Mikrocontroller und Digitale Elektronik AVR/ESP32 ADC oder 1 µC nutzen?


von Genadi (Gast)


Lesenswert?

Guten Tag,
als erstes entschuldige ich wegen meine verstöße gegen die D. 
Rechtschreibung bin etwas neu :D

Ich habe ein Sensor mit analogen Output, ein GPS NEO m6 Sensor und den 
ESP32 Devkit mit Wlan.  Alle drei Sachen sollen vereint werden. Die GPS 
Koordinaten (per UART) sollen zum ESP32DevKit gehen und zu meinem Server 
geschickt werden. Das funktioniert problemlos! Sobald ich aber am ESP32 
den ADC nutzen möchte spinnt alles bezüglich time(millis) dann sind 50ms 
paar Sekunden. Werde stimmen nicht überein.
Offenbar haben viele das Problem das die ADC beim  nutzen des Wlans 
nicht funktionieren... dann dachte ich mit ok ich benutze ein ATMEGA8 
der misst für mich und sendet die Sensordaten seriell naja ich nutze 
bereits 2 Serielle Ausgänge(GPS und Copmuter UART) und laut Pinout gibt 
es kein drittes. Jetzt bin ich hilflos und hoffe das mir jemand helfen 
kann weil die Frust langsam kommt. Mein Idee ist, der ATMEGA8 misst 5 
Sekunden macht sein Mittelwert und sendet es seriell. Meine Frage wie 
empfange ich die Daten am ESP32 DevKit in eine Funktion ohne 
Zeitkritische Probleme zu bekommen. Bin offen für Vorschläge.

von Einer K. (Gast)


Lesenswert?

Genadi schrieb:
> und sendet es seriell.
Dann musst du auch seriell empfangen!

Alternativ:
Warum nicht I2C/TWI?

von Michael U. (amiga)


Lesenswert?

Hallo,

es gibt 3 Serielle in der Hardware, hier mal als Hinweis:
https://github.com/G6EJD/ESP32-Using-Hardware-Serial-Ports/blob/master/ESP32_Using_Serial2.ino

Die beiden ADC des ESP32 sind jeweils auf eine Pingruppe gemappt.
Einer der ADC wird recht stark vom WLAN gestört, da macht messen nur 
Sinn wenn man während der Messung das WLAN abschaltet.
Der andere geht auch so brauchbar. Vielleicht findest Du hier einen 
Ansatz:
https://github.com/espressif/arduino-esp32/issues/102

Für Dein millis() Problem habe ich im Moment keine Erklärung ohne den 
Sketch zu kennen, ist mir zumindest so noch nicht begegnet.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Beim ESP8266 gab es das Problem, dass er spinnt oder gar ganz ausfällt, 
wenn man den ADC ununterbrochen benutzt. Der WLAN Stack braucht den ADC 
nämlich auch ab und zu, um seine Sendeleistung zu steuern.

Inwiefern der ESP32 davon betroffen ist, weiß ich nicht. Du kannst ja 
mal versuchen, das Programm so umzuschreiben, dass es den ADC nur noch 
in gewissen Intervallen benutzt, anstatt fortlaufend. Vielleicht 
erledigt sich dann auch dein Timer-Problem.

Die I²C Schnittstelle ist extrem unkritisch, was das Timing angeht. Es 
gibt auch A/D Wandler mit I²C Anschluss, zum Beispiel den PCF8591.

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.