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?
