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
}
}
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.
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.
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.
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?
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.
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.
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.
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
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.
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.
Sorry hab ich übersehen. Die Stromversorgung läuft über folgendes 5V Hutschienennetzteil das an einem eigenen Leitungschutzschalter direkt am Sicherungskasten hängt.