Forum

Einloggen | Registrieren | RSS  

Michael Ruf(R)

14.02.2008,
14:50
 

Zeitverögerung (Schaltungstechnik)

Hallo Zusammen,

ich habe folgendes Problem und hoffe Ihr könnt mir helfen.

Ich möchte ein Rechtecksignal zeitverzögern (d.h. steigende und fallende Flanke um die gleiche Zeit verschieben, die Frequenz soll gleich bleiben).
Die Zeit, um die es verzögert wird, soll von einem Mikrocontroller gesteuert werden (z.B. über PWM).
Gibt es eine Schaltung, z.B. mit dem NE555, die so etwas realisieren kann? Ich habe leider noch nie etwas mit dem NE555 zu tun gehabt und kenne mich daher nicht aus.

Kann mir jemand sagen wie eine solche Schaltung aussehen könnte, bzw. ob es überhaupt möglich ist??

Vielen Dank für Eure Hilfe!

Gruß

Michael

Theo

14.02.2008,
14:54

@ Michael Ruf

Zeitverögerung

Hallo

Welche Frequenz soll um welche Zeit verzögert werden?

Theo

Harald Wilhelms(R)

E-Mail

14.02.2008,
15:04
(editiert von Harald Wilhelms
am 14.02.2008 um 16:52)


@ Michael Ruf

Zeitverögerung

» Hallo Zusammen,
»
» ich habe folgendes Problem und hoffe Ihr könnt mir helfen.
»
» Ich möchte ein Rechtecksignal zeitverzögern (d.h. steigende und fallende
» Flanke um die gleiche Zeit verschieben, die Frequenz soll gleich bleiben).
»
» Die Zeit, um die es verzögert wird, soll von einem Mikrocontroller
» gesteuert werden (z.B. über PWM).
» Gibt es eine Schaltung, z.B. mit dem NE555, die so etwas realisieren kann?
» Ich habe leider noch nie etwas mit dem NE555 zu tun gehabt und kenne mich
» daher nicht aus.
»
» Kann mir jemand sagen wie eine solche Schaltung aussehen könnte, bzw. ob
» es überhaupt möglich ist??
»
» Vielen Dank für Eure Hilfe!
»
» Gruß
»
» Michael

Eine triviale Lösung fällt mir da auch nicht ein.
Innerhalb gewisser Grenzen geht es vielleicht mit
zwei Monoflops; eins triggert auf die negative Flanke
und das zweite auf die positive. Beide Ausgangssignale
müssen dann noch richtig Verknüpft werden.
Die flexibelste Lösung und gut geeignet zuur Steuerung
mit einem uC wäre es wohl, wenn Du das Rechteck mit
hoher Frequenz abtastest, die Abtastwerte in ein FiFo
eingibst, und sie verzögert wieder ausliest.
Gruss
Harald

Michael Ruf(R)

14.02.2008,
16:10

@ Theo

Zeitverögerung

» Hallo
»
» Welche Frequenz soll um welche Zeit verzögert werden?
»
» Theo

Hallo Theo,

das Signal hat eine Frequenz, die sich von praktisch Null bis max. ca. 500Hz ändert. Diese Signal soll 1 zu 1 zeitverzögert weitergegeben werden. Die Verzögerung soll von einem uC von 0 (keine Verzögerung) bis maximal wenige ms eingestellt werden können. Z.B. 60% PWM = 0,4ms (nur als Hausnummer).

Danke für die Hilfe!

Gruß

Michael

Michael Ruf(R)

14.02.2008,
16:13

@ Harald Wilhelms

Zeitverögerung

» » Hallo Zusammen,
» »
» » ich habe folgendes Problem und hoffe Ihr könnt mir helfen.
» »
» » Ich möchte ein Rechtecksignal zeitverzögern (d.h. steigende und
» fallende
» » Flanke um die gleiche Zeit verschieben, die Frequenz soll gleich
» bleiben).
» »
» » Die Zeit, um die es verzögert wird, soll von einem Mikrocontroller
» » gesteuert werden (z.B. über PWM).
» » Gibt es eine Schaltung, z.B. mit dem NE555, die so etwas realisieren
» kann?
» » Ich habe leider noch nie etwas mit dem NE555 zu tun gehabt und kenne
» mich
» » daher nicht aus.
» »
» » Kann mir jemand sagen wie eine solche Schaltung aussehen könnte, bzw.
» ob
» » es überhaupt möglich ist??
» »
» » Vielen Dank für Eure Hilfe!
» »
» » Gruß
» »
» » Michael
»
» Eine triviale Lösung fällt mir da auch nicht ein.
» Innerhalb gewisser Grenzen geht es vielleicht mit
» zwei Monoflops; eins triggert auf die negative Flanke
» und das zweite auf die positive. Beide Ausgangssignale müssen dann noch
» richtig Verknüpft werden.
» Die flexibelste Lösung und gut geeignet zuur Steuerung
» mit einem uC wäre es wohl, wenn Du das Rechteck mit
» hoher Frequenz abtastest, die Abtastwerte in ein FiFo
» eingibst, und sie verzögert wieder ausliest.
» Gruss
» Harald

