PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Entprellen mit RC und Schmitt - Zu viel Widerstaende?



Crock
13.07.2008, 17:53
Hi,

ich moechte gerade einen Taster entprellen. Da ich bei meinem uC nicht genug Rechenzeit uebrig habe, um das softwareseitig zu machen, wollte ich das Probblem mit einem RC-Glied loesen, das an einen Schmitttrigger gekoppelt ist.
Links im Anhang seht ihr die einfach Schaltung. Da ich Platz klein halten moechte, und es nur mehrfach-Schmitt-ICs gibt und ich hier sowieso noch 'n Haufen uA741 rumfliegen hab, wollte den Schmitttrigger damit aufbauen.
Meine Frage ist nun, ist die Schaltung rechts richtig? Ich habe jetzt einfach den Schmitt-Trigger aus der linken Schaltung durch die typische Schaltung ersetzt, die einen OpAmp als Schmitttrigger arbeiten laesst. Bilden nun aber nicht R1 - R3 einen grossen Spannungsteiler, der die gesamte Rechnung hinter der OpAmp-Schaltung unbrauchbar macht? Kann ich R2 einfach weglassen und alles funktioniert wie es soll? Hat C einen Einfluss auf die Hysterese bzw. R3 auf die Entprellzeit?

Bitte greift mir da doch ein wenig unter die Arme :)

//edit: Bitte ignoriert, dass der ST in der linken Schaltung invertierend ist - es gab in meiner Bibliothek keinen anderen als den 7414

PICture
13.07.2008, 18:13
Hallo Crock!

Weil ich mich nicht ständig wiederholen mag, schau dir, bitte, diesen Tread an:

https://www.roboternetz.de/phpBB2/viewtopic.php?t=41605

MfG O:)

Besserwessi
13.07.2008, 18:20
Weglassen kann man so keinen Widerstand. R2 hat einen Einfluß auf die Entprellzeit. Für die Zeitkonstante wirken R1 und R2 parallel.
Man kann die Schaltung etwas vereinfachem (ein Widerstand weniger), wenn man den Schnidt trigger invertierend aufbaut. Die AVR Controller haben normalerweise auch Eingänge mit etwas hysterese. Man könnte also euch direkt das RC Gleid an den AVR anschließen, ohne extra Schmidttrigger. Allerdungs hat man da nicht viel Störabstand. Es ist eigentlich selten das die Rechenzeit nicht ausreicht um da Softwaremäßig zu machen. Die Einfachste Lösung ist es die Tasten nur alls ca. 20 ms im Interrrupts abzufragen und da die Werte in eine Puffervariable kopieren. Oft hat man ohnehin schon einen Interrrupts laufe, dann kostet das fast keine Rechenzeit. In Assembler geht das auch sehr schnell, denn für das IN / STS braucht man nicht mal das Statusregister zu retten.

PICture
13.07.2008, 18:34
Um Rechenzeit nicht zu verlieren, kann man nötige Anzahl zusammengesetzten Unterprogrammen als Verzögerung für Tastenentprellung nutzen.

MfG

Olias
13.07.2008, 20:18
Ich stell mir des relativ hässlich vor aus einer Interruptroutine herraus vor dem ende der Routine nutzunterprogramme aufrufen, von denen man dan natürlich schlecht sagen kann wann das geschieht.
(ein sauberer Interrupt halt: Unterbrechung, Interruptroutine abbarbeiten, weitermachen)

Wenn du dir sorgen wegen dem Spannungsabfall über den Schmittrigger machst hängt doch einfach einen Impedanzwandler dahinter und ruhe ist.

Crock
13.07.2008, 20:46
Olias: Das ist natuerlich eine Idee, dann muesst ich 'nen kleinen IC mit 2 opAmps reinklatschen. Da gibs irgendwiel einen Single-Supply Dual-OpAmp. Muss ich noch mal raussuchen.
Aber ich werde erstmal einfach die Schaltung nachbauen und gucken, ob es auch ohne gibt. Ich hab hier schliesslich noch 'ne Menge uA741 und Platz ist rar. Mit Besserwessis ansatz wird's bestimmt auch klappen. Danke fuer euere Hinweise!

Olias
13.07.2008, 21:43
wenn du Ops überhast, wieso dann extra einen IC besorgen?
Nur noch den Ausgang auf den Neg. Eingang zurückkoppeln und fertig, also nicht mal Widerstände aufs Brett.

Aber was meinst du mit "gesamte Rechnung hinter der OpAmp-Schaltung"?
Wenn du da dirket den uC ranrängst, erledigt sich die sache, da die im Grunde alle direkt hinter den Eingangspins nen Impedanzwandler im IC hängen haben.

rideyourstyle
13.07.2008, 22:19
Also ich entprelle meine Taster immer mit einem kleinen Kerko über dem Taster bzw zur Masse der Schaltung. Hatte noch keine Probleme damit...

PICture
13.07.2008, 23:21
Hallo riderourstyle!

Jawohl!:)

Das ist die einfachste Lösung, vorausgesetzt, dass die Zeitkonstante des internen pull-ups und des Kerkos genügend ist und der Pin permanent ein Eingang ist..

MfG

.-------.
| |
| VCC |
| + |
| | |
| .-. |
| | |R |
| | | |
T | '-' |
_/ | | |
+-o/ o---+-----+ |
| | | |
=== --- | µC |
GND C --- | |
| '-------'
===
GND

Crock
14.07.2008, 01:58
@rideyourstyle: Bei einem einfachen Tiefpass ist die Flanke nicht steil genug, als dass ich damit beim uC einen Interrupt ausloesen wuerde.
@Olias: Mit der "rechnung hinter der OpAmp-Schaltung" meinte ich, dass die Schaltspannungen nicht mehr nach den einfachen Formeln, die mit der Schmitt-Trigger-Schaltungen kommen, berechnet werden koennen, da wir ja noch einen anderen Spannungsteiler und einen Kondi da mit drin haben.
Ich habe zwar Ops uebrig, aber Platz ist rar und 2x 8-DIL (2 OpAmps) ist groesser als ein 1x 8-DIL (ein Dual-OpAmp).

Olias
14.07.2008, 13:06
Ja du hast recht, eine Doppel OP-IC ist natürlich kleiner
Aber mit ein reinen RC-Glied wie von rideyourstyle und PICture beschriben müsste es auch gehen. Die Flankenerkennung im uC basiert ja letzendlich auch auf einem Schmitttrigger.
Solange das Rumzappeln des Signels kleiner als die Hysteres von selbigen ist, ist die steilheit egal.
Schwelle überschritten - Trigger kippt - IRQ kommt.

PICture
14.07.2008, 13:34
Hallo!

Die fallende Flanke ist sehr steil, die steigende nicht. Um ein interrupt sicher auszulösen, sollte die fallende Flanke gewählt werden.

MfG

Besserwessi
14.07.2008, 17:49
Die 2 OP-amps gibt es zwar als DIP8, aber da kommen noch Widerstände zu. Da kann man dann schon gleich ein DIP14 Schmidttrigger IC nehmen (ohne Widerstände), zur not auch als SO14 (SMD).