Forum: Analoge Elektronik und Schaltungstechnik Taster entprellen, Dimensionierung der Teile


von Andreas (Gast)


Lesenswert?

Hi,
ich würde gerne die Taster an meinem Raspberry Pi mittels der hier 
vorgeschlagenen Schaltung entprellen: 
http://www.mikrocontroller.net/articles/Datei:RC_debouncer.png

Leider bin ich mir bei der Dimensionierung der Widerstände und des 
Kondensators etwas unsicher. Da die Betriebsspannung der GPIOs 3,3V ist, 
habe ich mal mit den angegebenen Formeln rumgerechnet. Allerdings ergibt 
das keinen Sinn. Unter der Annahme eines 100nF Kondensators und 10ms 
Prellzeit müsste R2 etwas 200KOhm sein, was mir schon sehr viel 
vorkommt. Der Knaller ist dann aber, dass R1+R2 deutlich kleiner ist, 
als R2, was heißt, R1 muss ein negativer Widerstand sein?! Lol... Was 
mache ich falsch? Oder hat vielleicht schon einer die Schaltung an den 
Pi gehängt und kann mir sagen, was gute Werte sind?

Danke

von Max H. (hartl192)


Lesenswert?

Andreas schrieb:
> habe ich mal mit den angegebenen Formeln rumgerechnet.
Welche Formel? Welche Werte hast du eingesetzt?

: Bearbeitet durch User
von Andreas (Gast)


Lesenswert?

Da ich R2 und R1+R2 ausgerechnet habe, dürfte sich die Frage erübrigen, 
welche Formel ich benutzt habe. Die eingesetzten Werte habe ich alle 
genannt.

von Max H. (hartl192)


Lesenswert?

Ich sehe hier nirgends eine Formel.

von Andreas (Gast)


Lesenswert?

Okay, sorry. Der Link war von der Schaltung, nicht vom Wiki. Hier: 
http://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster

von MaWin (Gast)


Lesenswert?

R1 muss so klein sein, daß der Taster seinen Mindeststrom laut 
Datenblatt bekommt, z.B. 1mA, also 3k3.

R2 ist mit 220k schon ok, obwohl ich glaube dass du simpel RC gerechnet 
hast und nicht korrekterweise die RC-Zeit zur Überwindung der minimalen 
Hysterese von ca. 0.33V, also 1/10 VCC, übrigens ist R2 unabhängig von 
der Betriebsspannung.

R1 sollte deutlich kleiner als R2 sein, damit Entprellung beim loslassen 
sich nicht gewaltig von der Entprellung beim Drücken unterscheidet.

Insgesamt stellt sich die Frage, warum bzw. ob man Taster überhaupt mit 
extra Hardware entprellen muss, wenn man sie von einem Prozessor 
auswerten lässt. Das kann auch Software tun.

von Andreas (Gast)


Lesenswert?

MaWin schrieb:
> übrigens ist R2 unabhängig von der Betriebsspannung.

die Betriebsspannung ist doch in der Formel U_0, oder etwa nicht? Welche 
Formel hast du benutzt?

von Peter D. (peda)


Lesenswert?

Vermutlich ist ein Pi völlig überlastet, wenn man im Systick einfach ne 
Entprelltask aufruft.

von Andreas (Gast)


Lesenswert?

Ich will einfach nicht mittels Software entprellen, da man dann immer 
Wartezeiten hat. Vor allem bei zB Drehgebern ist das eher schlecht, aber 
auch bei Tastern mag ich es nicht. Warum sollte ich das nicht auslagern 
dürfen? Und warum hinterfragt ihr meine Absichten, anstatt einfach meine 
Frage zu beantworten? Ist die Formel kaputt oder hab ich was falsch 
gemacht?

von Max H. (hartl192)


Lesenswert?

Andreas schrieb:
> Ich will einfach nicht mittels Software entprellen, da man dann
> immer Wartezeiten hat.
Nicht wenn man eine vernüntige SW-Entprellung hat.
> Und warum hinterfragt ihr meine Absichten,
> anstatt einfach meine Frage zu beantworten?
Du wärst nicht der Erste der ein Problem viel zu kompliziert lösen will.
> Ist die Formel kaputt oder
> hab ich was falsch gemacht?
Welche Werte hast du in die Formeln eingesetzt?

von MaWin (Gast)


Lesenswert?

