Forum: Mikrocontroller und Digitale Elektronik Logikproblem: Jitter im Eingangssignal herausfiltern


von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
ich habe da ein Problem, an dem ich schon die vergangenen Wochen knoble.
Es betrifft eine zu entwickelnde Logikschaltung, die aus einem 
Eingangssignal (Siehe Anhang) ein definiertes Ausgangssignal (High für 
die Dauer T1) generiert.

Das Eingangssignal besteht idealerweise aus einem Rechtecksignal, 
welches durch Störungen durch Einschwingvorgänge (davor und dahinter) 
"angereichert" wurde. Da das Nuzsignal keine feste Länge hat, kann es 
sich auch in der Folge von Störimpulsen "einreihen".

Mein erster Gedanke war, dass es eigentlich ein Fall für einen Monoflop 
ist, der auf die erste positive Flange hin, ein definiertes 
Ausgangssignal erzeugt. Da jedoch die Dauer des Eingangssignals sehr 
lang sein kann (auch dauerhaft), kann man keinen Monoflop 
dimensionieren, da er ja in endlicher Zeit abläuft -- und dann durch den 
nächsten positiven Impuls wiederholt auslöst...

Meine Überlegungen, welche Anforderungen die Schaltung haben soll, 
führten zu diesem simplen Satz:
Die aufzubauende Logik muss lediglich den Ausgang für die Zeit T1 auf 
"High" stellen, wenn das Eingangssignal seit T2 keinen negative Flanke 
aufweist.

Mein zweiter Gedanke war, dass man es dann ja mit 2 Monoflops (zB. 
74HC123)realisieren könnte, indem Monoflop 1 auf eine positive Flanke 
(Eingang B1)seinen Ausgang für die Dauer T1 auf "high" stellt und durch 
Monoflop2 (der auf eine negative Flanke reagiert) "gesperrt" wird. 
Einfach durch verbinden des Ausgangs von Monoflop2 mit dem Eingang A1 
des ersten Monoflops. (Siehe Anhang 2)
Funktioniert sogar, jedoch wird nach Ablauf von T2 ein Triggerimpuls 
durch A1 ausgelöst......und ich habe 2 Ausgangsimpulse...

Habt ihr vielleicht eine Idee, wie dies möglichst platzsparend machbar 
wäre??

Viele Grüße
Joerg

von Stefan Salewski (Gast)


Lesenswert?

RC-Tiefpass gefolgt von (zwei) Invertern mit Schmitt-Trigger Eingang, 
74HC14 oder so. Und ich denke Dein Problem ist eher Prellen, nicht 
Jitter. Zum Thema (Kontakt)-Prellen findet man viel.

von Anja (Gast)


Lesenswert?

Hallo,

ich würde das wie folgt lösen, (vorausgesezt die Störsignale sind viel 
kürzer als das Nutzsignal).

3 (oder mehr) D-Flip-Flops als Schieberegister geschaltet.
Der Takt muß so gewählt werden daß er länger als die Störimpulse, jedoch 
kürzer als 25% des Nutzsignales ist.
Ein RS-Flip-Flop wird gesetzt wenn alle Schieberegister-Ausgänge High 
sind.
Rückgesetzt wenn alle Schieberegister-Ausgänge Low sind. (Bzw. die 
Invertierten Ausgänge High sind).
Am Ausgang ist jetzt das entprellte Nutzsignal. (Allerdings um 3 Takte 
verzögert).

Mit der steigenden Flanke des RS-Registers kannst Du jetzt dein Monoflop 
triggern.

von Stefan Salewski (Gast)


Lesenswert?

Falls Du Art of Electronics zur Hand hast könntest Du auch mal auf Seite 
576 schauen, Switch bounce. Ist wohl in Google Books nicht verfügbar...

von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Anja und Stefan,
herzlichen Dank für eure Antworten.

@Stefan: Richtig, ist natürlich eher Prellen. Mit dem Tiefpass werd' ich 
mal probieren.

