Nodemcu startet neu wenn digital Input schaltet

Hallo,

Ich überwache mit einem Endschalter die Schaltung von 2 Ventilen mit einem Nodemcu über Pin 4 und 14.
Es muss immer einer von den Endschaltern die Schaltung erkennen sonst sende ich über Http request eine Nachricht an einen anderen Arduino im Netzwerk der dann die Pumpe sperrt.
Leider startet der Nodemcu manchmal neu wenn die Schaltung erfolgt. Ich habe auch schon andere Pins probiert aber habe leider auch das gleiche Problem. Ich kann mir auch nicht Vorstellen das dies am Code liegen kann.
Hat irgendjemand eine Idee an was das liegen kann?
Hier ein Auszug von meinem Code:

void push()
{

 val_ventil_whirlpool = digitalRead(ventil_whirlpool);  // read input value
 val_ventil_pool = digitalRead(ventil_pool);
 val_pumpe_solar = digitalRead(pumpe_solar);
 val_pumpe_filter = digitalRead(pumpe_filter);

 if (pumpe_filter_push_state == 0) {                     //if protecting triggered send push message
   if (val_pumpe_filter == 0) {
     Serial.println("Filterpumpe Schütz ausgelöst");
     po.setMessage("Filterpumpe Schütz ausgelöst!");
     Serial.println(po.send());
     delay(300);
     pumpe_filter_push_state = 1;
   }
 }

 if (pumpe_solar_push_state == 0) {
   if (val_pumpe_solar == 0) {
     Serial.println("Solarpumpe Schütz ausgelöst");
     po.setMessage("Solarpumpe  Schütz ausgelöst!");
     Serial.println(po.send());
     delay(300);
     pumpe_solar_push_state = 1;
   }
 }

 if (ventil_push_state == 0) {                            //if endstops triggered send push message
   if (ventil_stage_state == 0) {
     if (((val_ventil_whirlpool == 1 && val_ventil_pool == 1)) || ((val_ventil_whirlpool == 0 && val_ventil_pool == 0))) {
       Serial.println("Ventil Stage 1 ausgelöst ");
       previousMillis = millis();
       ventil_stage_state = 1;
     }
   }
   if (ventil_stage_state == 1) {
     if (millis() - previousMillis > interval) {

       if (((val_ventil_whirlpool == 1 && val_ventil_pool == 1)) || ((val_ventil_whirlpool == 0 && val_ventil_pool == 0))) {
         Serial.println("Ventil blockiert");
         po.setMessage("Ventil blockiert!");
         Serial.println(po.send());
         sendGET();
         Serial.println("Filterpumpe_ausgeschaltet");        
         delay(300);
         ventil_push_state = 1;
       }
     }
   }
 }


 if (((val_ventil_whirlpool == 1 && val_ventil_pool == 0)) || ((val_ventil_whirlpool == 0 && val_ventil_pool == 1))) {
   ventil_stage_state = 0;
   ventil_push_state = 0;
 }
}

void sendGET() {                                                //client function to send/receive GET request data.
 if (anzahl_senden <= 1) {
   if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status           //GET

     HTTPClient http;  //Declare an object of class HTTPClient

     http.begin("http://username:password@192.168.X.X/FilterOffOn");  //Specify request destination
     int httpCode = http.GET();                                                                  //Send the request

     if (httpCode > 0) { //Check the returning code

       String payload = http.getString();   //Get the request response payload
       Serial.println(payload);                     //Print the response payload

     }

     http.end();   //Close connection

   }

   delay(30000);    //Send a request every 30 seconds

 }
}

Vielen Dank im Voraus!
Gruß Lampi

Kann es sein das er neustartet wenn ein Ventil schaltet? Wie hast du die Eingänge verdrahtet? Sind sicher Magnetventile, oder?

Setze Deinen Code bitte in Codetags (</>-Button im Forumseditor), damit er für alle lesbar ist.

Meinst Du, der ESP startet neu, wenn die Pumpe geschaltet wird? Da könnten Störimpulse die Ursache sein.
Um dazu aber nächer etwas sagen zu können, müßtest Du uns noch mitteilen, was für eine Pumpe das ist, wie sie geschaltet wird und wie die ganzen Zeile verschaltet sind.

Gruß Tommy

lampi: ..... Hat irgendjemand eine Idee an was das liegen kann? .....

Fehlende Freilaufdiode an den Ventilen.

Ja der Neustart erfolgt nur wenn das Ventil schaltet. Die Ventile habe ich selbst gebaut sind aber von der Steuerung unabhängig.
Die Pumpe ist auch von dieser Steuerung getrennt und wird von einem anderen Arduino im Netzwerk bei bedarf gestoppt.
Anbei die Skizze von der Schaltung, hab leider keine mechanischen Endstops gefunden und deshalb Schalter verwendet.

Gruß Lampi

lampi: .... Anbei die Skizze von der Schaltung, hab leider keine mechanischen Endstops gefunden und deshalb Schalter verwendet. ....

Ich sehe in der Schaltung keine Ventile und Pumpen. Wie steuerst du die, das wäre hier wichtig.

hast du die direkt am Pin angeschlossen ? An welchen ?

Diene Angaben sind nicht ausreichend.

Wo sind die Freilaufdioden ? Wie groß sind die Pulldown-Widerstände ?