Andreas schrieb:
> Ich will einfach nicht mittels Software entprellen, da man dann immer
> Wartezeiten hat. Vor allem bei zB Drehgebern ist das eher schlecht, aber
> auch bei Tastern mag ich es nicht.

Da hast du aber etwas grob falsch verstanden bzw. implementiert.

Software-Entprellung reagiert schneller als deine Hardwarelösung.

von TK (Gast)


Lesenswert?

Hallo Andreas,

bevor das hier noch untergeht - ein Taster, der NUR 10ms prellt, ist ja 
schon fast ein prellfreier Taster. Die Taster, die ich kenne (und auch 
im Einsatz habe) prellen gerne mal bis zu 150ms. Und genau das ist der 
Grund, wieso ich hauptsächlich eine softwareseitige Entprellung 
verwende. Die kann doch bei Tastern auf beispielsweise 250ms eingestellt 
sein - oder drückst Du 5x in der Sekunde auf den Taster (OK - für 
Dauerfeuer beim Joystick wäre das in Betracht zu ziehen, aber den gibt 
es ja heutzutage nicht mehr). Einfach ein Timerinterrupt mit 250ms 
auslösen, Tasterpegel einlesen - mit dem letzten Tasterpegel vergleichen 
- reagieren. Das braucht doch keine 20 Zyklen in der Auswertung.

Gruß
TK

von Peter II (Gast)


Lesenswert?

TK schrieb:
> Die Taster, die ich kenne (und auch
> im Einsatz habe) prellen gerne mal bis zu 150ms.

was sind das für Taster? Das ist ja schon fast die Zeit die der Mensch 
beim schnellen Tasten erreichen kann.

Also normal würde ich das auf jeden Fall nicht ansehen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

TK schrieb:
> Die Taster, die ich kenne (und auch im Einsatz habe) prellen gerne mal
> bis zu 150ms.
Welche sind das?

Nicht, dass ich die Dinger auch mal aus Versehen verwende:
150ms sind gerade mal 6 Hz und das sind gerade mal Triolen bei 120bpm.
Das ist leicht mit den Fingern zu schaffen...

: Bearbeitet durch Moderator
von Peter D. (peda)


Lesenswert?

Andreas schrieb:
> Ich will einfach nicht mittels Software entprellen, da man dann immer
> Wartezeiten hat.

Die Wartezeiten kommen durch das Multitasking des OS und nicht durch das 
Entprellen.
Für SW-Entprellung reichen 10ms völlig aus, das merkt keiner.
Die Tasten an den meisten Geräten im Haushalt muß man mindestens 300ms 
drücken.
Und durch Windows-PCs sind viele Benutzer schon auf 500ms konditioniert.

von Peter II (Gast)


Lesenswert?

Peter D. schrieb:
> Und durch Windows-PCs sind viele Benutzer schon auf 500ms konditioniert.

was willst du damit sagen? alle mir bekannten Windows-Systeme brauchen 
keine 500ms um auf einen Taste zu reagieren.

von Peter D. (peda)


Lesenswert?

Andreas schrieb:
> Der Knaller ist dann aber, dass R1+R2 deutlich kleiner ist,
> als R2, was heißt, R1 muss ein negativer Widerstand sein?!

Wie kommst Du darauf?
Die Flanken sind eben leicht unsymmetrisch, das stört doch nicht.
Wichtig ist aber, daß noch ein Schmitt-Trigger folgt, sonst kann es im 
Umschaltpunkt durch Welligkeit der VCC zu Mehrfachauslösungen kommen.

von Peter D. (peda)


Lesenswert?

Peter II schrieb:
> was willst du damit sagen? alle mir bekannten Windows-Systeme brauchen
> keine 500ms um auf einen Taste zu reagieren.

Die Zeit, die der Nutzer abwartet, eh er genervt auf die Tasten hämmert, 
weil keine sichtbare Reaktion erfolgt.
Die Gedenkzeiten liegen heutzutage aber selten an der 4-Kern CPU, 
sondern z.B. am Netzwerk oder den tausenden von Hintergrundtasks.

Philips-Geräte (TV, Rekorder) sind aber mit Abstand am langsamsten.

von TK (Gast)


Lesenswert?

