Forum: Mikrocontroller und Digitale Elektronik Schaltung falsch oder zu sensibel?


von Matthias (Gast)


Lesenswert?

Hallo,

habe nach diesem Beispiel 
http://www.arduino-tutor.de/digitaler-input-output/ mit positiver Logik 
(also 10k Widerstand nach Masse) eine Schaltung aufgebaut, Eingang ist 
PB3. uC ist ein Attiny85, der per Interrupt aus dem Schlaf geweckt wird 
und der Taster ist in meinem Fall ein Öffner.
Schaltung funktioniert auch einwandfrei, wenn Öffner betätigt wird.
Allerdings wird der Interrupt öfter auch ausgelöst, wenn sich jemand der 
Schaltung nur nähert aber der Öffner NICHT betätigt wird. Öffner ist 
ausgelagert und mit ca. 3m Kabel mit der Schaltung verbunden.
Wo ist der Fehler und wie kann ich das abstellen?

Danke für alle Antworten

Matthias

von WebDeveloper (Gast)


Lesenswert?

Ein kleiner Kondensator (10nF) parallel zum Taster könnte helfen.

von Klaus (Gast)


Lesenswert?

Schaltung ist falsch. Da ist ein ino drin.

von HildeK (Gast)


Lesenswert?

µC ausreichend geblockt?
Unbenutzte Pins auf festem Potential?
Kein Wackelkontakt bei der Verkabelung?
Schalter in Ordnung?
Eventuell helfen 10nF parallel zum Schalter, aber nahe am µC.
Warum Öffner? Zieht dauerhaft Strom durch den 10k, der zudem auch etwas 
kleiner sein dürfte. Dann könntest du den µC auch ohne Schlafen 
betreiben und den Eingang abfragen mit ausreichender Entprellung.

von Wolfgang (Gast)


Lesenswert?

Matthias schrieb:
> Wo ist der Fehler und wie kann ich das abstellen?

Vielleicht sind die Kontakte etwas korrodiert, weil der Strom durch den 
Schalter zu klein ist.

von dion (Gast)


Lesenswert?

Matthias schrieb:
> Allerdings wird der Interrupt öfter auch ausgelöst, wenn sich jemand der
> Schaltung nur nähert aber der Öffner NICHT betätigt wird. Öffner ist

Die Erklärung von negativer und positiver Logik auf der verlinkten Seite 
ist auch recht wackelig.

von Conny G. (conny_g)


Lesenswert?

Das lange Kabel ist eine Antenne und generiert kleine Spannungsspitzen 
auf dem Kabel, die ausreichen den AVR aufzuwecken und den Interrupt 
auszulösen.
Du könntest mit einem Kondensator entstören, d.h. mit dem verlängerst Du 
die Zeit bis sich die Spannung am Pin des AVR verändert, weil der 
Kondensator eine Auf-/Entladekurve hat.
Durch diese Zeitverzögerung verteilst Du die "Energie" einer Störung auf 
mehr Zeit und die Spannung am Pin des AVR über-/unterschreitet nicht die 
Schaltschwelle bei einer ganz kleinen Energie, die diese Störungen 
üblicherweise haben.

Im Prinzip kannst Du das ganz wunderbar kombinieren mit einem 
Entprellkondensator:
https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster
Der sorgt auch einfach dafür, dass ein Tastendruck erst nach einer 
gewissen Dauer (50-100ms oder so) wahrgenommen wird, bis dahin 
"schluckt" der Kondensator den Tastendruck und unterdrückt damit auch 
kleine Spannungspitzen, die anderswo herkommen als vom Prellen des 
Tasters.
Eine Störung hat nicht so viel Energie, dass sie den Kondensator 
aufladen könnte.

Ansonsten finde ich das mit dem Öffner auch unschön. Du legst den AVR 
schlafen um Energie zu sparen, verbrennst aber dann doch Energie durch 
den ständigen Strom durch den geschlossenen Schalter.

von Matthias (Gast)


Lesenswert?

Danke für die Antworten
Das mit der Antenne und den kleinen Spannungsspitzen erscheint mir 
einleuchtend, denn ich hatte die Schaltung vorher schon mit negativer 
Logik aufgebaut und hatte den selben Effekt.
Zur Erklärung: ich will eine Rezeptionsklingel mit einem optischen 
Signal erweitern. Dazu hatte ich zuerst so einen ähnlichen Mikroschalter 
https://www.conrad.de/de/mikroschalter-250-vac-6-a-1-x-ein-ein-cherry-switches-db1c-b1sc-tastend-1-st-703791.html?gclid=CIyjkrvw1skCFcaVGwod_7gONA&insert_kz=VQ&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL!222!3!48256884177!!!g!!&ef_id=VmxdnAAAAPoDlU26:20151212174708:s 
in die Klingel eingebaut und die negative Logik/Schliesser verwendet. 
Hat aber den Klingelklöppel zu sehr beeinträchtigt und nicht mehr 
zuverlässig mechanisch geklingelt - zudem trat o.g. elektronisches 
Geisterklingeln auf.
Habe dann den Klingelfuss neu gebaut, den Klöppel isoliert gelagert und 
ihn in nicht betätigter Stellung mit Magnet fixiert - so fungiert der 
Klingelfuss mit Klöppel als Öffner. Ausserdem ist so die Zeit länger, 
die der Klöppel unterwegs ist, als der Bruchteil einer Sekunde, in der 
er an die Glocke schlägt.
Prinzipiell ist es kein Problem, wieder auf negative Logik umzubauen. 
Allerdings denke ich nicht, dass der kurze Kontakt Klöppel/Glocke 
ausreicht, den Interrupt auszulösen und mit Kondensator schon gar nicht.