Hallo Harald,

der uC ist leider nicht sehr leistungsstark und duch die Anwendung schon gut ausgelastet. Deshalb sollte er so wenig wie möglich belastet werden. Am besten wäre es wenn er die Zeitverzögerung einfach als z.B. PWM-Wert ausgeben könnte und die Schaltung dann das Signal um die entsprechende Zeit verzögert weiterleiten würde.

Danke für die Hilfe!

Gruß Michael

gregor

14.02.2008,
18:24

@ Michael Ruf

Zeitverögerung

hallo
Meine erste Idee wäre die folgende:

Ein Integrator erzeugt eus dem Rechteck ein Dreieck oder besser Rechteck mit immer gleichen Rampen: __/--__/--__
Diese Rampen dauern natürlich so lange wie deine max. Verzögerung. Jetzt irgend eine Schmitt-Trigger ähnliche Schaltung dahinter mit einstellbarer Schaltschwelle.

Dein uC verstellt dann diese Schaltschwelle entweder direkt mit einem DAC oder vom PWM-Signal den Mittelwert mit einem einfachen Filter bilden.

Gruss Gregor.

gregor

14.02.2008,
18:50

@ Michael Ruf

Zeitverögerung

auf die steigende und fallende Rampe richtig zu Triggern könnte doch ewtas schwieriger werden. Kannst dir ja mal ein paar Gedanken machen....

hws(R)

E-Mail

59425 Unna,
15.02.2008,
08:33

@ Michael Ruf

dazu nimmst du ebenfalls den µC ...

Ein Pinchen als Eingang für dein Rechtecksignal. (am besten per Interrupt, der auf positive UND negative Flake reagiert)
Und die Verzögerungszeit machst du intern über Timer oder irgend ne Taktroutine und gibst das verzögerte Signal wieder aus.

Dafür sparst du dir die PWM. Sowohl die Rechenzeit, als auch das Pinchen.

Wenn's der µC nicht mehr packt (Pinanzahl oder Rechenauslastung - glaub ich allerdings nicht) Dann eben nen zweiten µC. Irgends son 8pol PIC für unter 1Euro oder Atmel Tiny.

hws

Michael Ruf(R)

15.02.2008,
12:36

@ hws

dazu nimmst du ebenfalls den µC ...

» Ein Pinchen als Eingang für dein Rechtecksignal. (am besten per Interrupt,
» der auf positive UND negative Flake reagiert)
» Und die Verzögerungszeit machst du intern über Timer oder irgend ne
» Taktroutine und gibst das verzögerte Signal wieder aus.
»
» Dafür sparst du dir die PWM. Sowohl die Rechenzeit, als auch das Pinchen.
»
» Wenn's der µC nicht mehr packt (Pinanzahl oder Rechenauslastung - glaub
» ich allerdings nicht) Dann eben nen zweiten µC. Irgends son 8pol PIC für
» unter 1Euro oder Atmel Tiny.
»
» hws

Hallo hws,

genau so wie du sagtest habe ich es schon gemacht. Das Problem ist, das der uC dann so ausgelastet ist, dass der Watchdog nicht rechtzeitig getriggert wird (blöder Window Watchdog).
Aber die Idee mit dem zweiten uC ist gut. Vllt werd ich es so machen.

Danke für die Hilfe!

Gruß

Michael

elektrönchen

15.02.2008,
23:58

@ Michael Ruf

Ist zumindest....

...die einfachste und, was Leistungsfähigkeit <-> Auslastung des µc angeht, beste Lösung, kann ich dir bestätigen. Ab einem gewissen Verhältnis von Eingangsfrequenz zu Zeitverzögerung das von Harald erwähnte FiFo nicht vergessen.

Gruß elektrönchen

hws(R)

E-Mail

59425 Unna,
16.02.2008,
12:56

@ elektrönchen

nöö ..

» Eingangsfrequenz zu Zeitverzögerung das von Harald erwähnte FiFo nicht
» vergessen.

