Forum: Mikrocontroller und Digitale Elektronik Phasenverschiebung bei ~ Gausskurve messen


von Thomas L. (tom)


Lesenswert?

Hallo zusammen.

So, ich stehe vor einem kleinen Problem bei dem ich gerne den einen oder 
anderen Input von euch gebrauchen könnte.

Folgende Problemstellung:
* Ich habe zwei analoge Signale (in Wirklichkeit sind es mehr, für die 
Problemstellung reicht es aber zwei zu betrachten), zusätzlich gibt es 
ein Triggersignal
* Signal A ist das Referenzsignal. Dieses entspricht einer leicht 
verrauschten Gausskurve
* Signal B ist das Ergebnissignal. Dieses entspricht ebenfalls einer 
leicht verrauschten Gausskurve.
* 1 mal pro Millisekunde tritt der Trigger auf. Ab diesem Zeitpunkt 
kommt zuerst irgendwann Signal A, und kurz darauf Signal B
* Gesucht ist nun die Zeit zwischen dem Peak von Signal A und dem Peak 
von Signal B.

Da die Signale leicht verrauscht sind, müsste man evtl. noch ein Filter 
vorschalten. Die Reihenfolge der Signale ist sichergestellt.

Idealerweise suche ich nun ein HW-Teil (dessen Namen ich eben nicht 
weiss) das mir genau diese Zeitdifferenz (oder ein dazu proportionales 
Signal) ausspuckt.

Daher nun meine Frage: Wonach suche ich eigentlich?

Eine Abtastung im us-Bereich ist sicher ok, es wird auch immer über 
dutzende Messwerte gemittelt und den endgültigen Wert zu erhalten.
Der Notfall-Plan wäre, dies über einen Vielfach-ADC mit hoher Samplerate 
zu machen, ich könnte mir aber vorstellen, dass es hierfür doch schon 
eine bessere Möglichkeit geben muss.

von Na Sowas (Gast)


Lesenswert?

Wir machen sowas mit einem Oszilloskop

von Thomas L. (tom)


Lesenswert?

Jede ms? Ihr seid aber verdammt flott.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Haben die beiden Signale — abgesehen vom Rauschen — exakt die gleiche
Form und Amplitude? Wenn nicht, wird es ohne softwaremäßige Signalver-
arbeitung ziemlich schwierig, weil du den Zeitpunkt des Signalmaximum
ohne Verfälschung durch das Rauschen ermitteln musst.

von Thomas L. (tom)


Lesenswert?

Hallo Yalu

Danke für die Antwort schonmal.
Form und Amplitude sind (leider) nicht dieselben. Ähnlich, aber nicht 
dasselbe.
Dass der Messpunkt durch das Rauschen variieren kann sollte eigentlich 
kein Problem darstellen, schlussendlich wird wieder über viele 
Messpunkte (1000) gemittelt wodurch sich der Einfluss zumindest 
minimieren würde.
Nehmen wir mal an, das Rauschen ist vom Einfluß her klein gegenüber dem 
endgültigen Signal, was würdest du dann verwenden?

von NopNop (Gast)


Lesenswert?

Also in Software wird sowas (z.B. bei Ultraschall) mit einer 
Kreuzkorrelation gemacht. Funktioniert sehr gut.

Könnte man dass in HW nicht irgendwie über einen Mischer oder sowas 
ähnlichem machen?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Thomas L. schrieb:
> Nehmen wir mal an, das Rauschen ist vom Einfluß her klein gegenüber dem
> endgültigen Signal, was würdest du dann verwenden?

Ein (lokales) Maximum kann man dadurch bestimmen, dass man das Signal
differenziert und dann den Nulldurchgang bestimmt. Aber das funktioniert
nur bei Rauschfreien Signalen zuverlässig, da bei der Differenzierung
das Rauschen proportional zu seiner Frequenz verstärkt wird, so dass das
differenzierte Signal u.U. sehr viele Nulldurchgänge hat.

Man kann diesen Effekt mit einem Tiefpassfilter vor dem Differenzierer
vermindern und evtl. sogar beseitigen. Wenn sich allerdings das
Rauschspektrum mit dem Spektrum des Nutzsignals überlappt, wird bei
einer nahezu vollständigen Elimination des Rauschens auch das Nutzsignal
beeinträchtigt. Damit erscheint das ermittelte Maximum zeitlich
verschoben. Wenn die Signale A und B gleich aussehen, ist das kein
Problem, da die Verschiebung beidesmal den gleichen Betrag hat und die
Zeitdifferenz der beiden Maxima damit unverändert bleibt.

NopNop schrieb:
> Also in Software wird sowas (z.B. bei Ultraschall) mit einer
> Kreuzkorrelation gemacht. Funktioniert sehr gut.

Dann muss man aber die Signalform vorab schon möglichst genau kennen.
Im vorliegenden Fall würde es schon genügen, wenn die Signale A und B
zwar unbekannt, aber untereinander gleich wären, dann könnte man sie
untereinander kreuzkorrelieren. Aber beides ist hier wohl nicht der
Fall.

