Türöffner mit Bewegungsmelder

Hallo Leute,
Ich bin am verzweifeln ich habe eine recht simple Schaltung zum öffnen einer Tür über einen Bewegungssensor gebaut.Anfangs hatte sie auch gut funktioniert doch nach einer Weile begann die Tür von allein zu öffnen und zu schließen.
Zur Schaltung: über einen digitalen Pin (8) des Atmega Chips wird ein 5 v Signal über einen 10k wiederstand an einen 548bc gesendet der dann wiederum ein 24v Relais schaltet(mit Diode )das den Motor schaltet das gleiche über pin11 für ein 2. Relais .
Damit wird die Polarität am Motor getauscht.Am Pin 9 hängt der Bewegungsmelder.
Mein Problem ist das an den Pins 8 und 11 in unbestimmten Zeitabständen immer wieder eine Spannung anliegt trotzdem ich den Bewegungsmelder abgeklemmt habe.
Der Sketch:
/*
Bewegungsmelder Fliegengittertür
soll die tür öffnen & schließen soll aber nicht falls nach dem öffnen noch Bewegung im Eingangsbereich ist die tür
nach kurzer wartezeit wieder schließen sondern warten bis keine Bewegung mehr stattfindet
*/
int aufPin=8; //Relaissteuerausgang für auf
int zuPin=11; ////Relaissteuerausgang für zu
int bewegung=9; //Pin Bewegungsmelder
int bewegungsstatus=0; //Das Wort „bewegungsstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob eine Bewegung erkannt wird oder nicht.
int Pause =3000;

void setup() //Hier beginnt das Setup.
{
Serial.begin(9600);
pinMode(aufPin, OUTPUT);
pinMode(zuPin, OUTPUT);
pinMode(bewegung, INPUT); //Der Pin mit dem Bewegungsmelder (Pin 7) ist jetzt ein Eingang.
digitalWrite(aufPin, LOW);
digitalWrite(zuPin, LOW);

}

void loop() //Der Loop-Teil beginnt
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
digitalWrite(aufPin, LOW);
digitalWrite(zuPin, LOW);
label1:
bewegungsstatus=digitalRead(bewegung); //Hier wird der Pin7 ausgelesen. Das Ergebnis wird unter der Variablen „bewegungsstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.

if (bewegungsstatus == HIGH) //Verarbeitung: Wenn eine Bewegung detektiert wird (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(aufPin, HIGH);
delay(10000);
digitalWrite(aufPin, LOW);

while( bewegungsstatus == 1 ) //Schleife im if Befehl wiederholt die pause wennder Bewegungssensor nach dem öffnen erneut auslöst
{

Pause;
bewegungsstatus=digitalRead(bewegung);

}

delay(500);
digitalWrite(zuPin, HIGH); //ab hier läuft der eigentliche if Befehl weiter
delay(10000);
digitalWrite(zuPin, LOW);

}
else {
// turn LED off:
digitalWrite(aufPin, LOW);
digitalWrite(zuPin, LOW);

}

}//Programmabschnitt des else-Befehls schließen.

Was ich bereits versucht habe: im setupteil die Ausgänge nochmals auf Low zu setzen,Transistoren getauscht,vorwiederstand Basis Größer kleiner , anderen atmega,puldown wiederstand zwischen 11 und GND ,den Sketch auf einen Nano zu laden und mit den Ausgängen sowie -und +zu verbinden(atmega)entfernt.
Immer wieder schalten die Relais ohne Bewegungsmelder.
Hat vielleicht von euch jemand mehr Ahnung als ich und kann mir helfen?

Deinen Aufbau verstehe ich nicht, deinen Sketch kann man nicht vernünftig lesen.

In einem Mobilgerät überhaupt nicht.
Setze den bitte in Code-Tags.

Verwende dazu die Schaltfläche </> oben links im Editorfenster.
Das kannst du auch nachträglich machen.
Dazu den Sketch markieren und die Schaltfläche klicken.

Damit wird dieser für alle besser lesbar.

Und poste ein Schaltbild, damit wir deinen Fehler erkennen können.

Was mir noch einfällt:
was für einen Bewegungsmelder setzt du ein. Poste einen Hyperlink.

hast du einen Pulldown-Widerstand am Eingangspin ?

Damit wird die Polarität am Motor getauscht.Am Pin 10 hängt der Bewegungsmelder.
Mein Problem ist das an den Pins 8 und 11 in unbestimmten Zeitabständen immer wieder eine Spannung anliegt trotzdem ich den Bewegungsmelder abgeklemmt habe.

Bist du sicher das der Bewegungsmelder an 10 hängt? Wenn ja, verstehe ich das Verhalten.

