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":
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?
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.
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.
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
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.
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.
Das ist ein Schaltplan. Und normalerweise sind in einem Schaltplan alle Linien rechtwinklig. Oder bestenfalls bei Busauskopplungen mal kurz mit 45° verlegt.
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.
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.
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
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.
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
1
Heinz R. schrieb im Beitrag #7607562:
2
> versuch mal diesen Monitor-Befehl ganzweg zu lassen - dann definiere den
3
> GPIO in der Weboberfläche - benenne das Device z.B taster - als Value
4
> klingel
5
>
6
> Dort kannst Du dann direkt Entprellzeit einstellen, auch den internen
7
> Pull-Up aktivieren
8
>
9
> Der Code sieht dann ungefähr so aus - ich müsste selber nachsehen:
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
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.