Trotzdem hat mit der digitalen Signalverarbeitung wesentlich mehr
Möglichkeiten als mit der analogen. Hier wurde ebenfalls das Problem der
Maximumbestimmung diskutiert:

  Beitrag "Minimum und Maximum aus Messreihe berechnen"

von NopNop (Gast)


Lesenswert?

Yalu X. schrieb:
> aber untereinander gleich wären

Sie müssen nicht gleich sein, sondern nur ähnlich. Bei Ultraschall wird 
auch nie das gleiche Signal zurückkommen wie es ausgesendet wurde.
Über die Kreuzkorrelation soll ja eben die Ähnlichkeit von 2 Signalen 
bewertet werden.

Yalu X. schrieb:
> Dann muss man aber die Signalform vorab schon möglichst genau kennen.

Er schreibt ja dass es eine Gauskurve ist.
Ich konnte jetzt nirgends lesen dass er die nicht genauer spezifizieren 
kann.
Oder hab ich mich verlesen?
Wenn er das genauer kann, dann ist es schon möglich.

Grüße

von Thomas L. (tom)


Lesenswert?

So, mal recht herzlichen Dank euch beiden, die ganze Diskussion hilft 
mir mal schon soweit, als dass ich sehe dass es da nicht "das Bauteil" 
gibt das ich mir erhofft habe :)

Die Signalform ist wirklich ähnlich einer Gauss'schen Glockenkurve; wie 
gut sie diese annähert weiss ich jedoch noch nicht, ich bekomme erst 
nächste Woche die neuesten Testreihen. Dann sehe ich auch, wie ähnlich 
das Referenzsignal zu dem eigentlichen Signal ist.

So wie es mir derzeit scheint, läuft es auf ein Sampling des Signals 
hinaus. Ob ich danach dann eine KK mache oder die erste Ableitung bilde 
- es wird also doch etwas Rechenleistung erforderlich sein.

Ich werde mich glaube ich im ersten Schritt mal bzgl. KK schlau machen, 
wenn ihr noch weitere gute Ideen habt, nur her damit - je mehr HW desto 
besser :)

von Juergen G. (jup)


Lesenswert?

Ich hab mal was aehnliches gemacht bei einem coin-evaluator.

Fast gleiche Bedingungen.
Auch Gausskurve, auch Phasenverschiebung.
Allerdings war mir nur die Phasenverschiebung wichtig und ich habe es 
mit einem XOR in HW geloest aehnlich wie es die PLL IC's machen.
Die gefilterte Spannung aus dem XOR ist proportional zur 
Phasenverschiebung.

Ju

von Thomas L. (tom)


Lesenswert?

Hallo Jürgen

Der Ansatz klingt interessant, könntest du da vielleicht noch ein paar 
Worte dazu sagen? Ich verstehe nicht ganz wie da ein XOR weiterhelfen 
soll, gibt ja keinen klassischen "Wertwechsel" zwischen zwei Werten, da 
es sich ja um keine Sinus-ähnliche Schwingung handelt.

Wobei .. es muss ja kein Sinus sein, theoretisch sollte ja jedes sich 
wiederholende Signal ausreichen ... oder sehe ich das falsch? Ich 
befürchte ich werde das mal simulieren müssen ... :(

von Juergen G. (jup)


Lesenswert?

Das geht mit jedem einigermassen sauberen Signal.
In meinem Fall ist das eine ein Source und das andere
ein "Echo" Signal. Ich brauchte die Phasenverschiebung
zwischen den beiden.
Ich habe zBsp. mit einem Oscillator einen Sinus auf
eine Spule gegeben dann ein Luftspalt und eine zweite
Spule. Zwischen den beiden Spulen faellt die Muenze durch.
Das Material der Muenze verursacht eine Induktivitaetsaenderung.
Das Signal in der zweiten Spule sieht immer anders aus als in
der ersten, irgendwie haben sie aber immer etwas gemeinsam.
Aus der Phasenverschiebung zwischen den Signalen der beiden
Spulen kann ich einiges ueber das Material, Dicke und Groesse
ableiten.

Wie man die Phasenverschiebung mittels XOR bekommt ist im
Datenblatt des 47HC4046 ganz gut beschrieben.
oder hier.
http://ecee.colorado.edu/~ecen4618/lab4.pdf

Die gehen immer von einem Rechteck als Signal aus, es geht
aber mit jedem anderen Signal.
Ich habe meine Gausskurve mit einem Opamp und Hysterese
konditioniert zu einem Rechteck auf CMOS Level und es
dann in das XOR gefuettert.

So hatte ich das Original analog und ein gutes digital Signal um
meine Auswertungen zu machen.


Ju

von ein Physiker (Gast)


Lesenswert?

Hallo Tom,

Der Begiff, den du suchst ist vermutlich Time to Digital Converter 
(TDC).
Hier gibt es eine Übersicht über verschiedene Techniken:
http://www.ko4bb.com/~bruce/TDC.html
Evtl ist auch ein Constant Fraction Discriminator (CFD) interessant. Der 
macht den Triggerzeitpunkt (fast) von der Pulshöhe unabhängig.

Interessant wäre natürlich, wie breit und wie weit auseinander die Pulse 
sind. Davon hänt alles weitere ab...

Grüße
Stephan

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.