Taster Hardwaremäßig entprellen

Gast #19816
Lesenswert?

ich mus ein par taster entprellen !

ich würde es am liebsten hardwaremäßig machen ! softwaremäßig verliere 
ich, meiner meinung nach, zu viel zeit.

wenn ich mich richtig erinnern kann, kann man den taster mit einem 
condensator entprellen ! jedoch weis ich nicht mehr wie ich den schalten 
muss und in welcher größe ich ihn wählen muss !

kann mir wer ein paar tipps geben ?
Gast #19818
Lesenswert?

Kondensatoren funktionieren eigentlich meistens ganz gut, für 
professionelle Anwendungen würd ich aber eher zu etwas sichereren 
Methoden greifen - Maxim hat Entprellchips (MAX6816 - MAX6818), meistens 
wirds aber softwareseitig gelöst: mit Timern oder ähnlichem verlierst so 
gut wie absolut keine Zeit - das sollte überall drin sein und kostet 
absolut nix zusätzlich :)
#19819
Lesenswert?

Zum Entprellen brauchst Du je Taster 2 Widerstände, 1 Kondensator, 1 
Schmitt-Trigger (1/6 des 74HC14), ist also sehr aufwendig.


Softwareentprellen kostet dagegen kaum Rechenzeit. Du darfst es aber 
nicht so machen, wie fast immer hier beschrieben, indem man völlig 
nutzlos in der Gegend rumwartet und Rechenzeit verschleudert.

Sondern, Du machst es einfach so ganz nebenbei in einem Timerinterrupt 
etwa alle 5ms ... 200ms. Einen Timerinterrupt braucht man ja sowieso 
immer, um alle zeitabhängigen Sachen zu machen. Und da drin dann noch 
die Tastenentprellroutine aufzurufen kostet höchstens 0,1% der CPU-Zeit.

Ein Beispiel (Assembler und C) findest Du hier:

http://www.specs.de/users/danni/appl/soft/keyscan/index.htm


Peter
Admin Persönliche Seite #19820
Lesenswert?

Dann ist es natürlich praktisch wenn man keinen ollen 8051 hat sondern 
einen AVR - da haben die Eingänge den Schmitt-Trigger schon eingebaut 
:-)

Ich verwende auch immer Software-Entprellung. Dabei muss es nicht 
grundsätzlich falsch sein das mit Delays zu machen - kommt halt immer 
auf die Anwendung an. Meistens habe ich aber sowieso eine globale 
Zählervariable die alle x Millisekunden per Timer-Int inkrementiert 
wird, so dass das Programm in der Hauptschleife immer weiß "wieviel Uhr 
es ist" und die Entprellung danach ausrichten kann.
Gast #19822
Lesenswert?

Gibt es eigentlich eine Methode softwaremässig bei einer Matrix-Tastatur 
mehrere Taster gleichzeitig abzufragen? Wenn ich einfach nur die Reihen 
nacheinander bestrome und dann alle Spalten gleichzeitig abfrage, kann 
es ja zu sogennannten Geistertasten kommen. Beispiel:

         5 6 7 8
         | | | |
      1- a b c d
      2- e f g h
      3- i j k l
      4- m n o p

Wenn ich hier a, d  und p drücke, bekomm ich folgende Ergebnisse:
Reihe 1 bestromt: 5 + 8 high  -> a + d gedrückt  -> i.O.
Reihe 2 bestromt: nichts high                    -> i.O.
Reihe 3 bestromt: nichts high                    -> i.O.
Reihe 4 bestromt: 5 + 8 high  -> m + p gedrückt  -> nicht i.O.
Das passiert durch die Verbindung über p auf Spalte 8, über d auf Reihe 
1 und dann über a auf Spalte 5.
Wie kann ich das softwaremässig umgehen? Und nein, ich kann keine Dioden 
einbauen.....


Gruss

Andre
#19824
Lesenswert?

Andreas:

"... ollen 8051 ..."

Meine Gratulation zu diesem rein subjektivem, aber völlig unbegründetem 
Statement !