An alle, die nach mir geantwortet und dazu noch Fragen haben:
Ich habe die 150ms bei Standard-Kurzhubtaster (Apem,Schurter) mit einem 
Oszi gemessen (Anordnung: VCC -> PullUp 4k7 oder 10k -> Mittelabgriff 
auf Port -> Taster -> GND. Wenn möglich kommt noch ein 100nF parallel 
zum Taster, war aber bei den Messungen nicht vorhanden). Daher benutze 
ich bei Anwendungen, die es erlauben, eine Entprellzeit von 200ms UND 
habe dann erst nach 400ms (1. Vergleich) einen Pegel, den ich weiter 
nutze (das gilt jetzt nur für Taster). Bei einem Drehencoder kommt das 
natürlich nicht in Frage. Und wenn es bei Tastern schneller gehen muss, 
dan reagiert man halt auf die erste, erkannte Flanke und setzt dann für 
eine Totzeit aus.

Gruß
TK

von Andreas (Gast)


Lesenswert?

TK schrieb:
> Bei einem Drehencoder kommt das
> natürlich nicht in Frage

Richtig. Auch bei meinen Tastern kann ich gut und gerne mal 100ms 
warten, bis der aufhört zu prellen. Deshalb vielleicht einfach nochmal 
kurz n Blick auf Schaltung und Formel:
http://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster

R2 = -0,1s / (10^(-7)F * ln(2V/3,3V))
   ~= 200kOhm

R1 = -0,1s / (10^(-7)F * ln(1 - 2V/3,3V)) - 200kOhm
      ~= 600kOhm

Mir kommt das einfach unrealistisch vor. Oben wurde auch noch gesagt, R1 
sollte deutlich kleiner sein, als R2

von TK (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Andreas,
1) Rechne noch mal nach. Da ist ein Kommafehler drin.
2) Die Formel stimmt nur für VCC=5V und nicht für 3V3
3) Du mußt ins Datenblatt des Herstellers des zu verwendenen ICs 
reinschauen!
Ich habe mal das DB von NXP angehängt. Da ist erst mal auf S4 zu lesen, 
dass die VCC zwar von 2.0V..6.0V gehen darf, aber Du benötigst auf S8 
die Hysterese. Und siehe da: die ist abh. von der VCC und noch viel 
schlimmer - auch von der Temperatur. Nehmen wir nur mal die typ. Werte 
für VCC=4.5V(5V) heraus mit V_T+ = 2.38V und V_T- mit 1.4V. Damit ergibt 
sich dann die folgende Formel:
Drücken des Tasters (=Entladen von C nur über R2 bis UNTERE 
Schaltschwelle erreicht ist)
R2 = -0.1s / (100e-9F x ln(V_T-/4.5V)) = 856k
Offener Taster (=Laden von C über R1+R2 bis OBERE Schaltschwelle 
erreicht ist)
R1 = -0.1s / (100e-9F x ln(1-V_T+/4.5V)) - R2 = 472k

Und jetzt spielen wir mal etwas mit den Umschaltpegeln bei min/max Temp.
Also nehmen wir mal die min. Hysteresewerte mit V_T+=1.7V und V_T-=0.9V.
Damit ergibt sich R2 = 621k / R1 = 1M4
bei max. Hystereswerte mit V_T+=3.15 und V_T-=2.0V ergibt sich:
R2 = 1M2, R1 = -369k (geht natürlich nicht => Entprelldauer von 100ms 
kann damit nicht erreicht werden (wird also überschritten) => Wahl von 
R1>0 ergibt eine Entprelldauer von t = -ln(1-V_T+/4.5V)x(R1+R2)x100e-9F 
>= 145ms

Jetzt stellen wir mal die Widerstände über alle Bereiche gegenüber:
621k < R2 < 1M2
1M4 > R1 > (0) / R1 muss im gedrückten Zustand für eine Strombegrenzung 
durch den Taster sorgen.
Fazit: Such dir eine Kombination R1 und R2 für eine Spannung und eine 
Temperatur heraus. Dann mußt Du immer den ausgewählten IC-Hersteller 
einsetzen. Ändert sich nur ein Parameter, dann stimmen die Berechnungen 
schon nicht mehr.

Daher ist zu überlegen, ob eine Software-Entprellung nicht doch Vorteile 
bietet. Die ist nämlich unabh. von Schaltpegeln, Temperaturen und 
Versorgungsspannung.

Gruß
TK

von m.n. (Gast)


Lesenswert?

TK schrieb:
> Daher ist zu überlegen, ob eine Software-Entprellung nicht doch Vorteile
> bietet. Die ist nämlich unabh. von Schaltpegeln, Temperaturen und
> Versorgungsspannung.

Mit Hardware geht das auch: 
Beitrag "Taster per Hardware entprellen – alternative Schaltung"

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.