Wemos d1 Schalter schaltet durch Stromspitzen

Hi,
Ich habe mir eine Klingel mit einem wemos d1 gebaut. Sehr simpel: eine analoge Klingel ist über die Pins angeschlossen. Wenn der Schaltkreis durch das betätigen der Klingel geschlossen wird, reagierte ich darauf und schicke eine mqtt Nachricht an mein smart Home. Dort wird der gong ausgelöst.
Der wemos selbst ist per USB an einer Steckdose angeschlossen.

Allerdings löst das Programm auch aus, wenn ich einen Rollläden bestätige der auf der gleichen Phase liegt.

Es muß also so sein, dass es eine Art Stromspitze gibt die dazu führt, dass der wemos denkt, die Klingel wurde betätigt...

Habe ans uns Kabel schon ferrit klammern angebracht, seist ohne Erfolg. Habt ihr noch einen Tipp für mich?

Vorschlag: 20 mA Stromschleife für die Klingelleitung.

Gruß Tommy

Kannst du mir das genauer beschreiben?

Grüße

Eine Klingel oder ein Klingeltaster, an den sonst nichts angeschlossen ist?
Vermutlich der Taster, mit ca 2 * 20m Zuleitung, ungeschirmt. Mit einem ziemlich hochohmigen Pulldown-Widerstand.

Mach den mal so klein, dass das Signal erst HIGH wird, wenn "richtig viel" Strom beim Betätigen fließt ( Größenordnung 3,3V / 10 mA = 330 Ohm )

Für @Tommy56 s Stromschleife bräuchtest du eine Stromquelle die dauernd 20 mA liefert. An einem 150 Ohm Widerstand kann der Arduino dann 3V erkennen, außer der Klingeltaster bildet einen Kurzschluss über dem Widerstand. Etwas übertriebener Aufwand, finde ich. (Oder er meint was anderes)

Ich würde den Wemos D1 über einen Optokoppler ansteuern.
Grüße Uwe

Optokoppler wurde ja schon genannt, ein einfacher Transistor (NPN) würde da schon reichen.

Nö. Du brauchst nur eine 3,3V Speisung wenn der Taster geschlossen ist und einen niederohmigen Pulldown (ca. 150Ohm), so dass bei geschlossenen Taster 20 mA fließen und 3,3V am Eingang anliegen. Bei geöffnetem Taster ist der Eingang dann so niederohmig nach GND abgeschlossen, dass es Störungen schwer fallen dürfte, da Hight auszulösen.

Gruß Tommy

OK, das war auch meine Idee. (300 statt 150 Ohm ist kein prinzipieller Unterschied, wenn man es mit Pulldown im 10k - Bereich vergleicht.)

Ja, das macht wenig Unterschied. Wir meinten also beide das Gleiche.

Gruß Tommy

Ich habe jetzt mal den analogen pin A0 des wemos für die Klingel verwenden. Damit bekomme ich beim Klingeln eine 1024 zurück, beim Rolladen-Runterfahren nicht. So funktioniert es erstmal... Weiß aber nicht ob die Lösung optimal ist :grin:

analogRead lädt einen kleinen Kondensator auf, der dann in ca. 100 µs auf 10 Stufen abgetastet wird. digitalRead ist wesentlich empfindlicher und schneller.
Da dein Arduino sonst nichts zu tun hat, kannst du gerne (anstelle eines kleineren Widerstands) die analogRead - Methode verwenden.

Optimal ist in der Regel, Hardware durch Software zu ersetzen, die immer noch bei weitem schnell genug ist. Ob der ADC ungenutzt da ist, oder du auf einen extra PullDown- Widerstand verzichten kannst, ist deine Sache.

Nebenbei: vermutlich bekommst du 1023 zurück und beim Rolladen-Runterfahren gelegentlich einen Wert > 0. Wenn du klingelst während der Rolladen fährt, oder wenn der Klingeltaster verstaubt ist, sind es eventuell gelegentlich auch mal weniger als 1023
:slight_smile:

Danke für den Tipp. Wenn die Klingel mal nicht mehr tut weiß ich Bescheid :grin: dann frag ich einfach auf >1000 ab oder so

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.