Es ist bekannt dass Kontakte, die an Eingänge von Microcontrollern
angeschlossen werden, entprellt werden sollen, wenn beispielsweise die
Anzahl von Tastendrücken gezählt werden soll. Es werden Entprellzeiten
von 10ms und für ganz ausgelutschte Kontakte bis zu 50ms empfohlen.
Nun gibt es viele mit 24 Volt zu versorgende Industriesensoren wie
beispielsweise Näherungsschalter und Lichtschranken. Anders als bei
Kontakten prellen deren Ausgänge nicht. Nehmen wir an, dass auch diese
im Level angepasst auf einen Microcontroller-Eingang gelegt werden. Da
sie nicht prellen, könnte man denken, dass diese nicht entprellt werden
müssen.
Nun könnte es aber passieren, dass auf dem Schaltsignal des Sensors ein
wenig Schmutz liegt, so dass gerade nach Überschreiten des Schaltpunktes
des Microcontroller-Eingangs der Schmutz das Signal für einen kurzen
Moment nach unten zieht und dann abermals die Schaltschwelle passiert
wird und somit zweimal auslöst.
Sollten vor diesem Hintergrund auch nicht prellende Sensoren entprellt
werden, wenngleich auch mit deutlich kürzerer Zeit?
Wenn ja, wie lange sollte die Entprellzeit sein? Intuitiv würde ich mal
1ms wählen.
Holger Wu. schrieb:> Nun gibt es viele mit 24 Volt zu versorgende Industriesensoren wie> beispielsweise Näherungsschalter und Lichtschranken. Anders als bei> Kontakten prellen deren Ausgänge nicht.
Auch Näherungsschkater oder Lichtschranken können prellen, nämlich wenn
das Ding mechanisch vibriert und nahe an der Schaltschelle ist, oder
wenn Störeinstreuungen an der Schaltschwelle die Elektronik
beeinflussen.
Wenn jedoch der Näherungsschalter bzw. Lichtschranke industrietauglich
ist, enthält sie einen Schmitt-Trigger und ist damit entprellt. Da muss
man nicht nochmal entprellen.
Holger Wu. schrieb:> Wenn ja, wie lange sollte die Entprellzeit sein? Intuitiv würde ich mal> 1ms wählen
Das muss man im Einzelfall entscheiden, z.B. bei Kontakten für eine
geschlossene Tür können das auch 100 ms oder mehr sein, was man halt für
ein relevantes Eingangssignal hält. Bei Tastaturen ist das auch Sache
der Bedienung, für einen geübten Tipper muss man kurze Zeiten wählen,
für Fabrikarbeiter mit Schutzhandschuhen eher lange, mit denen kommt
dann aber ein Schnelltipper nicht klar. Aber an einem Bedienterminal für
eine Maschine schreibt man ja auch keine Romane.
Aber egal an welche Anwendung ich da denke, 1 ms ist nicht nur zu kurz,
sondern einfach wirkungslos, wenn wirklich was prellt. Eher 10 ms.
Georg
Holger Wu. schrieb:> Da sie nicht prellen, könnte man denken, dass diese nicht entprellt> werden müssen.
Ich entprelle jeden Taster oder Sensor, der von aussen kommt. Das hilft
z.B. tadellos, wenn aus irgendwelchen Gründen mal ein EMV/ESD-Spike
ankommt, der nur ein paar µs dauert, aber gerade recht zum
Abtastzeitpunkt der Software kommt.
Schlimmer noch, wenn die Software im Verlauf den Eingang öfters abfragt,
dann sieht ein Teil des Programms einen Impuls und der Rest nicht.
Und das passiertbei dieser ungünstigen Programmierweise (jedesmal, wenn
nötig den Portpin abfragen, statt den Portpin pro Zyklus nur 1x
einzulesen) sowieso, denn der Eingang ändert seinen Zustand ja
irgendwann. Und eben nicht nur dann, wenn die Hauptschleife gerade mal
durch ist...
Holger Wu. schrieb:> Wenn ja, wie lange sollte die Entprellzeit sein? Intuitiv würde ich mal> 1ms wählen.
Die sollte so lang sein, dass die schnellste gewünschte Pegeländerung
noch sicher durch kommt. Wenn z.B. ein Sensor 1 Impuls pro Radumdrehung
abgibt, dann muss er nicht 1000 mal pro Umdrehung aktualisiert werden...
Jeder Sensor sollte gemäß seiner Spezifikation ausgewertet werden.
Jede Auswertung sollte auf ihrer Aufgabe abgestimmt sein.
Ein Sensor hat normalerweise eine Hysterese, damit er im
Umschaltpunkt nicht prellt.
Wenn er es trotzdem tut, dann brauchst Du für diese Aufgabe mit
diesem Sensor eine darauf abgestimmte Auswertung. Hier etwas zu
verallgemeiner ist so unsinnig, wie die Länge eines Seils zu erfragen.
Michael B. schrieb:> Auch Näherungsschkater oder Lichtschranken können prellen, nämlich wenn> das Ding mechanisch vibriert und nahe an der Schaltschelle ist, oder> wenn Störeinstreuungen an der Schaltschwelle die Elektronik> beeinflussen.Näherungsschkater prellen die Tischplatte mit der Faust, wenn sie ein
gutes Blatt haben. Insbesondere nahe an der Schaltschelle tritt der
Effekt auf, wenn nicht "Schellen" Trumpf ist.
Skating away! (Spielt weiter Skat)
Herbert
Du hast den falschen Ansatz
definiere wie dein Nutzsignal aussieht
definiere welche Störsignale ohne Fehlerkennung verkraftet werden
müssen.
Überlege wie du sie trenne kannst.
was du über Schalter schreibt gilt wenn sie vom Menschen betätigt
werden.
Kein Mensch kann innerhalb von 20ms zwei Aktionen bewusst und
reproduzierbar ausführen.
Wenn die Taste in diese Zeit zwei mal gedrückt wurde war das so nicht
gewollt also prellen.
Das zweite Signal war eine Störung
Bei technisch erzeugten Betätigungen sieht das ganz anders aus.
Holger Wu. schrieb:> Wenn ja, wie lange sollte die Entprellzeit sein? Intuitiv würde ich mal> 1ms wählen.
Prellen ist das falsche Wort da Sensoren nun mal nicht prellen. Es kann
aber immer Störungen gegeben die ein falsches Signal erzeugen. Woher
spielt in diesem Zusammenhang keine Rolle.
Um es mal hochtrabend in Fremdworten für Uni oder Prospekt zu sagen. So
etwas kann man lösen indem man das Signal in realtime oversampled. Das
bedeutet nichts anders als das du das Signal mehrfach abtastest und die
Ergebnisse zusammenzählst. Eine Art Stichwahl mit Mehrheitsentscheidung.
Hat der Winner nicht mindestens eine 3/4 Mehrheit (oder auch weit mehr)
liegt ein Fehler vor.
Etwas anderes macht entprellen auch nicht. Aber dort ist die Auswertung
schwieriger. Das Verhalten eines mechanischen Kontaktes ist von Bauform
und Art der Benutzung abhängig. Dann ändert sich das auch noch stark
über die Lebensdauer.
Wie lange du abtastest ist von deinen sog. Echtzeitanforderungen
abhängig.
Echtzeit gibt es eigentlich gar nicht. Das ist aus dem der etwas ungenau
übersetzten Begriff Realtime entstanden was die tatsächlich benötigte
Zeit meint. Das ist schlicht die maximale Zeit bis dein System auf ein
Ereignis reagiert oder reagieren muss.
Diese Zeit ist bei der Ruderanlage eines Containerschiffes natürlich
anders definiert als bei der Zeitsteuerung einer
Hochgeschwindigkeitskamera. Das Prinzip ist aber das gleiche.
Damit ist es möglich mit nur 2 Parametern ( die Antwortzeit und das
Ergebnis des oversamplings ) dein System sicher und nachvollziehbar
auslegen.
X4U schrieb:> Echtzeit gibt es eigentlich gar nicht.
natürlich gibt es Echtzeit
und zwar genau so wie es definiert ist
Aber halt nicht das was die Unwissenden hinein interpretieren.
Was es nicht gibt ist "sofort"
Volle22 schrieb:> natürlich gibt es Echtzeit
Zwar off topic aber:
Das hätte ich weglassen sollen. So etwas führt ja zu unnötigen
Definitionsstreitereien. Echtzeit ist selbstverständlich ein definierter
Begriff. Gemeint war das es dieser aber zur Verwirrung führen kann da er
umgangssprachlich nicht existiert bzw. dort nicht definiert ist.
Das ist so ein wenig wie bei reguläre Ausdrücke (regular expressions).
Das ist imho auch nicht gerade toll übersetzt. Besser wäre wohl
regelbasierte Übereinstimmungen. wenn man das dann mal irgendwo anmerkt
ruft man nur die "Hüter der Definitionsmacht" auf den Plan.
Holger Wu. schrieb:> Nun könnte es aber passieren, dass auf dem> Schaltsignal des Sensors ein wenig Schmutz liegt
Ich würde es nicht "Entprellen" nennen. Ich sehe es aber generell als
gute Idee, gerade bei externen Leitungen, eine gewisse Mindestzeit
festzulegen, um eben Leitungspfurze zu unterdrücken.
Auf eine Zeit lege ich mich nicht fest, diese hängt von der Anwendung ab
und kann auch mal ganze Sekunden oder mehr betragen.
Zur Sicherheit würde ich zweifach entprellen. Es könnte ja schließlich
sein, daß nach der ersten Entprellroutine noch mehr Schmutz vorhanden
ist.
Grundsätzlich sollte man auch Gleichspannung zur Sicherheit immer noch
einmal gleichrichten, damit man keinen Schmutz auf den Leitungen hat,
die zur Sicherheit mit Batterien vor Spannungseinbrüchen gepuffert
werden sollten.
Man kann ja nie vorsichtig genug sein :-(
Wenns mal ohne klappt, ist das wohl eher ein Glücksfall. Ebenso, wenn
ein Schmitt-Trigger, ohnehin meist schon ein- bis mehrfach im Signalpfad
vorhanden, das Prellen unterdrückt. Das ist generell kein Gegenmittel.
In einem konkreten Fall funktionierte ein Drehzahlmesser mit
Gabellichtschranke und Schlitzmaske nicht ohne "Entprellung", ohne daß
ich die Ursache gefunden hätte. Davon gibt es haufenweise. Von
unsauberem Maskenschnitt, Staub, Fusseln über mech. Schwingungen bis
Rippel oder Spikes in Emitter oder Receiver. Ein kleiner
"Software-Tiefpaß" neutralisiert (fast) alles.
Peter D. schrieb:> Bessere Entprellroutinen machen beides, sie entprellen und filtern.
Ist ein prellen nicht das gleiche wie eine Störung mit einer anderen
Frequenz?
Michael B. schrieb:> Auch Näherungsschkater oder Lichtschranken können prellen, nämlich wenn> das Ding mechanisch vibriert und nahe an der Schaltschelle ist, oder> wenn Störeinstreuungen an der Schaltschwelle die Elektronik> beeinflussen.
Das ist kein Prellen von Kontakten sondern ein funktionell instabile
Information. Dass man sie mit ähnlichen Mechanismen bekämpft, darf nicht
zu Verwechslungen führen.
Prellen ist hier falsche Bezeichnung und solche Sensoren, die das
beschriebene Verhalten zeigen, entprellt man auch nicht sondern man
filtert sie mit einem passenden Tiefpass ( entweder analog oder digital)
;)
Lothar M. schrieb:> Schlimmer noch, wenn die Software im Verlauf den Eingang öfters abfragt,> dann sieht ein Teil des Programms einen Impuls und der Rest nicht.
Besser ist es, die Eingangssignale an einer Stelle abzufragen, zu
speichern und mit den gespeicherten Daten bis zur nächsten Abfrage zu
arbeiten.
Auch "nicht-prellende" Sensorsignale sollte man für die
Störsicherheit zumindest auf Plausibilität prüfen:
Wenn "Anschlag erreicht" nach einer ms plötzlich nicht
mehr gemeldet wird, hat man entweder den Näherungssensor
blitzschnell überfahren, oder es kam durch Übersprechen
ein falsches Signal auf die Leitung mit dem entprellten
Sensorsignal...
Zumindest in der Entwicklungsphase sollte man sowas SEHR
ernst nehmen, um Fehlinterpretationen zu minimieren!