Thema Störfilter.
Ich plane die Beleuchtung in unserem Neubau komplette mit Relais zu Schalten.
Die Lichtschalter werden hierbei mit konventioneller Verkabelung (NYM 1,5mm²) an einem Eingangspin an meinem Arduino aufgelegt. Ein Ausgangspin schaltet dann das Relais.
Ein Testaufbau hat gezeigt, dass der Eingangspin ab und zu Events aufgrund von Störsignalen auslöst. (z.b. sobald man einen Verbraucher in eine nahe gelegenen Steckdose steckt).
Um die Störsignale zu minimieren habe ich bereits einige Hardwarevorkehrungen getroffen (10kOhm pullup widerstand, 100nF Kondensator parallel zur Schalterverkabelung).
Dadurch wurden die Störsignale auch deutlich reduziert jedoch treten sie weiterhin ab und zu mal auf.
Meine Frage wie kann man programmiertechnisch entgegenwirken?
Mit Watchdog funktioniert das ganze zwar (1sek abwarten ob Eingangspin on bleibt erst dann Ausgangspin auf on). Jedoch ist eine Sekunde schon eine relativ lange Zeit beim Licht einschalten :(.
Ein Störsignal tritt meist nur ein paar Millisekunden auf. Hat daher jemand eine Idee was man nehmen könnte um den Eingangspin z.b. erst 250-500ms aktiv zu haben bevor er ein Event auslöst?
Vielen Dank im Voraus!
define di_lamp DOIF ([Taster:"on"])(set lamp on)
attr di_lamp wait 0.5
attr di_lamp do always
Falls noch keine Kabel lieen würde ich über I-Y-ST-Y Kabel nachdenken. am besten 0,8er, das macht sich in Schaltern einfacher.
Vorteil ist hier der vorhandene Schirm der vor Störgrößen schützt.
Ich habe so 2016 den ganzen Neubau verkabelt.
Alternativ kann man auch versuchen die Eingänge des Arduino besser zu entprellen: https://www.arduino.cc/en/Tutorial/Debounce
Zitat von: r00t2 am 14 August 2018, 16:38:47
Alternativ kann man auch versuchen die Eingänge des Arduino besser zu entprellen: https://www.arduino.cc/en/Tutorial/Debounce
Alternativ oder zusätzlich! :-)
meine RPI GPIOs haben alle den debounce aktiviert.
Vielen Dank für die Hinweise.
Zitatdefine di_lamp DOIF ([Taster:"on"])(set lamp on)
attr di_lamp wait 0.5
attr di_lamp do always
mit wait hatte ich auch schon probiert aber hier werden keine kurzzeitigen Events herausgefiltert. Wenn das kurzzeitige "Störevent" eintritt wird einfach nur 0.5 sec gewartet bis die Lampe geschalten wird.
Es wird aber nicht gewartet ob das Event ([Taster:"on"]) 0.5sec aktiv ist bevor die Lampe geschalten wird.
ZitatAlternativ kann man auch versuchen die Eingänge des Arduino besser zu entprellen: https://www.arduino.cc/en/Tutorial/Debounce
Unter Entprellung/Debouncing hab ich verstanden dass ein Event ausgeführt wird und danach erstmal ZeitX abgewartet wird bis das nächste Event eintreten darf. Ich möchte allerdings gar nicht erst das dass Event unter bestimmten Umständen eintritt.
ZitatFalls noch keine Kabel lieen würde ich über I-Y-ST-Y Kabel nachdenken. am besten 0,8er, das macht sich in Schaltern einfacher.
Vorteil ist hier der vorhandene Schirm der vor Störgrößen schützt.
Ich habe so 2016 den ganzen Neubau verkabelt.
Habe ich tatsächlich auch schon überlegt. Mich schreckt dabei nur ab das man nie wieder auf eine konventionelle Schaltung zurückschwenken kann. Wie zufrieden bist du? Sind bei dir alle Lichtkreise über Relais und GPIO Pins gesteuert?