Forum: Mikrocontroller und Digitale Elektronik Taster Hardwaremäßig entprellen


von chris (Gast)


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 ?

von Jörg Rockstroh (Gast)


Lesenswert?

Du mußt einen Kondensator parallel schalten. Wie groß, weiß ich nicht 
genau, bei halbwegs guten Tastern müßte 1nF aber reichen.

von Rainer (Gast)


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 :)

von Peter D. (peda)


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

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von christian.f (Gast)


Lesenswert?

Bei mir hats gereicht, wenn ich einen 100nF Kondensator 
parallelgeschaltet habe. Kommt aber auch sicherlich auf den Taster drauf 
an. "probieren geht über studieren" - vor allem bei der Lösung mit 
Schmitt-Trigger, die wäre mir nämlich auch zu aufwändig.

von Andre Adrian (Gast)


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

von Peter D. (peda)


Lesenswert?

@Andre,

in einer Matrix können ohne Dioden nur max 2 Tasten immer eindeutig 
erkannt werden.

Deshalb werden z.B. in einer PC-Tastatur die Sondertasten "Strg", "Alt" 
usw. separat abgefragt.


Peter

von Peter D. (peda)


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

von Rainer (Gast)


Lesenswert?

LoL @ Peter... Gut gesagt...

Noch hinzuzufügen: nicht umsonst kommen immer mehr 8051 mit USB 1.1/2.0 
raus, mit 10/100MBit Ethernet usw... Da kann kaum ein anderer uC (den 
ARM mal ausgenommen) mithalten!

Rainer.

von Sascha Weitkunat (Gast)


Lesenswert?

Ganz umsonst gibt es aber auch nicht zig andere Controllerfamilien...

Das jeder seinen Liebling hat ist klar, trotzdem sollte man es etwas 
objektiver angehen. Bzw. schonmal nen Pferd mit nem Huhn verglichen?

von Andreas S. (andreas) (Admin) Benutzerseite


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.

von Peter D. (peda)


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

von mikki merten (Gast)


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.

von Mike (Gast)


Lesenswert?

Hallo,

um noch mal auf die 8051 ziger zu kommen, ich habe bei der externen 
E-Prom Variante mit Latch aufgehört. Jetzt gibts die ja mit Flash. Gibt 
es da auch so eine Art ISP? Was ist den für ein 8051 empfehlenswert z. 
B. ohne AD Wandler und wie programmiere ich den?

Danke Mike

von Eckhard (Gast)


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

von Peter D. (peda)


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

von Michael (Gast)


Lesenswert?

Zur Tasterentprellung per Software habe ich etwas in die Codesammlung 
gelegt: für den AT90S8515.
Mir ist bekannt, daß diese Routinen auf einem 8051 viel eleganter, 
schneller und überhaupt besser ablaufen.

Michael

von Peter D. (peda)


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

von Christoph Wittkop (Gast)


Lesenswert?

wo kann ich den den max 6818 erhalten? bisher hat kein lieferant 
(conrad, reichelt,...) im programm?

von Manfred Glahe (Gast)


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

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.