Hallo,
ich kämpfe gerade mit einem kleinen Projekt, und die beim Raspberry dank der GPIO's prinzipell vorhandene Signalauswertung erweist sich als problematischer als erwartet....
Ich habe zwei Fensterkontakte (Schliesser), das öffnen und schliessen soll im Raspberry protokolliert werden.
Problem scheint zu sein, das diese Schalter 8m vom Raspberry entfernt sind und diese Kabel zum teil Parallel zu einem Stromkabel verlaufen. das läßt sich auch nicht ändern (Leerrohr).
Beim betätigen von zwei verschiedenen Lichtschaltern werden "Signal" am Raspberry protokolliert, obwohl kein fenster geöffnte oder geschlossen wurde.
Habe die GPIO's schon mit Pullup (und auch als Pulldown) -Widerstände (10k und auch 2.2k) versucht gene Fremdimpulse zu schützen, ebenso mit Kondensatoren zwischen dem Schalter (nah am GPIO) und zwischen Plus und Minus am GPIO. Bringt Besserung, aber noch immer kommen Störimpulse durch.
Anbei eine Skizze (Pulldown-Variante).
Was kann man sonst noch tun?
Überlege schon, über die Schalter ein Relais zu schalten, welches dann nur echte Schalterbetätigungen an GPIO weiterleitet (und keine Störimpulse).
Oder kann ich eine "Logic" per Software hinterlegen, welche solche Störimpulse erkennt und "ausfiltert"?
Erkennung erfolgt über Interruptsteuerung, sieht aktuell so aus:
...
GPIO.add_event_detect(Tur_01, GPIO.BOTH, callback=intTuer_01, bouncetime=100)
...
Sollte ich von "GPIO.BOTH" umschwenken auf zwei getrennte Erkennungen der Fensterstellung (HIGH und LOW)? Also weg von der Flankenerkennung auf statische Erkennung des anliegenden Signals? Welche ich dann zur Sicherheit nach 2s nochmals abfragen kann?
Oder läßt sich das auch mit "GPIO.BOTH" per Software besser erkennen/lösen?
markus