Moin :)
Nach langer Zeit möchte ich mich wieder etwas mit dem Thema Hardware/
Elektronik beschäftigen.
Mein erstes Projekt soll eine Erkennung von einem Betätigen einer
herkömmlichen, analogen Klingel mit einem ESP8266 sein.
Ich habe das aktuell auf einem Breadboard aufgebaut und nutze als
Software ESPeasy.
Grundsätzlich funktioniert der Aufbau auch. Layout grob im Anhang (in
der Software habe ich nicht alle Komponenten 100%ig gefunden, daher
bitte etwas Nachsicht).
Als Code in ESPeasy nutze ich folgendes als "Rule Set":
Die SendToHTTP ist meine fhem Installation.
Ich habe als Versuche auch andere Eingänge und andere
Pull-Down-Widerstände genutzt, einen Unterschied macht es nicht.
Er erkennt zuverlässig die Betätigung der Klingel.
Aber es gibt auch fehlerhafte (falsch positive) Erkennungen (keine
Betätigung, trotzdem Eingang als High erkannt).
Kann mir jemand meinen Fehler erklären oder mir Tipps zum Suchen geben?
Danke und Gruß
Carsten
Die Schaltung ist OK, auf der leitung von pin4 zu D7 fängst du dir
elektromagnetische Störungen ein. Dagegen verringerst du die
leitungslänge und die zwischen Signal und GND eingeschlossene fläche,
bringst an D7 direkt einen kleinen keramikkondensator von 1nF an und
sorgst in der Software für eine entprellung des Eingangspin.
Vielen Dank!
Das mit dem Keramikkondensator werde ich testen (muss erst Teile
besorgen).
Flip B. schrieb:> sorgst in der Software für eine entprellung des Eingangspin.
Was genau würdest du darunter verstehen? Sowas wie eine Art
programmierten, zeitlichen Mindestabstand zwischen 2 Auslösungen?
Aktuell ist ja das Problem, dass "dauerhaft" die Fehler kommen, also
nicht nur direkt nach einem echten Signal, sondern grob geschätzt alle 1
Minute, aber unregelmäßig.
Steve van de Grens schrieb:> Statt 12k würde ich außerdem auf 2,2k runter gehen.
Ganz genau weiß ich es nicht mehr, aber grob habe ich 5 oder 6
Widerstände zwischen 1 kΩ und 25 kΩ getestet. 12 kΩ war nur der
berechnete Wert.
Aber ich werde dann mal eher auf 2,2 kΩ wieder runter gehen.
Ich überlege schon ein Oszilloskop zu kaufen um den Fehler "sehen" zu
können :D
Danke und Gruß
Carsten
Carsten R. schrieb:> Ich überlege schon ein Oszilloskop zu kaufen um den> Fehler "sehen" zu können :D
Wenn du Pech hast siehst du damit gar nichts, weil die Impulse für das
Gerät zu kurz sind und dessen Kapazität sie auch noch bedämpft.
Carsten R. schrieb:> Er erkennt zuverlässig die Betätigung der Klingel.
Gut.
> Aber es gibt auch fehlerhafte (falsch positive) Erkennungen (keine> Betätigung, trotzdem Eingang als High erkannt).
Herzlich willkommen in der Welt der Elektromagnetischen Verträglichkeit,
wo dir jeder Schaltvorgang einen kurzen Spike auf alle deine Leitungen
legen kann.
Dir fehlt also eine sinnvolle Entprellung des Eingangs. Wie lange wird
eine Türklingel gedrückt? Sagen wir mal mindestens 100ms. Also solltest
du alles, was weniger als 100ms anliegt, in der Software einfach
ignorieren.
Carsten R. schrieb:> Aktuell ist ja das Problem, dass "dauerhaft" die Fehler kommen, also> nicht nur direkt nach einem echten Signal, sondern grob geschätzt alle 1> Minute, aber unregelmäßig.
Dein Aufbau ist aber schon arg störempfindlich...
Carsten R. schrieb:> Layout grob im Anhang
Das ist ein Schaltplan. Und normalerweise sind in einem Schaltplan alle
Linien rechtwinklig. Oder bestenfalls bei Busauskopplungen mal kurz mit
45° verlegt.
Lothar M. schrieb:> Dein Aufbau ist aber schon arg störempfindlich...
Ich bin für jeden Verbesserungsvorschlag offen ;)
Wie ich eingangs schrieb, bin ich quasi Anfänger. Ich habe mir einiges
dazu angelesen und für meine Bedürfnisse angepasst. Das ist auf Anhieb
grundsätzlich funktioniert, finde ich für mich gut.
Lothar M. schrieb:> Carsten R. schrieb:>> Layout grob im Anhang> Das ist ein Schaltplan. Und normalerweise sind in einem Schaltplan alle> Linien rechtwinklig. Oder bestenfalls bei Busauskopplungen mal kurz mit> 45° verlegt.
Ja, OK Schaltplan. :)
Da ich das nur als Hobby betreibe und mich gerade erst wieder einfuchse,
habe ich nach einer einfachen Möglichkeit gefunden, damit ich euch bei
meiner Hilfeanfrage möglichst viele Informationen geben kann, den
Schaltplan aufzuzeichnen und bin auf TinyCAD gekommen.
Das ist nicht perfekt, aber ich hatte gehofft meinen Schaltplan damit
zumindest erkennbar darstellen zu können.
Danke und Gruß
Carsten
Carsten R. schrieb:> Das ist nicht perfekt, aber ich hatte gehofft meinen Schaltplan damit> zumindest erkennbar darstellen zu können.
Hast du, ich finde ihn gut genug.
Flip B. schrieb:> Die Schaltung ist OK, auf der leitung von pin4 zu D7 fängst du dir> elektromagnetische Störungen ein. Dagegen verringerst du die> leitungslänge und die zwischen Signal und GND eingeschlossene fläche,> bringst an D7 direkt einen kleinen keramikkondensator von 1nF an und> sorgst in der Software für eine entprellung des Eingangspin.
Nur damit ich das nicht falsch verstehe.
Den 1 nF Keramikkondensator kommt zwischen D7 und Masse?
versuch mal diesen Monitor-Befehl ganzweg zu lassen - dann definiere den
GPIO in der Weboberfläche - benenne das Device z.B taster - als Value
klingel
Dort kannst Du dann direkt Entprellzeit einstellen, auch den internen
Pull-Up aktivieren
Der Code sieht dann ungefähr so aus - ich müsste selber nachsehen:
on taster#klingel do
if [taster#klingel = 1
LogEntry,'%systime% - gpio,13 ist 1'
SendToHTTP,http://192.168.2.85:8087/api/setdevice=tuerklingel&action=1
endif
endon
Falls es nicht geht, ich schaue gerne heute abend nach dem genauen Code
Heinz R. schrieb:> versuch mal diesen Monitor-Befehl ganzweg zu lassen - dann definiere den> GPIO in der Weboberfläche - benenne das Device z.B taster - als Value> klingel>> Dort kannst Du dann direkt Entprellzeit einstellen, auch den internen> Pull-Up aktivieren>> Der Code sieht dann ungefähr so aus - ich müsste selber nachsehen:>> on taster#klingel do> if [taster#klingel = 1> LogEntry,'%systime% - gpio,13 ist 1'> SendToHTTP,http://192.168.2.85:8087/api/setdevice=tuerklingel&action=1> endif> endon>> Falls es nicht geht, ich schaue gerne heute abend nach dem genauen Code
Also ich habe es nicht einzeln getestet 🙈
Aber mit der Änderung des 1 nF Kondensators am D7 und dem neuen Code von
Heinz funktioniert es bis jetzt. Kein Fehlalarm mehr nach 5 Minuten.
Das mit dem Entprellen finde ich sehr sinnvoll, aber bei mir tauchten
die Fehlalarme ja dauerhaft mit Abständen von 1 bis 5 Minuten auf.
Das dürfte nicht mehr unter Entprellen fallen :D
Ich beobachte das jetzt noch mal ein paar Stunden und werde dann in den
Live-Betrieb an der echten Hausklingel gehen.
Danke und Gruß
Carsten
Edit:
So, jetzt mache ich keinen neuen Beitrag mehr auf.
Ich denke ich habe den, hoffentlich letzten, Fehler gefunden.
Es war die Konfiguration des dummy-device. Bei "Switch Button Type" muss
"normal Switch" stehen.
Danke und Gruß
Carsten
~~~~~~~~~~~~~~~~~~~~~~~~~
Heinz R. schrieb:> versuch mal diesen Monitor-Befehl ganzweg zu lassen - dann definiere den> GPIO in der Weboberfläche - benenne das Device z.B taster - als Value> klingel>> Dort kannst Du dann direkt Entprellzeit einstellen, auch den internen> Pull-Up aktivieren>> Der Code sieht dann ungefähr so aus - ich müsste selber nachsehen:>> on taster#klingel do> if [taster#klingel = 1> LogEntry,'%systime% - gpio,13 ist 1'> SendToHTTP,http://192.168.2.85:8087/api/setdevice=tuerklingel&action=1> endif> endon>> Falls es nicht geht, ich schaue gerne heute abend nach dem genauen Code
Hmm, also das schien nur auf den ersten Versuch erfolgreich.
Mein Code sieht jetzt wie folgt aus:
Mit dem folgenden Dummy-Device:
Device: Switch input - Switch
Name: klingel
enabled: True
GPIO: GPIO-13 (D7)
Switch Type: Switch
Switch Button Type: Push Button Active High
De-bounce (ms): 50
Values: State
Jetzt ist das Verhalten, dass bei jedem "Klingeln" ein Statuswechsel
erfolgt.
1. Klingeln -> High erkannt
2. Klingeln -> Low erkannt
usw.
Das GPIO2,0/1 habe ich eingefügt, um direkt auf der Onboard-LED das
sehen zu können.
Hat noch jemand eine Idee?
--------------
Die Fehlalarme haben bisher komplett aufgehört. Ich denke das hier am
ehesten der 1 nF Kondensator geholfen hat.
Danke und Gruß
Carsten
Du darfst hier nicht "Push Button" verwenden - nimm "normal Switch"
Push Button wäre ein Taster der toggelt - deshalb das Fehlverhalten bei
Dir
Und setz mal die debounce time noch weiter hoch, es drückt ja niemand
den Klingeltaster nur 50 ms
Carsten R. schrieb:> Das mit dem Entprellen finde ich sehr sinnvoll, aber bei mir tauchten> die Fehlalarme ja dauerhaft mit Abständen von 1 bis 5 Minuten auf.> Das dürfte nicht mehr unter Entprellen fallen :D
doch, wenn da halt kurze Impulse auf der Leitung sind kann das schon
sein
Mit "debounce time" z.B. 300ms sagst Du dass das Signal mindestens 300
mS high sein muss, sonst wird es ignoriert
Heinz R. schrieb:> doch, wenn da halt kurze Impulse auf der Leitung sind kann das schon> sein> Mit "debounce time" z.B. 300ms sagst Du dass das Signal mindestens 300> mS high sein muss, sonst wird es ignoriert
OK, danke für die Erklärung!
Ich hatte das falsch verstanden. Dachte die Zeit in ms müsste zwischen
zwei Events liegen, ansonsten würde das zweit ignoriert.