Du willst doch wohl nicht das Rechtecksignal ständig einlesen und in einem FiFo speichern?
Wenn man DAS macht, ist sicherlich bald die Rechenkapazität ausgelastet (und die Speciherkapazität des Ram's auch). Sollte er ähnliche Unsinnige Tricks auch in seinem Hauptprogramm gemacht haben, wundert es natürlich nicht, wenn sein µC ausgelastet ist.

Du merkst dir die Flanke des Rechtecks, setzt einen Verzögerungszähler auf die gewünschte Zeit und dieser Zähler wird in festen Abständen runtergezählt. Natürlich NICHT in einer Verzögerungsschleife, die nutzlos Rechenzeit verballert, sondern z.B. in einem Timer-Interrupt, der regelmässig kommt, abner nur wenige Mikrosekunden Rechenzeit kostet. Üblicherweise hat man so einen Interrupt eh mitlaufen, wenn man irgend was anderes schon berechnet (wie er es macht)

Und wenn der Verzögerungszähler Null erreicht, wird die Flanke ausgegeben.

Selbst, wenn in der Zwischenzeit schon die andere Flanke am Eingang gekommen ist - deren Verzögerungszähler ist dann noch nicht Null und die Fanke "wartet" dann noch auf ihre Ausgabe.

Sollte die Verzögerungszeit grösser werden, als eine komplette Periode des Eingangssignales - auch kein Problem. Dann braucht man eben mehr als je eine Verzögeruingsvaribale für die Up- und Down-Flanke.

hws

elektrönchen

16.02.2008,
20:40

@ hws

nöö?

Hallo,

» Sollte die Verzögerungszeit grösser werden, als eine komplette Periode des
» Eingangssignales - auch kein Problem. Dann braucht man

ja eben, das meinte ich ja auch mit "ab einem gewissen Verhältnis". Ich denke halt, wenn er nicht genau weiß wieviele Perioden es maximal werden könnnen, die während der Zeitverzögerung eingelesen werden müssen, ist die praktischste Lösung eben ein FiFo......oder was meinst du? :lookaround:

Sonst hast du freilich recht.

Gruß elektrönchen

hws(R)

E-Mail

59425 Unna,
17.02.2008,
18:53

@ elektrönchen

nöö !

» praktischste Lösung eben ein FiFo......oder was meinst du? :lookaround:

Wenn du den Ram-Platz und die Rechenzeit hast :-(
Du musst dauernd den Zustand der Eingangsleitung abfragen, Zustand Zwischenspeichern und wieder ausgeben.
Am Einfachsten würde man das mit einem Ringspeicher machen - wenn es sein muss. Und das ist hier sicher nicht der Fall.

Ist die am einfachsten zu verstehende Lösung, aber ökonomisch gesehen die schlechteste. Der µP kommt zu nix anderem nehr.

Mit der Verzögerungszeit und einer Interruptroutine dürfte 99% von Speicher und Rechenzeit noch frei bleiben.

hws

Harald Wilhelms(R)

E-Mail

18.02.2008,
08:21

@ hws

nöö ..

» » Eingangsfrequenz zu Zeitverzögerung das von Harald erwähnte FiFo nicht
» » vergessen.
»
» Du willst doch wohl nicht das Rechtecksignal ständig einlesen und in einem
» FiFo speichern?
» Wenn man DAS macht, ist sicherlich bald die Rechenkapazität ausgelastet
» (und die Speciherkapazität des Ram's auch).

Ich halte nach wie vor ein FIFO für die flexibelste
Lösung. Dabei bin ich allerdings davon ausgegangen,
das dafür ein fertiger FIFO-Baustein genommen wird,
der, abhängig von der gewünschten Zeitauflösung, einen
festen Ein- und Auslesetakt bekommt. Der uC braucht dann
nur noch mit eine Art Softwareschieberegister für die
Zeitverzögerung zwischen Ein- und Ausgabetakt zu sorgen.
Selbst das könnte man noch mit einem externen Schiebe-
register lösen. Der FIFO muss dann nur noch die maximal
mögliche Anzahl der Abtastvorgänge zwischen Ein- und
Ausgabe speichern. Solche Signalverzögerungen sind
übrigens in der Elektronik weitverbreitet. Früher hat
man dafür analoge sog. Verzögerungsleitungen aus
Ketten von L und C genommen, die es fertig zu kaufen gab.
Für etwas längere Zeiten z.B. im PAL-Fernseher hat man
das Signal in Form von Ultraschall durch einen Glaskörper
geschickt. Noch längere Zeiten hat man mit Eimerketten-
speichern und Metallspiralen (im Audiobereich) erzielt.
Gruss
Harald

hws(R)

E-Mail

59425 Unna,
18.02.2008,
08:45

@ Harald Wilhelms

nöö ..

» Ich halte nach wie vor ein FIFO für die flexibelste
» Lösung.

Das ist das, was klein-Fritzchen zuerst einfällt. Ob's das flexibelste ist? Software ist üblicherweise flexibler als Hardware.

Was dann das externe Schieberegister einspart. Und bei entsprechender vernünftiger Programmierung sollten die paar µs für ne Interruptroutine auch noch da sein.
Und (jetzt vermute ich mal ins Blaue) wenn man das Hauptprogramm etwas optimiert, wird man vermutlich auch noch Rechenzeit im µP einsparen. Dafür spricht die Eingangsfrage. Wer voll fit in der Programmierung ist, schreibt üblicherweise rechenzeitoptimierter und stellt solche Fragen nicht.
Aber um sowas dazuzulernen, ist das Forum schließlich da.

hws

hws(R)

E-Mail

59425 Unna,
18.02.2008,
08:48

@ elektrönchen

dann weiss er aber auch nicht ...

» .. wenn er nicht genau weiß wieviele Perioden es maximal werden
» könnnen, die während der Zeitverzögerung eingelesen werden müssen, ist die
» praktischste Lösung eben ein FiFo

Dann weiss er aber auch nicht, wie lang er sein Schieberegister machen muss - bei gegebener Genauigkeit der Abtastung.

Und Software läst sich leicht ändern, Hardware eher weniger (wenn's nicht eh nen Lochrasteraufbau ist.

hws