Einfache digitale Wiedereinschaltverzögerung im µs Bereich

Gast #5674419
Lesenswert?

Hallo,

ich möchte gerne folgende Schaltung bauen:

Die Schaltung hat einen IN und einen OUT Pin.

Links kommt ein digitales Signal (0V=LOW 3V=HIGH).

Wenn IN=LOW wird, soll OUT umgehend LOW werden.

Wenn IN=HIGH wird, soll OUT nach eine definierbaren Zeitverzögerung HIGH 
werden. Die Zeit soll zwischen 300ns und 10µs einstellbar sein.

Der Sinn ist, dass beim IN schnelle Pegelwechel bis zu 50 MHz vorkommen 
können, die zum OUT nicht weitergereicht werden dürfen. Wichtig dabei 
ist jedoch, dass die Latenz nur einige ns betragen darf.
Wenn IN also LOW wird, muss OUT umgehend (d.h. max. nach 10ns) auch LOW 
sein.

Anders gesagt: Beobachtet man auf dem Oszi OUT, darf HIGH beliebig kurz 
oder lang sein, aber die Zeit der LOW-Phase darf nicht unter die 
definierte Zeitspanne fallen.

Ich hoffe, ich habe es einigermassen verständlich erklärt.

Ich schwanke jetzt zwischen einen 8 Bitter, mit dem man schon richtig 
tricksen müsste, damit es keinen Jitter gibt (Latenzfreie Abschaltung), 
und einer analogen Schaltung. Vielleicht gibt es dafür auch schon 
vorgefertigte digitale Verzögerungsschaltkreise, die nur von LOW nach 
HIGH verzögern? Kennt jemand sowas?
(Firma: Vescomp) #5674542
Lesenswert?

Georg G. schrieb:
> Mach es diskret mit einem Monoflop und etwas Logik.

mike schrieb:
> Das geht mit einem einfachen Monoflop wie z.B. 74AHC(T)123

 Soviel ich weiss, ist bei Monoflop die Impulsdauer einstellbar,
 nicht aber die Verzögerung.

 Dein Problem ist der Übergang von High nach Low (Verzögerung von
 max. 10ns), deswegen solltest du das mit einem AND-Gatter und
 Mikrocontroller machen, wie im Anhang.

 uC (in diesem Fall Mega8, aber Tiny13 tut es auch), definiert
 irgendein Pin (in diesem Fall PC0) als Eingang, einen anderen
 Pin (in diesem Fall PC1) als Ausgang.

 Beim Start geht PC1 auf High, PC0 wird dauernd abgefragt.

 Sobald PC0 auf LOW geht, wird auch PC1 auf LOW gesetzt.
 Sobald PC0 auf High geht, wird nach vorgegebenen Verzogerungs-
 zeit auch PC1 auf High gesetzt.

 Und das wars schon.
Angehängte Dateien:
Gast #5674576
Lesenswert?

Ich dachte in der Tat auch reflexartig an ein AND Gatter. Das Problem 
ist, dass der tiny schon wirklich extrem hoch getaktet sein muss, damit 
der Jitter im Rahmen bleibt. Ein Loop ist deshalb gar nicht praktikabel. 
Eigentlich geht das, wenn überhaupt, nur via Interrupts, die direkt den 
Portpin steuern. Vielleicht kann man einen PWM missbrauchen. Ich schaue 
es mir mal an. Das ganze wirkt aber auf mich wie Murks, da ein µC für 
sowas (Schaltgenauigkeit im ns Bereich) nicht gemacht worden ist. Selbst 
bei 20 MHz wäre ein verlorener Takt (Jitter) schon 50ns Verlust. Das ist 
ausserhalb der Anforderung.
(Firma: Vescomp) #5674652
Lesenswert?

Hans schrieb:
> Ich dachte in der Tat auch reflexartig an ein AND Gatter. Das Problem
> ist, dass der tiny schon wirklich extrem hoch getaktet sein muss, damit
> der Jitter im Rahmen bleibt. Ein Loop ist deshalb gar nicht praktikabel.

 Denkst du?
 Schlecht gedacht, bzw. uberhaupt nicht gedacht.

> Eigentlich geht das, wenn überhaupt, nur via Interrupts, die direkt den
> Portpin steuern. Vielleicht kann man einen PWM missbrauchen. Ich schaue

 Nein.

 Von Low nach High wird verzogert (300ns bis 10µs) geschaltet.
 Minimale Verzögerung ist 300ns oder 6 Takte bei 20MHz, das reicht
 vollkommen, man muss nur wissen wie.

 Von High nach Low wird der uC gar nicht eingeschaltet, das geht direkt
 an AND-Gatter - bleibt nur Gatterverzögerung und die liegt innerhalb
 von dir geförderten 10ns.

 Klar?

> es mir mal an. Das ganze wirkt aber auf mich wie Murks, da ein µC für
> sowas (Schaltgenauigkeit im ns Bereich) nicht gemacht worden ist. Selbst
> bei 20 MHz wäre ein verlorener Takt (Jitter) schon 50ns Verlust. Das ist
> ausserhalb der Anforderung.

 Erst mal versuchen zu verstehen, ev. Logiktabelle erstellen und erst
 wenn man verstanden hat wie das funktionieren soll, über Murks reden.
Gast #5674716
Lesenswert?

Du solltest erstmal selber denken, bevor du direkt losflamest.

t     IN   OUT   AND-OUT
10n   1    1     1
20n   0    1     0
30n   1    1     1  <<< FALSCH!

Nach 30ns hat der µC noch nichtmal mitbekommen, dass er was tun soll. 
Zieht IN währenddessen wieder an, wird das AND Gatter HIGH.
Gast #5674724
Lesenswert?

Hans, die Aufgabe ist nicht eindeutig:

Bei Einstellung 1us, wie lang soll ein 10us Impuls werden? 11us oder 
10us oder egal (irgendwas dazwischen)

Wenn der Ausgangspuls nun wieder high ist, darf er sofort wieder Low 
werden? Also im extrem ein Highpuls < 1ns?
Gast #5674732
Lesenswert?

Es ist eine WIEDEREINSCHALT-Verzögerung.

Beispieltabelle bei Einstellung 300ns:

t      IN    OUT
0n     0     0
100n   1     1 (Sofort ein, da Reset, also keine Totzeit läuft)
200n   1     1
300n   1     1
400n   0     0
500n   1     0 (Totzeit läuft noch)
600n   1     0
700n   1     1
800n   0     0
900n   0     0
1000n  0     0
1100n  1     1 (Sofort ein, da Totzeit bereits abgelaufen ist.)

Wenn also OUT LOW ist, MUSS OUT mindestens 300ns LOW sein. (Bei der 
Einstellung 300ns)
Gast #5674949
Lesenswert?

Hans schrieb:
> t      IN    OUT
> 0n     0     0
> 100n   1     1 (Sofort ein, da Reset, also keine Totzeit läuft)
> 200n   1     1
> 300n   1     1
> 400n   0     0
> 500n   1     0 (Totzeit läuft noch)
> 600n   1     0
> 700n   1     1
> 800n   0     0
> 900n   0     0
> 1000n  0     0
> 1100n  1     1 (Sofort ein, da Totzeit bereits abgelaufen ist.)

Die vorgeschlagene Lösung mit Monoflop und Gatter geht prinzipiell. 
Minimale Zeit 300ns sollten auch erreichbar sein.
Ob die Forderung in der Tabelle bei 100ns bzw. bei 0ns damit erreicht 
wird - ich bin mir nicht sicher. Anfangsbedingungen sind meist etwas 
schwierig.

Und, was passiert, wenn z.B. bei 600ns wieder IN=0 wird und dort für 
50ns oder 200ns andauert?
Ich habe den Eindruck, deine Spezifikationen sind noch nicht ganz 
ausgearbeitet.
Gast #5676105
Lesenswert?

Peter D. schrieb:
> Nö, er muß retriggerbar sein, sonst können Pulse durchkommen. Die
> Sperrzeit muß immer neu ablaufen.

Verstehe ich nicht. Lassen wir den Reset-Fall mal außen vor (den will 
ich garnicht verstehen)

Eine 0 am Eingang soll mindestens Xµs (0.3...10) verlängert werden.

Also ein Monoflop, der schnell genug ist für die 50MHz (also dessen 
Ausgang innerhalb ~10ns durchschaltet)

Dann IN-Eingang und Mondoflop-Ausgang auf ein UND-Gatter.

Und "high" Pulse sollen ja explizit durchkommen, bzw. genau danach habe 
ich den TO gefragt.

> Ein Gatter wird für die Durchlaufzeit des Monoflops Spikes erzeugen,
Nicht, wenn die 50MHz des TO eingehalten werden. Ansonsten: JA. Dann 
bräuchte man noch ein etwa 10ns nachtriggerbares Monoflop zur 
Eingangsaufbereitung oder einen Tiefpass.
#5676516
Lesenswert?

Peter D. schrieb:
> Z.B. Du willst nur Pulse >100ns durchlassen. Nun kommen 2 Pulse mit 40ns
> Dauer und 40ns Pause. Ohne Retriggern fällt beim 2. Puls der 100ns
> Monoflop ab und läßt ihn durch.

Hi,
sowas in der Art nur genau anders herum. Die Veroderung laut DeMorgan 
und NANDs:

oder noch was anderes Bild rechts, sind ja sowieso zwei in einem DIL16 
Package drin.;-)


ciao
gustav
Angehängte Dateien:
Gast #5679484
Lesenswert?

Peter D. schrieb:
> Z.B. Du willst nur Pulse >100ns durchlassen. Nun kommen 2 Pulse mit 40ns
> Dauer und 40ns Pause. Ohne Retriggern fällt beim 2. Puls der 100ns
> Monoflop ab und läßt ihn durch.

Was bedeutet "fällt ab und lässt ihn durch"?

Bei Deiner Pulsfolge und meiner Schaltung wäre der Ausgang 120ms low.

 * 100ms durch das Monoflop (danach fällt es ab, wird also high)
 * 20ms durch den zweiten Puls (UND-Gatter, egal ob Puls oder Monoflop 
low sind ist der Ausgang low)

40ns 0
40ns 1
40ns 0
danach 1
--> 120ns low-Puls. Genau wie vom TO gewünscht, zumindest wie 
beschrieben.

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