@ Anja: Leider sind die Störimpulse nicht immer kürzer als das 
Nutzsignal.

Werde daher auch mal die im Anhang befindliche Schaltung ausprobieren 
(Morgen, da zZt. kein AND zur Hand)

Beste Grüße
Joerg

von Stefan Salewski (Gast)


Lesenswert?

>@ Anja: Leider sind die Störimpulse nicht immer kürzer als das
>Nutzsignal.

Oh -- da kannst Du meinen Vorschlag mit dem RC-Tiefpass wohl vergessen. 
Dann ist mir so spontan auch nicht klar wie man Stör- und Nutz-Impulse 
überhaupt auseinander halten soll. Da muss man wohl etwas länger drüber 
nachdenken und eventuell Fallunterscheidungen machen. Aber versuch mal 
in den AoE hineinzusehen, da werden mehrere Möglichkeiten aufgeführt.

von Kai Klaas (Gast)


Lesenswert?

Was ist denn überhaupt T2 ??

Kai Klaas

von Joerg (Gast)


Lesenswert?

Hallo Kai,
ich meinte mit
- T1 die Zeitspanne, in der der das korrigierte Ausgangssignal auf "1" 
liegt. Also die Zeit, in der das Monoflop 1 aktiv ist.
- T2 die Zeitspanne, in der der das Monoflop 2 aktiv ist und damit das 
Monoflop 1 "deaktiviert".

Beste Grüße
Joerg

von Sowas (Gast)


Lesenswert?

> Leider sind die Störimpulse nicht immer kürzer als das
 > Nutzsignal.
Dann brauchst du unbedingt eine Glaskugel oder eine Fuzzy-Logik.

von Etrick (Gast)


Lesenswert?

Oder kürzer:

Vergiss es...

von Joerg (Gast)


Lesenswert?

Hallo Sowas und Etrick,
ich habe mir vorgenommen, ohne Glaskugel auszukommen (Wäre zu groß für 
die Schaltung, die soll auf 20x25mm Platz finden).

Ich denke auch, dass ihr das Problem nicht duchdrungen habt und daher 
die Lösung verkompliziert bzw, grundweg keine Lösung seht.

Es ist viel einfacher als ihr vielleicht denkt. Ich möchte nur 
detektieren, ob sich am Eingang der Pegel von 0 auf 1 (Diese 
Richtung)ändert. Falls ja, soll die Schaltung ein Ausgangasignal 
erzeugen.
Da nur etwa alle 5s ein neues valides Eingangssignal kommen kann, sollte 
die Schaltung für eine gewisse Zeit nach dem letzten 1->0 Übergang 
"taub" sein. Das ist schon alles.

Die Tests mit der Schaltung im 5. Posting stehen noch aus. Melde mich 
dann.

Beste Grüße
Joerg

von HildeK (Gast)


Lesenswert?

>Oder kürzer:
>Vergiss es...

So schnell gibt man nicht auf ...

>Leider sind die Störimpulse nicht immer kürzer als das Nutzsignal.

Naja, es müsste aber schon eine Phase mit HIGH drin sein, die sich in 
ihrer Dauer von den Prellern unterscheiden lässt.

Joerg, dein zweiter Ansatz war gar nicht so daneben - nur nicht ganz zu 
Ende gedacht. Mein Vorschlag (unter der o.g. Bedingung):

