Forum: Mikrocontroller und Digitale Elektronik AVR Taster Software Entprellung/Entstörung


von Voltage (Gast)


Lesenswert?

Hallo.

Kann man bei einem AVR eine Entprellung und Entstörung wie folgt machen:

Bei einer steigenden Flanke wird ein Timer gestartet. Erst nach Ablauf 
von 100 ms wir der Wert akzeptiert.
Kann man damit auch die 50 Hz Einkopplung aus dem Netz eliminieren, die 
sonst 50 mal pro Sekunde triggert?

von BlumentoPferde (Gast)


Lesenswert?

nein geht nicht, 100 mS sind 5x 50Hz, Timer und Netz laufen also 
synchron.

von Voltage (Gast)


Lesenswert?

Also müsste man 130 ms oder sowas nehmen?

von Tüll (Gast)


Lesenswert?

Meines Wissens sind 10ms grosszügig genug für Entprellung - für die 
meisten Schalter / Taster reichen 1ms - 2ms (aber ohne Garantie).

@Blume
Wieso geht das nicht mit 100ms? Ist doch eine halbe Schwingung, sollte 
also optimal sein?

von Tüll (Gast)


Lesenswert?

@Voltage

Wenn die Netzeinkopplung triggert solltest du das Problem wohl erst mal 
auf Hardwarebasis lösen (evt. Pull-up / Pull-down Widerstände?)

von Hannes L. (hannes)


Lesenswert?

Voltage schrieb:
> Hallo.
>
> Kann man bei einem AVR eine Entprellung und Entstörung wie folgt machen:
>
> Bei einer steigenden Flanke wird ein Timer gestartet.

Nö, Unfug, der Timer wird bereits beim AVR-Start gestartet und liest 
alle etwa 4 bis 30 ms ein komplettes Byte mit bis zu 8 Tasten ein.

> Erst nach Ablauf
> von 100 ms wir der Wert akzeptiert.

Nööö, erst wenn 4 Runden hintereinander der Tastenzustand als (gegenüber 
gemerktem und als gültig erklärten Zustand) verändert erkannt wurde, 
erreicht der Tastendruckzähler seinen Endwert, was dazu führt, dass der 
neue Tastenzustand übernommen (gemerkt und für gültig erklärt) wird. Als 
Zugabe gibt es noch Flankenerkennung (Taste wurde irgendwann mal 
gedrückt, aber noch nicht bearbeitet) für bis zu 8 Tasten gleichzeitig 
und mit kleiner Erweiterung auch eine Repeatfunktion für ausgewählte 
Tasten.

Falls Dich das interessiert, dann suche mal in der Codesammlung nach 
"Bulletproof".

> Kann man damit auch die 50 Hz Einkopplung aus dem Netz eliminieren, die
> sonst 50 mal pro Sekunde triggert?

Man muss die Tasten ja nicht gerade mit exakt 50 Hz abtasten. Obwohl das 
bei mir (mit 20 ms) noch nie zu Fehlauslösungen geführt hat, obwohl ich 
nur die AVR-internen Pullup-Widerstände benutze. Wenn bei Dir das Netz 
einstreut, dann machst Du was Anderes falsch.

...

von Hannes L. (hannes)


Lesenswert?

BlumentoPferde schrieb:
> nein geht nicht, 100 mS sind 5x 50Hz,

Ich dachte immer, 100 Millisiemens sind 10 Ohm...

> Timer und Netz laufen also
> synchron.

...

von Peter D. (peda)


Lesenswert?

Voltage schrieb:
> Bei einer steigenden Flanke wird ein Timer gestartet. Erst nach Ablauf
> von 100 ms wir der Wert akzeptiert.

Es hat sich bewährt, den Timer durchlaufen zu lassen, dann kann er noch 
andere Sachen machen.
Auch entprellt man bequemer Weise gleich den ganzen Port, da oftmals 
eine Taste nicht reicht.
Und wenn man auch das Loslassen entprellt, wird das noch sicherer und 
die Software einfacher (keine Fallunterscheidung).

Beitrag "Universelle Tastenabfrage"


Peter

von Wolfgang (Gast)


Lesenswert?

Wohnst Du im Trafohäuschen? Wenn EMV trotz Pull-up-Widerstand ein 
Problem ist, schalte es so:

Taster gegen Masse, anderer Anschluß über 100R an 
Schmitt-Trigger-Eingang (HC11). Außerdem dort 1kR nach Vcc und 10kR mit 
10nF nach GND. Schmitt-Trigger-Ausgang an µC. Schluß ist mit Störungen! 
Leider ist dann auch die Stromaufnahme der Schaltung enorm: 5mA extra 
pro Taster.

Entprellung machste dann in Polling. Wenn bei z.B. 280Hz Abtastung 7 
hintereinanderliegende Zustände gleich sind, wird Deine Tastervariable 
gesetzt.

Gruß - Wolfgang

von Peter D. (peda)


Lesenswert?

Voltage schrieb:
> Kann man damit auch die 50 Hz Einkopplung aus dem Netz eliminieren, die
> sonst 50 mal pro Sekunde triggert?

Dann hast Du einen Kurzschluß vom Taster zur 230V-Leitung, den mußt Du 
auftrennen.

Die 50Hz sind sinus, die können sich nicht einkoppeln.
Was da stört, sind Schaltvorgänge, die erzeugen HF.


Peter

von Tüll (Gast)


Lesenswert?

Wolfgang, nach dem Schmitt Trigger ist doch keine Entprellung mehr 
nötig?

von BlumentoPferde (Gast)


Lesenswert?

Hannes Lux schrieb:
> BlumentoPferde schrieb:
>> nein geht nicht, 100 mS sind 5x 50Hz,
>
> Ich dachte immer, 100 Millisiemens sind 10 Ohm...
>
>> Timer und Netz laufen also
>> synchron.
>
> ...

komm Ich jetzt ins Fernsehen? :-)

von Wolfgang (Gast)


Lesenswert?

Im Prinzip nein, aber...

Wer will eigentlich garantieren, daß es dann keinesfalls mehr prellen 
kann? Sieh eine Entprellung in Software vor (kleine Kodierübung) und 
freue Dich dann, falls sie doch nicht in Aktion treten müssen sollte. 
Der Speicherverbrauch hält sich in Grenzen und auch die Prozessorlast 
ist zu vernachlässigen.

Gruß - Wolfgang

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.