Hallo, ich will eine Temperatur messen und bekam stark schwankende Werte. Die habe ich durch Interpolation stabilisiert, aber gedacht da kann was nicht stimmen und es genauer untersucht. Mittlerweile ist klar, der Analogwert den der ESP8266 misst schwankt stark. Der wert schwankt bis zu 10 von 1024 Punkten hin und her, obwohl die Eingangsspannung konstant ist. Ich habe einen LD1117V33 als externe 3,3V Spannung (Masse natürlich mit ESP verbunden) und diese zum Messen über einen Spannungsteiler direkt auf den Eingang gegeben. Es sollte (und ist auch messbar) also eine konstante Spannung am Analogpin anliegen. Allerdings schwankt der gemessene Wert wie gesagt um bis zu 10 hin und her. Das Program zum testen habe ich auch ganz ganz simpel gehalten: Serial.println(analogRead(0)); delay(100); Was kann das sein und wie kann ich das beheben? EDIT: Habs gerade mal mit einem anderen Arduino uno getestet, da schwnakt es 0-1, was ich für normal halte. Ist der also defekt, oder ist das beim ESP etwa "normal"?
:
Bearbeitet durch User
Naja ursprünglich die des Sensors, jetzt ne feste 3,3V über Spannungsteiler 0,208V aktuell. Die Höhe hat aber keinen Einfluss auf die Schwankungen
Der ADC des ESP verträgt aber maximal 1,0V. Denke den hast geschrottet.
Der ESP misst nur einigermaßen genau, wenn man das WLAN Gedöns in der Zeit schlafen schickt.
1. Er MISST nur 1V Soweit ich weiß, kaputt gehen tut er glaub ich nicht 2. Es lagen nie mehr als 1V an, da ich das weiß, daher kann ich den nicht geschrottet haben 3. Das selbe haben auch andere ESPs die ich eben gestestet habe, sogar viel extremere Schwankungen Das einzige was ich gerade überlege muss ich trotzdem ich garnichts groß nutze die ESP Bibliothek einbauen? Kann das der Grund sein? Hier der komplette Programmcode: void setup() { Serial.begin(115200); } void loop() { Serial.println(analogRead(0)); delay(100); }
dann bau sie halt ein. ich arbeite mit dem SDK und habe keine Probleme den ADC zu lesen. Auch wenn WLAN aktiviert ist.
Das beruhigt, dachte schon es ist bei dem Chip normal und geht nicht besser. Ich probiere es gleich mal....
Bernd B. schrieb: > Naja ursprünglich die des Sensors, jetzt ne feste 3,3V über > Spannungsteiler 0,208V aktuell. Schon mit nem Oszi gegut, ob da nich Müll eingefangen wird.
Teo D. schrieb: > Schon mit nem Oszi gegut, ob da nich Müll eingefangen wird. Ein kleiner Kerko sollte da Ruhe rein bringen.
Habe leider kein Oszilloskop, da ich das erste mal seit 30 Jahren wieder intensiver sowas mache. Habe aber schon versucht die Spannung mit Kondensatoren zu glätten, da passiert garnichts. Keine Änderung.
So ich habe jetzt nochmal nachgesehen, die 3,3V sind stabil, habe nochmal ein RC Glied vorgeschaltet. Ich habe das SDK ja in den Einstellungen des Arduino IDE drin, aber ne spezielle Bibliothek muss ich nicht einbinden oder? Ich verstehe das Problem nicht, wenn es bei euch nciht auftritt. Muss ich denn irgendwie anders als ich es mache den Pin auslesen?
1) Ich habe in der Arduino IDE unter Voreinstellungen Zusätzliche Boardverwalter URLs eingetragen: http://arduino.esp8266.com/stable/package_esp8266com_index.json Korrekt? Der ESP wird mir ja auch angezeigt. 2) Das Programm lautet (komplett): void setup() { Serial.begin(115200); } void loop() { Serial.println(analogRead(0)); delay(100); } 3) Hardware: Entweder Wemos D1 oder ESP8266 direkt: Vcc, Reset, EN direkt auf +3,3V v. Spannungsregler GND, GPIO15 direkt auf GND GPIO0 10k pullup gegen 3,3V, per Taster gegen GND TX/RX verbunden Also so viel falsch machen kann man da ja nicht, ich raffe nciht was schief läuft!
Ich habe inzwischen folgendes probiert, alles ohne irgendeine Änderung: 1. Spannungsteiler direkt am WEMOS D1 statt externe Spannung (vorher Netzteil und Spannungsregler) 2. Anderer COM Port am Rechner 3. Wemos zusätzlich durch 9V Batterie mit Spannung versorgt Wie gesagt sowohl mit Wemos D1 als auch mit ESP-13F die gleichen Schwankungen. Am Analogpin liegen 0,206V an. Was mir auch unerklärlich ist ist wieviel Speicher das kleine Programm angeblich belegt. Das ergibt doch keinen Sinn?! (SIEHE BILD)
:
Bearbeitet durch User
So wie es auf dem Foto aussieht gehst du mit der analogen Spannung auf Vin. Kommt die analoge Spannung den amm richtigen Pin am ESP8266 an (ADC)?
Hallo, Speicherbelegung ist normal. Die Systemsoftware des ESP8266 incl. WLAN usw. wird generell eingebunden. Die ESP8266WiFi.h sind letztlich nur ein paar Hilfroutinen um aus der Arduino-IDE in "bekannter" Art die SDK-Routinen nutzen zu können. Du kannst ja mal einen leeren Sketch compilieren, Dein Programm belegt um die 700 Byte. Mit dem ADC habe ich keine Probleme, allerdings bisher nur einmal genutzt: 100k/390k Spannungsteiler an der Li-Io-Zelle vor dem MCP1703. Auch beim Test im Vorfeld schwankten die Werte nur +- i Bit. Welche Werte hat Dein Spannungsteiler? Nicht daß auf dem Boatd den Leitungen da war reinsaut. Gruß aus Berlin Michael
Mein letzter Post is wohl im Nirwana verschwunden?! Mach mal alles weg, bis auf die Batterie. Leg den ADC so kurz wie möglich auf GND. Wenn's dann immer noch rumzuppelt..... Gremlin Jäger rufen :( Michael U. schrieb: > Welche Werte hat Dein Spannungsteiler? !
Ich habe aktuell 1K/680R aber mit dem Temperaturfühler der ne feste Spannung liefert ging es ja auch nicht. Der Eingang steckt auf A0, das sieht nur so aus. Kann das irgendwie an den Bibliotheken liegen die eingebunden werden? Also noch simpler kann ich die Schaltung und das Programm nicht bauen, ich habe keine Idee wo ich jetzt noch nach dem Fehler suchen soll. Dass 2 Boards defekt sein sollen und genau den selben Fehler haben kann ich auch nciht glauben, zumal die von verschiedenen Händlern kommen (aber beide aus China, aber da kaufen ja viele).
Nachtrag, mit meinem normalen Arduiono-Klon gehts übrigens problemlos. Das Problem habe ich nur mit ESP. Also kann es eigentlich ja keine Einstrahlung sein.
? Wie meinst du? A0 geht an den Spannungsteiler (Mitte)
Wenn ich A0 auf GND stecke gekt es zwischen 0 und ca 7 hin und her.
Leg mal A0 auf GND und schau dir an was der ESP ausgibt.
Hallo, laß mal Deinen Sketch laufen und mach eine Brücke direkt zwischen dem ADC-Eingang und GND auf dem ESp-Modul. Belegung des ESP8266-12 findest Du im Netz. Ich trau dem Layout der Leiterplatte nicht. Der ESP zieht merkliche Impulsströme. Wenn da die Masse nicht sehr sauber angebunden ist, kannst Du vermutlich den ADC zur Strommessung des ESP-Moduls nehmen... Nicht, weil ich Probleme mit den chinesischen Fertigern habe, ich habe aber hier ProMini und hatte auch schon ein NodeMCU-Modul, wo wohl der Autorouter mehr schlecht als recht randurfte. Gruß aus Berlin Michael
Mhh, das ist ein bisschen viel. Bei meinen nodeMCUs schwankte der Wert zwischen 0 und 1. Einen Aref hat der ESP nicht, oder?
Das kann ich mit dem Wemos nicht machen wegen dem Gehäuse, das wäre sehr umständlich. Aber ich hab ja auch ein einzelnes ESP Modul auf dem Steckbrett, was genau so reagiert, probiere ich da gleich nochmal
Was mir gerade aufgefallen ist... Wenn ich das Board neu programmiere gehen die ersten 20 Messungen oder so einwandfrei und dann steigt der wert bis er blöd zwischen 0 und 7 hin und her springt. Als wenn sich am Anfang irgendein Kondensator auflädt.
Ist bei meinem Wemos (D1 Mini) das gleiche. Allerdings schwankt der Wert bei meinem "nur" ca. 7 statt 10 punkte. Es macht auch keinen unterschied gemacht ob ich die Messspannung am Wemos (also zusätlich noch über den on-board Teiler gehe) oder direkt am ADC pin vom ESP Modul anlege. Das einzige was hilft ist das WLAN zu deaktieren: WiFi.disconnect() Dann ist ruhe. Bei den ESP Modulen die ich sonst hier rumliegen habe schwankt der Wert auch mit aktiviertem WLAN nicht so stark. Allerdings hab ich sonst nur ESP-07, -12 und -12E im Einsatz und keinen ESP-12F. Vielleicht liegt es ja an dem?
Also ich hab ja auch den Wemos der hat ja nen 12E drauf, das selbe. habe jetzt folgende Minimalkonfiguration Siehe Bild. Serielle Verbindung gekappt und Seriell deaktiviert Damit man es trotzdem sieht habe ich das hier geschrieben: int Speicher = 0; void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { Speicher = analogRead(A0); if (Speicher >= 6) { digitalWrite(LED_BUILTIN, LOW); } else { digitalWrite(LED_BUILTIN, HIGH); } delay(100); } Habe das ganze auch in eine mit GND verbundene Alufolie eingewickelt um Einstreuungen auszuschließen (mit kleinem Loch für die LED). Auch das Selbe. Ok, das mit WiFi probiere ich gleich mal. Nun sagen ja aber einige sie haben das nicht und du hast es auch nicht mit jedem Modul. Jetzt wäre die Frage ob es von der Firmware Version abhängt. Kannst Du die mal auslesen (oder jemand der das Problem nicht hat)
Stimmt WiFi aus und es geht. Nun stehe ich vor dem nächsten Problem.... Ich habe gerade meine Schaltung umgestellt. Eigentlich wollte ich den ESP per AT Firmware mit einem ProMini verbinden und Blynk nutzen. Blynk aber lief per AT Firmware schlecht und brach immer ab. Daher wurde mir geraten direkt ein Wemos/ESP zu nehmen. Da ich die eh da hatte hab ich mich schweren Herzens dazu entschlossen und alles umgestellt und den Schaltplan entsprechend angepasst. Jetzt geht vielleicht Blynk, aber dafür sind meine Messungen für den A.... Ich kann ja schlecht bei jeder Messung das Wifi deaktivieren. Gibts da ne Möglichkeit?
Ne, das ist ein ESP-12F. Lässt sich gut an der Antenne erkennen. An der Firmware kann es meinen Tests nach nicht liegen, habs unter gleichen voraussetzungen getestet.
Bis auf einen externen ADC zu verbauen fällt mir da jetzt leider auch nichts ein.
Also.... Wenn man WiFi.mode(WIFI_AP_STA); einstellt schwankt es bei mir schwächer, dann ist aber immer der Access Point im Modul an und teilweise bringts viel teilweise kaum was. Ich habe im Netz gefunden, wenn man statt analogread() System_adc_read (); benutzt sollen die Werte stimmen. Allerdings gibt es mir nen Fehler beim Kompilieren, weil er es nicht kennt. Daher... WIE? Ist scheinbar in user_interface.h im NONOS SDK, aber kann man die Funktionen auch auf Arduino nutzen?
:
Bearbeitet durch User
Ja, ist in der "user_interface.h". Einfach wie im Beispiel "CallSDKFunctions" das (neben vielen anderen) beim installieren der ESP unterstützung mitinstalliert wurde einbinden.
Ja, klappt, bringt nur herzlich wenig..... Jemand ne andere Idee?
U. F. schrieb: > Ein kleiner Kerko sollte da Ruhe rein bringen. hast du ausprobiert? Also Zusatz-Kerko zwischen Analog-Eingang und GND, nicht nur an den 3.3V-Spannungsregler. Ansonsten: Mehrfach messen, (gleitenden) Mittelwert bilden. Temperaturen ändern sich üblicherweise nicht abrupt.
Hät mich jetzt auch gewundert. "Arduino" macht ja auch nichts anderes. Wieso umbedingt analog und kein DS18B20 oä?
:
Bearbeitet durch User
Naja ich messe nicht nur die Temperatur ich habe diverse andere Sensoren die ich da rauf schalten muss. Und externer ADC geht auch nicht, man hat 11 Pins -2 für Seriell sind 9 und ich brauche 6 zum multiplexen der Eingänge und 3 für Schieberegister um Ausgänge zu erweitern.... daher war ja eigentlich geplant den ESP per AT Firmware mit dem Mini zu verbinden, aber die AT Firmware haute mit Blynk nicht richtig hin. Da brach immer wieder die Verbindung wegen buffer overflow ab. Ich vermute da ist ein Problem in der Blynk Bibliothek. Oder kann mir bei dem Problem jemand ne Lösung anbieten wie ich das zum Laufen bekomme?
:
Bearbeitet durch User
Hallo,
>ich brauche 6 zum multiplexen der Eingänge
36 analoge Eingänge?
Ich mußte erstmal nachschauen, was Blynk eigentlich ist und bin jetzt
ein wenig neugierig: was hängt da so alles an dem armen ESP8266?
Gruß aus Berlin
Michael
Es werden 16 Feuchtigkeitssensoren gebraucht, Temperatur, Helligkeit, 2x Wasserstand im Tank und dann halt Reserve. Aber da ich eh mehr als 2 Multiplexer brauche, kann ich die auch so schalten, dass ich 64 Eingänge habe. Die Anzahl der Pins die ich brauche ist gleich.
Scheinbar ist der korrekte Wert immer der niedrigste von den gemessenen (gerade ausprobiert). Daher müsste es auch gehen wenn man 20x misst und den niedrigsten nimmt.
Bernd B. schrieb: > Es werden 16 Feuchtigkeitssensoren gebraucht, Temperatur, Ich brauch zwar nur 4, hab mich aber dafür entschieden. http://www.ebay.de/itm/311458439393?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Wenn nich schon alles eingekauft.....?
Hallo, rechnen kann ich auch nicht mehr, ich meinte ja 64... 2x MCP23S17 am SPI hätten 32 I/O die man Byteweise ansprechen kann. 3x 8 Ausgänge und 1x 8 um den Analog-Mux anzusprechen. Mehr als 10MHz SPI-Clock können die aber wirklich nicht, meine laufen mit 8MHz. Ich hatte eigentlich auch mal wenige ESP8266-12F irgendwo mitbestellt, ich muß mal meinen Bekannten zum Testen überreden, der hat die meisten bekommen und ich weiß im Moment nicht, wo ich meine eingebaut habe. Gruß aus Berlin Michael
Nochmal ne Frage zum WiFI.disconnect(); Wie kriege ich das dann wieder an? Und gibt es die Möglichkeit das WiFi vielleicht zu pausieren, damit er nicht jedes Mal die Verbindung neu aufbauen muss? Ich habe nämlich Anwendungsfälle wo ich auslesen und direkt wieder online anzeigen muss immer abwechselnd. Wen ich da 5x die Sekunde Wlan unterbreche kann ich mir jetzt schon denken, dass neue Probleme vor der Tür stehen....
Keiner? Gibts sowas wie wifi.reconnect() bzw. wifi.connect() ? Oder muss ich ganz normal wieder die Verbindung aufbauen als hätte es die Verbindung vorher nie gegeben? Ich dachte dass man die kurz "totlegen" und wieder aktivieren kann.
:
Bearbeitet durch User
Ich habe das noch nicht explizit hier gesehen - aber an meinen ESP-01 habe ich über Vcc und GND einen 100µF-Kondensator (Kerko/Tantal) gelötet. Damit laufen die stabil; zuvor direkt an beliebigen 3,3V LDOs/StepDowns hat gerne das WLAN gezickt, da die Stromspitzen nicht ausreichend bedient wurden. Das dürfte offenbar auch für die NodeMCU/Wemos/...-Abwandlungen hilfreich sein. Bei stabilisierter Versorgung sollte der ADC auch stabilere Werte liefern. (Ohne die Kondensatoren haben auch die Werte der zusätzlich an den ESP angeschlossenen und gemeinsam mitversorgten DHT22/Si7021 größere Schwankungen gehabt, die intern ebenfalls mit einem ADC arbeiten ...)
Hab mit so WIFI Teilen NULL Erfahrung: Könnte da der 9V-Block event. dafür einen zu großen Innenwiderstand haben?!
Das mit dem Kondensator hatte ich als erstes probiert, das hatte keinen Einfluss. Das muss RF Einstrahlung sein, wenn das Modul sendet.
Teo: Die Batterie war nur um auszuschließen, dass es von der Spannungsversorgung kommt Habe jetzt mal 100nF SOWOHL auf 5V als auch 3,3V beim Wemos gemacht mal sehen.... Bisher hab ich nur eine genommen.
Bernd B. schrieb: > Teo: Die Batterie war nur um auszuschließen, dass es von der > Spannungsversorgung kommt Sorry, hab beim überfliegen grad nix dergleichen gefunden. Als schon an nem vernünftigen Netzteig getestet!?
Dann mal lesen nicht überfliegen, es kommt vom Chip
Bernd B. schrieb: > Habe jetzt mal 100nF SOWOHL auf 5V als auch 3,3V beim Wemos gemacht mal > sehen.... Kann sein das das zu wenig ist, der ESP zieht teilweise bis zu 400mA. Um die Versorgungsspannung auszuschliessen würde ich hal mal mit nem Oszi schauen ob die nicht doch ab und an einbricht.
100nF ist ein guter Anfang, aber ich meinte ernsthaft 100µF Kerko oder Tantal mit niedrigstem ESR. Keine Alu-Elkos, deren Beinchen gerne auch mal Antenne spielen.
:
Bearbeitet durch User
Bernd B. schrieb: > Dann mal lesen nicht überfliegen, es kommt vom Chip Oh entschuldige das ich dir helfen wollte, wird nicht mehr vorkommen.
War nicht so gemeint, aber an dem waren wir schon lange vorbei ;) Also ich habe mittlerweile gefunden dass Expressif die ADC Routine in der aktuellen Version abgeändert hat, aber in der Arduino Library wird noch das alte benutzt. Auch dort haben Leute das selbe Problem.
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.