Zwei nachtiggerbare MF, eines getriggert auf die positive (MF1), das 
andere auf die negative Flanke (MF2), die sich gegenseitig verriegeln. 
Dauer muss mindestens eine 'Periode' der Preller sein, damit sie während 
der Prellzeit nachgetriggert werden.
Am Anfang sind beide entriegelt. Die erste pos. Flanke triggert das MF1 
und unterbindet das Triggern von MF2. Dies ergibt am Ausgang einen Puls 
über den Prellern am Anfang.
In der mittleren HIGH-Phase fällt MF1 wieder ab, beide sind wieder 
scharf.
In der hinteren Phase wird zuerst das MF2 getriggert, das wiederum dann 
MF1 sperrt. Wieder ergibt sich ein Puls am Ausgang von MF2, das die 
Prellzeit am Ende anzeigt.
Beide Signale dienen dann zum Setzen/Rücksetzten eines RS-FFs.
Aber, wie gesagt, es muss dazwischen eine HIGH-Phase geben, die es 
ermöglicht, beide MFs abfallen zu lassen. Natürlich ebenso auch eine 
entsprechend Mindestlänge bei der LOW-Phase, wenn der Vorgang zu Ende 
ist.

Zumindest stelle ich mir das so vor. :-)

von Etrick (Gast)


Lesenswert?

Hi,

das passt aber nicht dazu, dass die Länge des Originalpulses (ohne 
Preller) gespiegelt werden soll.

- die Anzahl der Preller und ihre Dauer ist naturgemäß zufällig
- die Länge des Pulses ist voll variabel, auch kürzer als Preller

Wie willst Du (oder eine Elektronik) wissen, welches Rechteck Signal und 
welches Störung ist?

Gruß

Achim

von Etrick (Gast)


Lesenswert?

Wenn T1 jedoch nicht originalgetreu ausgegeben werden soll und der 
Abstand zwischen den Ereignissen Welten größer als die Summe Signal und 
Störungen ist, ist die Löstung trivial...

von Andreas F. (scotty1701d)


Lesenswert?

Joerg schrieb:
> Es ist viel einfacher als ihr vielleicht denkt. Ich möchte nur
> detektieren, ob sich am Eingang der Pegel von 0 auf 1 (Diese
> Richtung)ändert. Falls ja, soll die Schaltung ein Ausgangasignal
> erzeugen.
> Da nur etwa alle 5s ein neues valides Eingangssignal kommen kann, sollte
> die Schaltung für eine gewisse Zeit nach dem letzten 1->0 Übergang
> "taub" sein. Das ist schon alles.

Die Frage, die sich stellt ist, ob nach dem letzten möglichen Störpuls 
eine gewisse Zeit absolute Ruhe ist und ob dann auf den nächsten 0->1 
Übergang auf jeden Fall reagiert werden soll. Da die Störpulse auch 
länger als das Nutzsignal sein können, hast du nämlich ohne Glaskugel 
wirklich keine Chance, zwischenzeitliche Störpulse vom gewünschten 
Signal zu unterscheiden.

Sollte meine erste Annahme zutreffen, dann würde ich gar keine 
nachtriggerbaren Monoflops verwenden sondern eher den 74HC221. Beide MFs 
werden über Eingang B getriggert, MF2 sperrt über Q2 an A1 das erste MF.
T1 stellst du auf die gewünschte Länge des Ausgangssignals, T2 auf die 
Zeit von der ersten 0->1 Flanke bis zu dem Zeitpunkt, wo wieder Signale 
zugelassen sind.

von Joerg (Gast)


Lesenswert?

Hallo Etrick,
Deine Annahmen sind korrekt. T1 muss nicht die Originallänge haben, ich 
verwende das Ausgangssignal der Schaltung (Länge T1) lediglich als 
Signalisierung für eine nachfolgende Stufe.

Viele Grüße
Joerg

von Sowas (Gast)


Lesenswert?

Hallo Joerg,
ich habe mir früher Folgendes einfallen lasse, allerdings hatte ich eine 
Konstante die ich nutzen konnte: f_mux (50Hz/10=5Hz)