/*
Bewegungsmelder Fliegengittertür 
 soll die tür öffnen & schließen soll aber nicht falls nach dem öffnen noch Bewegung im Eingangsbereich ist die tür
 nach kurzer wartezeit wieder schließen sondern warten bis keine Bewegung mehr stattfindet 
*/
int aufPin=8; //Relaissteuerausgang für auf
int zuPin=11; ////Relaissteuerausgang für zu
int bewegung=9; //Pin Bewegungsmelder
int bewegungsstatus=0; //Das Wort „bewegungsstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob eine Bewegung erkannt wird oder nicht.
int Pause =3000;


void setup() //Hier beginnt das Setup.
{
  Serial.begin(9600); 
pinMode(aufPin, OUTPUT); 
pinMode(zuPin, OUTPUT); 
pinMode(bewegung, INPUT); //Der Pin mit dem Bewegungsmelder (Pin 9) ist jetzt ein Eingang.
 digitalWrite(aufPin, LOW);
   digitalWrite(zuPin, LOW);
   

}

void loop() //Der Loop-Teil beginnt
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
digitalWrite(aufPin, LOW);
digitalWrite(zuPin, LOW);

bewegungsstatus=digitalRead(bewegung); //Hier wird der Pin9 ausgelesen. Das Ergebnis wird unter der Variablen „bewegungsstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.

 
 if (bewegungsstatus == HIGH) //Verarbeitung: Wenn eine Bewegung detektiert wird (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
  digitalWrite(aufPin, HIGH);
   delay(10000);
   digitalWrite(aufPin, LOW);


 
 while( bewegungsstatus == 1 ) //Schleife im if Befehl wiederholt die pause wennder Bewegungssensor nach dem öffnen erneut auslöst
 {
  
  Pause;
  bewegungsstatus=digitalRead(bewegung);

  }


   delay(500);
  digitalWrite(zuPin, HIGH); //ab hier läuft der eigentliche if Befehl weiter
   delay(10000);
  digitalWrite(zuPin, LOW);
    

} 
else {
  // turn LED off:
   digitalWrite(aufPin, LOW);
   digitalWrite(zuPin, LOW);
   
}


 }//Programmabschnitt des else-Befehls schließen.

Was deine Beschreibung betrifft, solltest du da unbedingt Klarheit reinbringen.
Im Text schreibst du Pin 10, im Sketch ist es Pin 9 und in der Beschreibung zum Sketch ist es Pin 7.
Das ist reichlich irreführend.

Warum schreibst du nicht, welchen Bewegungsmelder du verwendest.
Und was ist mit dem Pulldown-Widerstand ?

Auch komme ich mit einigen Dingen in deinem Sketch nicht klar.
Was soll "Pause:" und "Label:" ?
Warum die While-Schleife in der Schleife (Loop) ?

Ich hoffe so ist es gemeint gewesen mit den Code-Tags.
Das kannte noch ich nicht.
Der Link zu Bewegungsmelder:
https://funduino.de/nr-8-bewegungsmelder
aber der ist ja auch abgeklemmt
und ja der Bewegungsmelder ist natürlich an pin 9
Die Pulldown-Wiederstande 10K den hatte ich zwischenzeitlich eingelötet jeweils zwischen Basis Transistor und Masse
danach hatte es funktioniert (mit Bewegungsmelder) aber nur ca 10min danach machte sie wieder was sie wollte.
Ich habe habe dann die den Bewegungsmelder wieder abgezogen aber die Tür ging trotzdem auf und zu
auch wenn ich die komplette Schaltplatiene mit nach drinnen nehme und ohne Bewegungsmelder und Motor Strom gebe höre ich die Relais hin und wieder anziehen und abfallen.Manchmal kurz nach dem anschließen und mehrfach hintereinander, machmal passiert ewig gar nichts (ohne das ich die Schlaltung berühre)

Die Pause soll verhindern das die Relais gleichzeitig schalten und der Tür Zeit geben Komplet auf bzw zu zu fahren.
Die Schleife soll die Pause verlängern wenn noch jemand im Türbereich steht.
Label hab ich vergessen zu löschen das stammt noch von den 1. versuchen die Schleife zu programmieren.

Lies dir bitte nochmal in Post #1 durch, was ein Hyperlink ist.
Eine URL können viele mobile User nicht öffnen.

Und mit Pulldown-Widerstand ist der Widerstand am Eingangspin vom Sensor gemeint.
Wenn da ein langes Kabel (20cm reichen) dran ist, werden reichlich Störungen empfangen, die den Arduino beeinflussen.

Ok sorry ich schreibe selber gerade über Mobiltelefon und da sind einige Funktionen nicht vorhanden u.a. Hyperlink.
Und ich bin auch kein Experte im Programmieren das hab ich alles durch lesen und probieren gelernt und ich bin nur Hobbyelektroniker.
Das mit der langen Leitung ist einleuchtend aber der Sensor inklusive Leitung ist ja noch nicht mal angeschlossen und dennoch ziehen die Relais an