von Simpel (Gast)


Lesenswert?

"Habe dann den Klingelfuss neu gebaut, den Klöppel isoliert gelagert und
ihn in nicht betätigter Stellung mit Magnet fixiert - so fungiert der
Klingelfuss mit Klöppel als Öffner."

Und das Ganze dann an nen µC... :-D

You made my day...!

von Conny G. (conny_g)


Lesenswert?

Wenn Du keinen Strom sparen musst, brauchst Du den AVR nicht schlafen 
legen und das mit dem Öffner ist auch kein Problem.
Nur wenn Du den AVR mit Batterie betreiben möchtest und ihn deshalb 
schlafen legst, dann ist es nicht sinnvoll mit dem Öffner zu arbeiten.

von Matthias (Gast)


Lesenswert?

Simpel schrieb:
> Und das Ganze dann an nen µC... :-D
>
> You made my day...!

Äusserst konstruktiver Beitrag - danke dafür


Conny G. schrieb:
> Wenn Du keinen Strom sparen musst, brauchst Du den AVR nicht schlafen
> legen und das mit dem Öffner ist auch kein Problem.

Das Schlafen legen ist/war ja nur ein Überbleibsel der ursprünglichen 
Schliesser Version.
Werde auch wieder auf Schliesser umbauen, die Schaltung näher an der 
Glocke positionieren und mit einem geschirmten Kabel verbinden.
Wenn dann immer noch Geisterläuten, werde ich den Kondensator testen und 
hoffen, dass die minimale Kontaktzeit Klöppel/Glocke ausreicht, den 
Interrupt auszulösen.
Gibt es eigentlich Angaben, wie lange eine Pegeländerung anstehen muss, 
um den Interrupt auszulösen?
Oder wäre es besser, den Attiny85 mit 8MHz laufen zu lassen und den 
Eingangspin permanent im Loop mit digitalRead abzufragen?

von Harald W. (wilhelms)


Lesenswert?

Simpel schrieb:

> "Habe dann den Klingelfuss neu gebaut, den Klöppel isoliert gelagert und
> ihn in nicht betätigter Stellung mit Magnet fixiert - so fungiert der
> Klingelfuss mit Klöppel als Öffner."

Dann ist es kein Wunder, das Du Störungen hast. Die Verbindung
ist einfach zu unsicher. Vielleicht könntest Du einen kleinen
Magnet am Klöppel oder inder Nähe anbringen und als Kontakt
einen Reedkontakt verwenden.

von Conny G. (conny_g)


Lesenswert?

Matthias schrieb:
> Werde auch wieder auf Schliesser umbauen, die Schaltung näher an der
> Glocke positionieren und mit einem geschirmten Kabel verbinden.

Ein geschirmtes Kabel hilft, Schirm an Masse. Ich habe mal einen 
Touch-Schalter selber gebaut mit einem 1,5m Kabel die Sensorfläche 
entfernt. Das reagiert auch auf Annäherung ans Kabel oder auf das 
Einschalten der Espressomaschine, d.h. durch das Einschalten gab es 
einen Impuls auf dem Kabel, der sie gleich wieder ausschaltete :-) 
Schirm auf Masse und es hat funktioniert.

> Wenn dann immer noch Geisterläuten, werde ich den Kondensator testen und
> hoffen, dass die minimale Kontaktzeit Klöppel/Glocke ausreicht, den
> Interrupt auszulösen.
> Gibt es eigentlich Angaben, wie lange eine Pegeländerung anstehen muss,
> um den Interrupt auszulösen?

Das steht im Datenblatt des µC. Habe hier gerade ein Datenblatt eines 
Attiny45 rumfliegen, wenn ich das Diagramm in der Sektion "Interrupts" 
richtig interpretiere braucht es gerade mal 6 Taktzyklen um den Int 
auszulösen und 3 um den Pin Change zu erkennen.
Das ist schnell, das sind nur µs.
Allerdings kommt es darauf an, wielange der Impuls vom Klöppel dauert, 
ob Du einen vernünftigen Wert für den Kondensator finden kannst, damit 
das nicht weggeschluckt wird.
Ohne Kondensator müsste das klappen, aber das prellt und sollte dringend 
entprellt werden, sonst hast Du immer ein paar Impulse davon.

> Oder wäre es besser, den Attiny85 mit 8MHz laufen zu lassen und den
> Eingangspin permanent im Loop mit digitalRead abzufragen?

Das ändert es nicht, Du brauchst ja auch eine Zeit in der Schleife 
wieder bei der Pinabfrage zu sein, das ist eher weniger gründlich als 
der Interrupt. Auch abhängig von der Dauer des Impulses vom Klöppel.

Wenn Du ein Oszilloskop hast könntest Du Dir den Signalverlauf mal 
ansehen. Das wäre sehr hilfreich das genauer zu wissen, sonst musst Du 
Wissen mit Experimentieren ersetzen.
Oder Du zählst die Serie der Impulse mit ihrer Dauer und Pause auf dem 
Attiny mit und gibst es Dir danach über die serielle Schnittstelle aus.

Meine Vermutung wäre, dass der Impuls des Klöppels gar nicht so kurz ist 
wie man meint. Millisekunden wären ja schon 1.000 Mikrosekunden.... für 
einen µC eine Ewigkeit :-)

von Matthias (Gast)


Lesenswert?

Danke für Deine ausführlichen Antworten

Conny G. schrieb:
> sonst musst Du
> Wissen mit Experimentieren ersetzen

So wird's wohl werden, aber es steht ja der Weihnachtsurlaub an

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.