Bei der Stör-Filterung in meiner Alarmanlage sitzen ein Monoflop an der 
Alarmleitung und ein einstellbarer Zähler. Das MF reagiert also bei 
jedem Ereignis, auch wenn es ein Störimpuls ist/oder mehrere sind so wie 
deine Preller. Das Monoflop gibt im getriggerten Zustand den Zähler 
frei.
Da eine Störung aber von so kurzer Dauer und erst recht nicht serienhaft 
ist, ergibt sich niemals ein Überlauf des Zählers (wenn ausreichend hoch 
eingestellt). Der Überlauf wird nur erreicht bei echten Alarmen, weil 
dann die Multiplexfrequenz den Zähler innerhalb seiner Torzeit füttert 
und zum Überlaufen bringt.
Sitzt man vor dem Tableau mit den Melde-LEDs erkennt man öfter mal ein 
kurzes einmaliges Aufleuchten eines gerade abgetasteten Kanals von den 
insgesamt 9 Multiplex-Kanälen und, wenn eingeschaltet, hört man auch 
akustisch einen kurzer Pieps, mehr nicht. So läuft die Anlage seit den 
80er Jahren zuverkässig.
Dies nur als Anmerkung oder Anregung weil deine Sache anders liegt.

von Kai Klaas (Gast)


Lesenswert?

Also, irgend etwas muß schon definiert sein, weil du ja sonst nicht die 
Störimpulse von den Nutzsignalen unterscheiden kannst. Also muß entweder 
die Dauer des Nutzsignals irgend einer Gesetzmäßigkeit folgen, oder die 
Dauer des Prellens oder die Pause zwischen den Nutzsignalen, die auch 
vom Prellen nicht unterbrochen werden darf.

Ein anderer Punkt ist: Wenn dir ein einziger 0-1-Sprung ausreichen soll, 
um ein Nutzsignal erkennen zu wollen, dann wird deine Schaltung extrem 
empfindlich auf Störungen jeder Art. Das ist überhaupt keine gute Idee. 
Am besten ist ein RC-Filter zum Sieben von Störsignalen, das dir 
gleichzeitig hilft das Prellen zu unterdrücken. Auch eine 
Softwareroutine kann zum Entprellen verwendet werden. Die Idee dahinter 
ist die, daß das Nutzsignal eine bestimmte Mindestzeit anliegen muß, um 
erkannt zu werden, die länger ist als das Prellen. Wenn das Nutzsignal 
aber kürzer als das Prellen sein kann, dann kannst du es ja garnicht 
feststellen, bzw. du kannst garnicht feststellen, wie wiele Nutzsignale 
sich im Prellen verstecken...

Schildere doch mal, was du überhaupt machen willst. Eventuell kannst du 
nämlich bei der Nutzsignal-Erzeugung ansetzen und dort das Problem 
lösen.

Kai Klaas

von Sowas (Gast)


Lesenswert?

Nachdem geklärt ist, daß es kein Jitter und keine Störung sind, sondern:
"Prellen".

 > Leider sind die Störimpulse nicht immer kürzer als das
 > Nutzsignal.

Das wird eigentlich auch nebensächlich.
Immer wenn die Anfangs-Preller auftauchen, muß es zwangsläufig einen 
Schaltvorgang gegeben haben.
Dein Nutzsignal kann sogar gänzlich fehlen: wenn nämlich schnell genug 
abgeschaltet würde. Dann gibt es nur die vorzeitig abgebrochenen 
Anfangspreller und einen sich zwangsläufig anschließenden Endpreller.
Das Bündel des Ein- und Ausschaltprellen gehören so immer zu einem 
Schaltvorgang.
Läßt sich damit etwas anfangen?
Melde dich mal.

von Kai Klaas (Gast)


Lesenswert?

>Immer wenn die Anfangs-Preller auftauchen, muß es zwangsläufig einen
>Schaltvorgang gegeben haben.

Nein, nicht unbedingt. Können auch Störungen sein. Wieviele "Preller" 
sind ein Signal, wieviele eine Störung?

>Das Bündel des Ein- und Ausschaltprellen gehören so immer zu einem
>Schaltvorgang.

Wieviele Schaltvorgänge genau? Was ist Prellen? Wo genau sind die 
Schaltvorgänge?