Ich sag Dir jetzt mal auf den Kopf zu, das Du mindestens 20 davon zu 
Hause rumwerkeln hast. Egal ob Waschmaschine, Fernseher, Videorekorder, 
HiFi-Turm, PC usw., da werkeln oft 8051-er und meistens nicht nur einer 
davon.

In jeder PC-Tastatur steckt z.B. einer, den SMB-Bus überwacht auch 
einer. Wenn also Windows wieder mal abgeschmiert ist und damit Dein 
Pentium nicht den Hitzetot stirbt, regelt der 8051 dann den Takt runter 
bzw. den Lüfter hoch.

Ich hab jetzt über die Feiertage meinem Nootebook ein 40GB-Platte 
eingeschraubt. Dann habe ich mir die alte 6GB-Platte genauer angesehen 
und da steckt doch tatsächlich ein 87C154 drauf, also nichts mit alt !
Da habe ich auch meine ersten 8051 her, in alten SCSI-Platten steckten 
sogar 2 Stück (DIL-Gehäuse + externer EPROM).


Wenn Du dann noch ein modernes Auto mit CAN-Bus fährst kommen mindestens 
nochmal 20 dazu. Es gibt da z.B. kleine 8051-Derivate, die die 
Scheinwerfer steuern, davon hast Du schon mal 4, dann natürlich die 
Motorsteuerung, die Airbags, ... also die 20 reichen wohl garnicht.


Gibs also zu, Du bist von 8051-ern umzingelt. Und daß nur, weil sehr 
viele andere Leute, diese überhaupt nicht "oll" finden.

Und Du kaufst ja letztendlich von diesen Leuten die "ollen" Geräte mit 
den 8051 drin.


Die 8051-er haben schon ne Menge Vorteile, z.B. gegenüber den 
Bitbefehlen des 8051 kann sich der AVR nur verstecken.
Außerdem gibt es sehr wohl auch 8051 mit Schmitt-Trigger-Eingängen, z.B. 
die Philips LPC-Serie.

Auch habe ich bisher keinen anderen µC gesehen, den man so extrem 
effizient in C programmieren kann. Im Mittel nur etwa 10% mehr 
Programmspeicher gegenüber Assembler, das schafft bei weitem nicht mal 
der AVR.
Der Herr Keil ist sich natürlich bewußt, daß er einen sehr 
leistungsfähigen C-Compiler gebaut hat und verkauft ihn auch 
dementsprechend teuer.
Aber über Schulversionen sollte man trotzdem damit seinem Hobby 
nachgehen können und die 2kB Testversion reicht schon für ne Menge, wie 
gesagt er optimiert ja extrem Speichersparend.

Hier mal ein 2kB Beispiel:
http://www.specs.de/users/danni/appl/soft/c51/thclock/index.htm


Also wer sich mit dem 8051 beschäftigt, der setzt in keinster Weise aufs 
falsche Pferd.


Und Cygnal würde ja wohl nicht seine "ollen" 8051 jetzt auf 100MIPS 
hochdrehen, wenn sie sich nicht absolut sicher sind, diese auch reißend 
verkaufen zu können.



Peter
Admin Persönliche Seite #19827
Lesenswert?

Ach Peter, nimm doch nicht immer alles so persönlich. Hast du wirklich 
nicht den Smiley gesehen? Ich weiß dass der 8051 der mit Abstand am 
weitesten verbreitete und wahrscheinlich angesichts der vielen Derivate 
auch einer der vielseitigsten Controller ist, und ich weiß auch dass er 
den AVRs gegenüber einige Vorteile (aber auch Nachteile) hat. Tatsache 
ist jedoch dass die Hardwareentprellung beim AVR trivial ist, dass es 
irgendwo in der riesigen Auswahl der 8051er auch einen mit 
Schmitt-Triggern gibt will ich dabei ja gar nicht bestreiten.
#19828
Lesenswert?

Hardwareentprellung ist alles andere als trivial !

Wichtig sind auch die 2 Widerstände, ein Pull-Up (z.B. 10k) und einer in 
Reihe (z.B. 1k), um den Entladestromstoß des Kondensators abzufangen.