Peter_Krause:
Ok sorry ich schreibe selber gerade über Mobiltelefon und da sind einige Funktionen nicht vorhanden u.a. Hyperlink.
Und ich bin auch kein Experte im Programmieren das hab ich alles durch lesen und probieren gelernt und ich bin nur Hobbyelektroniker.
Das mit der langen Leitung ist einleuchtend aber der Sensor inklusive Leitung ist ja noch nicht mal angeschlossen und dennoch ziehen die Relais an

Dann poste bitte ein Foto deines Aufbau.
Da muss etwas schief laufen, was wir hier nicht sehen können.

Hallo Dieter,
Ich vermute das ich den Fehler gefunden habe.Das mit dem Foto wird vermutlich nichts bringen ich hab alles auf eine lochraster Leiterplatte auf sehr engen Raum mit vielen drahtbrücken verbaut.
Ich glaub nicht das da wirklich viel zu erkennen ist.
Ich habe den Vorschlag von dir aufgegriffen und den pulldown-wiederstand zwischen Masse und Pin 9 eingelötet danach wurden die Relais mit abgezogen Sensor nicht mehr angesteuert.Mit dem Original Bewegungsmelder (an ca 1,5 Kabel)spielte die Schaltung wieder verrückt.Danach habe ich einen Sensor direkt hinter die Schaltung gesetzt.Das hat jetzt auch funktioniert.
Morgen versuche ich das Kabel zum Sensor durch ein geschirmtes auszutauschen.Ich hoffe das ich es damit hinbekomme.
Ich möchte mich aber jetzt schon mal für deine Hilfe bedanken und wünsche dir noch einen schönen Abend.

Wie groß ist denn der Pulldown-Widerstand?

Gruß Tommy

PS: Das Teil taugt für reale Anwendungen nichts. Es ist nur für Versuchszwecke halbwegs brauchbar.

Ja, der Wert des Pulldown hätte mich jetzt auch interessiert.
Da kannst du eigentlich bis auf 1k runter gehen.

Und was heißt Länge 1,5 ?

Also 1,5 die Länge in Meter und den Pulldown hab ich dann wohl mit 10 k etwas zu hoch gewählt. Ich kann ja noch mal mit einem kleineren testen vielleicht muss ich ja mein sorgsam verlegtes Kabel doch nicht tauschen.

Ja, bei 1,5 m brauchst du ganz sicher einen kleineren Pulldown-Widerstand.
Und Tommy hat sicher recht, der verwendete Bewegungsmelder ist nicht optimal.
Ich habe den schon lange bei mir verbannt und setze nur noch Panasonic ein.

Endlich funktioniert alles.
Ich habe noch mal den wiederstand gegen einen 1k getauscht aber dann kommt kein Signal vom Bewegungsmelder mehr durch.
Jetzt habe ich ein Poti verbaut und bei ca 5k funktioniert alles selbst mit der originalen 1,5m Leitung.Testbetrieb seit 3 Stunden ohne Fehler.Ok ob es sich temperaturabhängig vielleicht später noch ändert kann ich noch nicht sagen aber ich bin zuversichtlich.
Vielleicht ädere ich den Bewegungsmelder noch auf ein Panasonic um aber ohne die Störsignale funktioniert er sehr zuverlässig.Ich möchte mich noch mal bei allen bedanken die mir bei meinem Projekt geholfen haben und das Thema hiermit abschließen.

Peter_Krause:
Endlich funktioniert alles.
Ich habe noch mal den wiederstand gegen einen 1k getauscht aber dann kommt kein Signal vom Bewegungsmelder mehr durch.
Jetzt habe ich ein Poti verbaut und bei ca 5k funktioniert alles selbst mit der originalen 1,5m Leitung.Testbetrieb seit 3 Stunden ohne Fehler.Ok ob es sich temperaturabhängig vielleicht später noch ändert kann ich noch nicht sagen aber ich bin zuversichtlich.
Vielleicht ädere ich den Bewegungsmelder noch auf ein Panasonic um aber ohne die Störsignale funktioniert er sehr zuverlässig.Ich möchte mich noch mal bei allen bedanken die mir bei meinem Projekt geholfen haben und das Thema hiermit abschließen.

Prima, freut mich, das es so funktioniert. Auch die Idee mit dem Poti ist ok und danke für die Rückmeldung.
Sollten später noch Störungen auftreten, kannst du auch einen Optokoppler zwischen Arduino und BW setzen. Da hast du mehr Möglichkeiten mit der Entstörung der Leitung.