Kai Klaas

von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Sowas,
genau richtig. Mir reicht schon die Information, dass es Anfangspreller 
oder Nutzsignal, oder Endpreller gibt, um ein (einziges) definiertes 
Ausgangssignal zu erzeugen. Denn auch schon ein Preller zeigt mir, dass 
am Eingang "etwas war". Den Einwand, das dies störungsanfällig sein 
verstehe ich, jedoch sitzt der Erzeuger dieser Preller auf der gleichen 
Platine, nur Millimeter entfernt.

Meine Idee in Posting 5 hat sich wieder als "nicht zu Ende gedacht" 
erwiesen. Habe sie daher umgestellt auf die hier Gezeigte.

Mono1 schaltet bei der ersten positiven Flanke (Preller oder Nutzsignal) 
und ist auf "Nicht retriggerbar" eingestellt (Verbinden von Q1/ und B1).

Mono 2 schaltet bei der 1. negativen Flanke (Preller oder Nutzsignal) 
und soll Mono1 davon abhalten, erneut durchzuschalten, ohne jedoch den 
laufenden Puls des Mono 1 zu unterbrechen. Dies erreiche ich mit einem 
NAND auf den Reset von Mono 1.

Das wars eigentlich schon. ES FUNKTIONIERT NUN.

Ich bin etwas fixiert auf Monos, weil ich ohnehin einen zur Erzeugung 
des Ausgangsimpulses benötige und es die immer im Doppelpack in einem 
Gehäuse (zB. SO16) gibt. Kurzum ich befürchte Platzprobleme wenn ich 
andere Bauteile verwende.

@Kai: Die Schaltung ist Teil einer Zeitmessanlager für eine kleine 
Autorennbahn. Die Zeitmessung wird per Laserlichtschranke und Tondekoder 
Ne567 (Bei ca. 60KHz) erfolgen. Der Grund für die "Preller" ist, das der 
NE567 trotz "Anti Chatter Prevention, laut Datenblatt" immer noch solche
Anfangs- oder Endpulse erzeugen kann (sporadisch). Oder anders gesagt, 
entweder ich verhindere sicher diese Chatter-Impulse am NE567 und habe 
dadurch den Nachteil, dass sie relativ langsam anspricht, oder eine 
schnell reagierende Lichtschranke mit sporadischem Chatter. Habe mich 
für Weg 2 entschieden und benötigte daher eine "kleine Fehlerkorrektur".

Klar, ich könnte eine fertige Anlage, für nur wenige hundert Euro :-) 
kaufen. Wäre sicher ökonomischer (Allein die Zeit...).
Sehe es aber als Hobby-Projekt an.

Ich möchte mich bei euch alle ganz herzlich bedanken. DANKE

Nun versuche ich, per Target, ein sinnvolles Layout zu erstellen. Wie 
gesagt, auf 20x25 mm, mehr Platz habe ich nicht.


Beste Grüße
Joerg

von HildeK (Gast)


Lesenswert?

@Joerg
Über das letzte Bild musst du noch mal nachdenken. Da sind der Ausgang 
vom NAND und der /Q1 (auch Ausgang) hart aufeinandergeschaltet.

von Uwe .. (uwegw)


Lesenswert?

Irgendwie schreit die Sache nach einer digitalen Lösung. Kleinen 
Achtpinner-µC, die erste Flanke per Interrupt erkennen, und dann den 
Interrupt einige Zeit deaktivieren und das Signal ausgeben. Das bekommst 
du auf der Fläche mit nem TTL-Grab nicht besser hin.

von Joerg (Gast)


Angehängte Dateien:

Lesenswert?

Hallo HildeK,
ups, hab' mich da verzeichnet. Hier die richtige Lösung.

Uwegw, ja, aber µC kenne ich mich eben nicht so aus. Obwohl es sicher 
interessant eleganter wäre.


Beste Grüße
Joerg

von Falk B. (falk)


Lesenswert?

@  Joerg (Gast)

>@Kai: Die Schaltung ist Teil einer Zeitmessanlager für eine kleine
>Autorennbahn. Die Zeitmessung wird per Laserlichtschranke und Tondekoder
>Ne567 (Bei ca. 60KHz) erfolgen. Der Grund für die "Preller" ist, das der
>NE567 trotz "Anti Chatter Prevention, laut Datenblatt" immer noch solche
>Anfangs- oder Endpulse erzeugen kann (sporadisch). Oder anders gesagt,
>entweder ich verhindere sicher diese Chatter-Impulse am NE567 und habe
>dadurch den Nachteil, dass sie relativ langsam anspricht, oder eine
>schnell reagierende Lichtschranke mit sporadischem Chatter. Habe mich
>für Weg 2 entschieden und benötigte daher eine "kleine Fehlerkorrektur".

Tja, falsche Entscheidung. Und überhaupt mal wieder ein klarer Fall von 
gescheiterer Netiquette.

Wäre ja auch VOLLKOMMEN unsinnig gewesen, das Problem DIREKT mal 
darzustellen. Dann doch lieber tagelang Rätselraten und fabulieren. 
Naja.

>Klar, ich könnte eine fertige Anlage, für nur wenige hundert Euro :-)
>kaufen.

Man könnte auch durch KnoffHoff(tm) einfach eine prellfreie 
Lichtschranke bauen. Dieses Problem wurde vor Jahrzehnten schon gelöst.

MG
Falk

von Sowas (Gast)


Lesenswert?

Der Herr hat ihm vergeben.
chatter...da steht, daß nur Logik, weil schnell, den chatter als 
mehrfachen output erkennen kann, Lampen und Relais reagieren darauf 
nicht. Also hänge etwas Langsames dran.
Keines der gezeigten Beispiele (DB Valvo/Signetics Figure 4) und "output 
latching" (Figure 7) helfen das zu eliminieren ?

von Joerg (Gast)


Lesenswert?

Hallo Sowas,
die Ansätze in Fig. 4 habe ich alle durchprobiert. Als wirkungsvollter 
Ansatz hat sich der erste der drei Möglichkeiten erwiesen. Den setze ich 
auch ein. Er (wie die anderen) hat den Nachteil, dass es die Schaltung 
verlangsamt, dh. nicht mehr auf kurze Strahlunterbrechungen reagieren 
kann. Daher habe ich hier so dimensioniert, dass der Chatter nur noch 
sehr sporadisch auftritt.

Das Latching habe ich mir nicht näher angesehen, da man ja eine 
Möglichkeit braucht, den Ausgang wieder freizugeben. Vielleicht zu kurz 
gesprungen.


Viele Grüße
Joerg

von John B. (johnbauer)


Angehängte Dateien:

Lesenswert?

Falls es noch nicht zu Spät ist. Hier mein Vorschlag:
Das Schmitttrigger-NAND (4093) ist als gesteuerter Oszillator geschaltet 
und steuert das Monoflop 1. Der Ausgang des Monoflop 1 ist so lange auf 
high wie das Eingangssignal auf high ist + Chatter + T1. Das Monoflop 2 
bestimmt die Impulsbreite des Ausgangssignals.

T1: Zeitkonstante von Monoflop 1 muss größer sein als die maximale 
low-zeit des Eingangssignals während des Chatter.
Die Frequenz des Oszillators (4093) muss größer sein als 1/T1.
Die Zeitkonstante des Monoflop 2 kann beliebig gewählt werden.

Gruß
John

von Joerg (Gast)


Lesenswert?

Hallo John,
Deine Schaltung müsste auch funktionieren. Vielen Dank für Deine Mühe.
Ich bleibe jedoch beim vorgenannten Ansatz, da ich dort weniger Bauteile 
benötige.

(Bin gerade am routen und bekomm' graue Haare)
:-)


Viele Grüße
Joerg

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.