Ansonsten können auch bei nur 100nF schon mal 1000A fließen, wenn auch 
nur sehr kurzzeitig !
Und je nachdem, welchen Pfad dieser Entladestrom nimmt, können die 
seltsamsten Effekte auftreten.
Bei den Kontakten kann es außerdem zum Schweißeffekt kommen (höherer 
Verschleiß).

Besonders abzuraten ist von Tantalkondensatoren direkt parallel zum 
Kontakt, die vertragen Kurzschlüsse überhaupt nicht.

Also immer schön den Reihenwiderstand vorsehen. Als Pull-Up reicht bei 
kurzen Leitungen auch der im Mikrokontroller.


Peter
Gast #19829
Lesenswert?

Also zum simplen Entprellen von Tastern brauch ich doch keine 
Schmitt-Trigger. Sind doch soweit ich mich richtig entsinne rein digital 
arbeitende Bauteile. Dieser ganze "Firlefanz" mit diversen C bzw. R/C 
sind doch sowieso nur unnötige Krücken die zusätzliche Bauteile 
erfordern. Wir leben ja nicht mehr in dem Zeitalter wo 256 Byte 
Programmspeicher schon recht teuer sind. Also wirklich sinnvoll ist nur 
eine Software-Entprellung.
Gast #19831
Lesenswert?

Wenn der Taster ein wechsler ist, dann lassen die sich auch ganz einfach 
mit einem RS-Flip-Flop entprellen. Nicht unbedingt die billigste methode 
aber technisch sehr sauber.

@Peter

nicht das ich jetzt über deine 51er lästern will aber ich denke mal das 
in meinem Haushalt und meinem Auto wesentlich mehr Motorolas verbaut 
sind.

Eckhard
#19832
Lesenswert?

@Mike:

Deshalb habe ich ja auch so viel mit den 8051 gemacht, die Atmel 89C51 
waren ja lange Jahre die einzigen Kontroller mit Flash gewesen.

EPROMs habe ich schon ewig keine angefaßt.

Wenn Du was mit den 8051 machen willst, nimm nur ISP (z.B. AT89C8252) 
bzw. IAP (z.B. T89C51RD2).

Aber auch andere Hersteller außer Atmel haben solche, z.B. Cygnal, 
Maxim, Analog Devices usw.

Auf der Keil-Webseite findest Du etwa 32 Hersteller von 8051 angegeben, 
such dann einfach auf deren Webseiten nach Flashtypen mit ISP / IAP.


Zum Thema:

Meistens sinds ja mehrere Tasten, die man als Matrix schaltet und dann 
ist Hardwareentprellung eh nicht mehr möglich.
Und wenn ich einmal ne Entprellroutine geschrieben habe, nehme ich sie 
auch dann, wenns mal nur 2 Tasten sind.

Meine Devise ist, wenn ich durch Software auch nur einen Widerstand 
einsparen kann, dann tue ich das auch.


Peter
#19834
Lesenswert?

@Michael,

wenn man etwas in C schreibt ist es genau so elegant, egal ob es auf nem 
8051 oder AVR laufen soll.

Wenn dann vielleicht für den AVR etwa mehr Code erzeugt wird, 
interessiert das kaum, dann nimmt man eben den Typ mit mehr Speicher. 
Dafür gibts ja die AVRs mit 128kB.
Pech höchstens, wenn man schon eine Platine für nen 20-Pinner fertig hat 
und dem der Flash ausgeht.


Und besser laufen kann nur eine Routine, die weniger logische Fehler 
enthält. Z.B. lassen manche unberücksichtigt, daß eine Taste auch beim 
Loslassen prellen kann.


Peter
Gast #19836
Lesenswert?

Hallo Chris,
das Entprellen von Schaltern und Tastaturen hängt von deren 
Einsatzumgebung ab. Wenn Du einen Schalter/taster mit einem 
Pullupwiderstand sotfwaremäßig abfragst, dann ist der sinnvollerweise 
relativ hochohmig (>1K). Störsignale können nun leicht diesen Eingang 
beeinflussen und zu Fehlerkennung führen. Lange Kabelverbindungen 
erleichtern es Störern zusätzlich bei hohen Quellwiderständen. Also 
immer nach Bedarf eine lösung wählen.

MfG  Manfred Glahe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren