Forum: Mikrocontroller und Digitale Elektronik Einfache digitale Wiedereinschaltverzögerung im µs Bereich


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Hans (Gast)


Bewertung
0 lesenswert
nicht 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?

von Georg G. (df2au)


Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> max. nach 10ns

dann kannst du dir eine Prozessor Lösung schon mal abschminken.

Mach es diskret mit einem Monoflop und etwas Logik.

von mike (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Das geht mit einem einfachen Monoflop wie z.B. 74AHC(T)123

Der hat typisch etwa 10ns Verzögerung, kommt also hin.

von Marc V. (Firma: Vescomp) (logarithmus)


Angehängte Dateien:

Bewertung
-1 lesenswert
nicht 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.

von komiker (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
Marc V. schrieb:

>  deswegen solltest du das mit einem AND-Gatter und
>  Mikrocontroller machen,

Ist ja irre!

von Hans (Gast)


Bewertung
1 lesenswert
nicht 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.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
1 lesenswert
nicht 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.

von Hans (Gast)


Bewertung
-1 lesenswert
nicht 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.

von A. S. (achs)


Bewertung
0 lesenswert
nicht 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?

von Hans (Gast)


Bewertung
0 lesenswert
nicht 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)

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Marc V. schrieb:
> Soviel ich weiss, ist bei Monoflop die Impulsdauer einstellbar,
>  nicht aber die Verzögerung.

Dann schaltet man eben noch einen 74HC74 hinter den 74HC123.

von Marc V. (Firma: Vescomp) (logarithmus)


Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Du solltest erstmal selber denken, bevor du direkt losflamest.

 Das Problem liegt nicht im denken, sondern beim lesen, ich habe
 die 50MHz glatt übersehen.

 Was ist der Sinn des Ganzen?

von A. S. (achs)


Bewertung
1 lesenswert
nicht lesenswert
Dann reicht ein nicht nachtriggerbarer, flankengetriggerter monoflop und 
ein Gatter (+ggf Inverter)

Eine Low-Flanke aktiviert das monoflop. Solange es aktiv ist, bleibt der 
Gatter-Ausgang Low.

von HildeK (Gast)


Bewertung
0 lesenswert
nicht 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.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
A. S. schrieb:
> Dann reicht ein nicht nachtriggerbarer, flankengetriggerter monoflop und
> ein Gatter

Nö, er muß retriggerbar sein, sonst können Pulse durchkommen. Die 
Sperrzeit muß immer neu ablaufen.
Ein Gatter wird für die Durchlaufzeit des Monoflops Spikes erzeugen, 
daher ist ein D-FF die saubere Lösung.

von A. S. (achs)


Bewertung
0 lesenswert
nicht 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.

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
A. S. schrieb:
> Verstehe ich nicht.

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.

von Karl B. (gustav)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

: Bearbeitet durch User
von A. S. (achs)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.