Die Ventile und die Pumpe werden über eine Pausch Allpool (Poolsteuerung) gesteuert. Mit dem Nodemcu überwache ich nur die korrekte Position der Ventile und schalte bei Bedarf (sollte ein Ventil hängenbleiben) die Pumpe aus, damit kein Schaden entsteht.

Ich habe 10K Wiederstände verwendet. Freilaufdioden sind keine verbaut, ich denke nicht das dies bei der Überwachung mit Endschaltern notwendig ist.

Gruß Lampi

Wie lang sind denn die Leitungen zu den Eingängen und von welcher Qualität(verdrillt, geschirmt, ...)

Gruß Tommy

lampi: Ich habe 10K Wiederstände verwendet. Freilaufdioden sind keine verbaut, ich denke nicht das dies bei der Überwachung mit Endschaltern notwendig ist.

Da bist du im Irrtum. Auch dabei können Störungen auftreten. Und mach mal die Widerstände kleiner, ca. 1kOhm.

Die Kabel sind ca 4-5m lang und verdrillt ungeschirmt. Die hatte ich bei mir noch rumliegen und deshalb 2 verschiedene Querschnitte verbaut 0.25 und 0.50 mm2.

Wo werden die Freilaufdioden bei Endschalter verbaut?

Gruß Lampi

lampi: Die Kabel sind ca 4-5m lang und verdrillt ungeschirmt. Die hatte ich bei mir noch rumliegen und deshalb 2 verschiedene Querschnitte verbaut 0.25 und 0.50 mm2.

Wo werden die Freilaufdioden bei Endschalter verbaut?

Gruß Lampi

Kabel Querschnitt ist unkritisch, aber die Länge ist schon extrem. Die Pulldown müssen unbedingt kleiner! Abgeschirmt wäre besser.

Und eine Freilaufdiode gehört immer an die Spule(Relaiis, Ventil o. Motor usw.). Da werden die Spannungsspitzen erzeugt und müssen gelöscht werden.

Anbei noch ein Foto von einem verbauten Endschalter:

Gruß Lampi

Da aber dein Problem (wie beschrieben) beim Einschalten passiert, ist hier die Freilaufdiode evtl. nicht nötig.

Dennoch, um spätere Problem auszuschließen, solltest du diese einbauen.

Bei mir kommt an jede Spule eine Freilaufdiode.
Diese paar ct. solltest du auch übrig haben.

Ok verstehe aber die Steuerung kommt ja gar nicht mit dem Ventil oder dem Motor in Kontakt.
Die Motoren vom Ventil sind normale 230V Jalousiemotoren und das Gehäuse ist geschlossen. Dasselbe bei der Filterpumpe darum denke ich das die Freilaufdiode nicht notwendig ist, ich wüsste auch nicht wo ich diese setzten soll? Ich probiers jetzt mal mit nem kleineren Widerstand.

Gruß Lampi

lampi: Ok verstehe aber die Steuerung kommt ja gar nicht mit dem Ventil oder dem Motor in Kontakt. Die Motoren vom Ventil sind normale 230V Jalousiemotoren und das Gehäuse ist geschlossen. Dasselbe bei der Filterpumpe darum denke ich das die Freilaufdiode nicht notwendig ist, ich wüsste auch nicht wo ich diese setzten soll? Ich probiers jetzt mal mit nem kleineren Widerstand.

Ja....das ist nicht nur durch die Freilaufdiode zu lösen.

Bei 230 Volt funktioniert das nicht. Allerdings gehen die Störungen über die Luft, wie Funk. Damit sind die immer da. Besonders bei 230 Volt. Evtl. brauchst du da zum Widerstand noch abgeschirmtes Kabel. Und wenn das nicht reicht, müssen da noch Snubber an die Motoren. Da das 230 Volt sind. rate ich dir zu einem Elektriker deines Vertrauens. Selbermachen ist lebensgefährlich.

Jetzt verstehe ich dich :slight_smile:

Die Filterpumpe kann es nicht sein da die Ventile nur schalten wenn die Filterpumpe aus ist. Wäre sonst gar nicht möglich wegen den Druck.
Es könnten aber die Jalousiemotoren sein, diese werden über ein Schütz geschalten. Deshalb passiert es wahrscheinlich auch nur im Betrieb und nicht wenn man die Endschalter händisch schaltet.

P.S Elektriker ist nicht notwendig, habe meine ganzen Pool selbst angeschlossen und Lebe immer noch :slight_smile:

Vielen Dank für den Tipp.
Gruß Lampi

Es könnte (evtl. zusätzlich) noch sein, dass die Störungen über die Stromversorgung zum ESP gelangen, deshalb hatte ich Dich nach der Art der Stromversorgung des ESP gefragt.

Gruß Tommy

Hi

Auch, wenn Du noch lebst - es geht dabei nicht um Dein Leben - wenn Du Das versemmelst, gibt's für den Rest Kaffee und Kuchen, passt schon. Blöd ist, wenn's wen Anderes erwischt - dann gibt's trocken Brot und Wasser bei gesiebter Luft.

MfG

Sorry hab ich übersehen. Die Stromversorgung läuft über folgendes 5V Hutschienennetzteil das an einem eigenen Leitungschutzschalter direkt am Sicherungskasten hängt.

Gruß Lampi