Hallo,
ich stoße bei einer meiner Hobby-Basteleien zurzeit etwas an meine
Grenzen.
Ich habe zwei Sinus-Signale, welche beide die selbe Frequenz (50kHz) und
800µA haben und sich im Bereich von ca. 1-3V befinden.
Eines der Signale hat ungefähr eine Phasenverschiebung von 0-8°, und
sollte relativ genau (0.1°) bestimmt werden.
Da dies bei dieser Frequenz ungefähr einen ADU bzw. µC mit ca. ~100MHz
erfordert, wäre eine analoge Schaltung, sofern sie relativ simpel ist,
vielleicht eine bessere Alternative.
Meine Überlegungen wären zurzeit, dass ich beide Signale via
Nichtinvertierender-OPV Schaltung so stark verstärke, dass ein
Rechtecksignal entsteht (es wird so stark verstärkt, dass das Signal
sehr schnell in den Sättigungsbereich kommt - daher ungefähr ein
Rechtecksignal ergibt). Danach würde ich beide Signale mit einer
einfachen Phasendetektorschaltung bestehend aus zwei FlipFlops und einem
AND-Gatter analysieren.
Leider stoße ich dabei bei meinen Simulationen in Multisim auf den
Fehler, dass ich beim Simulieren angeblich keine "Konvergenz" erziele.
Könnte mir Jemand weiterhelfen, wie ich den Simulationsfehler behebe, ob
die Überlegen funktionieren kann oder bzw. hat Jemand eine bessere Idee?
Hallo Fritz,
ich kommentiere und korrigiere erst einmal etwas:
Fritz K. schrieb:> Ich habe zwei Sinus-Signale, welche beide die selbe Frequenz (50kHz) und> 800µA haben und sich im Bereich von ca. 1-3V befinden.
Die 800 µA haben hier nichts zu suchen.
> Eines der Signale hat ungefähr eine Phasenverschiebung von 0-8°
Und das andere? Na ja, du meinst: Die Phasen der beiden Signale sind
zueinander ca. um 0-8° verschoben.
> Da dies bei dieser Frequenz ungefähr einen ADU bzw. µC mit ca. ~100MHz> erfordert
Das ist nicht richtig. Genau genommen spielt die Abtastfrequenz fast gar
keine Rolle. Selbst bei Unterabtastung geht die Phaseninformation nicht
verloren. Aber das geht etwas weit, und ich weiß nicht, ob du einen
solchen Lösungsweg beschreiten wolltest oder könntest.
> Nichtinvertierender-OPV Schaltung so stark verstärke, dass ein
Was du jetzt beschreibst ist ein Komparator. Aber ein
Operationsverstärker ist zum einen deutlich langsamer und zum anderen,
was viel wichtiger ist, er kommt bei weitem nicht so schnell aus der
Sättigung heraus wie du es brauchst.
Immer wenn z. B. durch einen Komparator oder einen ADC (fast das
gleiche, der Komparator ist ein zeitkontinuierlicher 1-Bit ADC) ein
Signal "vereinfacht" wird, gehen auch Informationen verloren. Wenn mit
einem aufwändigeren Algorithmus das komplette Signal verarbeitet wird,
werden die Ergebnisse besser.
> einfachen Phasendetektorschaltung bestehend aus zwei FlipFlops und einem> AND-Gatter analysieren.
Wie soll die aussehen? Was macht die, wenn beide Signale exakt in Phase
liegen? Das ist generell ein mögliches Problem bei einer analogen
Schaltung.
> Leider stoße ich dabei bei meinen Simulationen in Multisim auf den> Fehler, dass ich beim Simulieren angeblich keine "Konvergenz" erziele.
Das ist doch fast eine digitale Schaltung - wo gibt's da Konvergenz? ->
Schaltung posten.
> hat Jemand eine bessere Idee?
Na klar, z. B. für den nächsten Grillabend. Aber ernsthaft: Welche Idee,
also welcher Lösungsweg besser ist, hängt doch, wie eigentlich immer,
von deiner Situation ab. Soll das ein superbilliges Massenprodukt
werden, oder eine einmaliger Hobbyversuch, der danach in der
Bastelschublade verschwindet, magst du lieber analoge Bauteile löten
oder stecken, kleine Prozessoren in C oder gar Assembler programmieren,
ein Raspi einsetzen um ja keine Hardware gestalten zu müssen oder darf
es gleich auf dem PC (über Soundkarte) sein?
Uwe B. schrieb:> Aber ein Operationsverstärker ist zum einen deutlich langsamer> und zum anderen, was viel wichtiger ist,> er kommt bei weitem nicht so schnell aus der Sättigung heraus> wie du es brauchst.
Durch die Differenzbildung hebt sich der Fehler heraus.
Ich werfe mal ein paar Ideen in den Raum:
1)Abtasten und über Goerzel berechnen.
2)Abtasten und über Kreuzkorrelation berechnen.
3)Die Idee aus 2) müsste doch auch analog gehen wenn man die Signale
Multipliziert und Aufsummiert (Tiefpass). So eine Art analoge KKF?
Frank schrieb:> 2)Abtasten und über Kreuzkorrelation berechnen.> 3)Die Idee aus 2) müsste doch auch analog gehen wenn> man die Signale Multipliziert und Aufsummiert (Tiefpass).> So eine Art analoge KKF?
Selbstverständlich geht das. I/Q-Mischer = Vier-Quadranten-
Demodulator = Synchrongleichrichter.
Referenzfrequenz muss zweifach vorhanden sein, nämlich mit
0° und 90° Phasenverschiebung (PLL mit Oszillator auf 4facher
Frequenz; 2 D-Flipflop).
Wenn das Messsignal spektral rein ist (=guter Sinus), kann
man Schaltermischer statt Analogmultiplizierern einsetzen,
weil dann keine Oberwellenmischung stattfinden kann, die zu
Fehlern führen würde.
Die Gleichspannungen hinter den Tiefpässen sind der Inphase-
und der Quadratur-Anteil; über den Pythagoras bekommt man
die Amplitude, durch Division des I- und Q-Anteils durch
die Amplitude erhält man den Koeffizienten für Sinus- und
Cosinus-Anteil.
Aufgrund der vier möglichen Vorzeichenkombinationen deckt man
alle vier Quadranten ab, d.h. der Phasenwinkel kann irgendwo
im Vollkreis liegen. Der Arcustangens liefert dann den
Winkel.
Fritz K. schrieb:> Eines der Signale hat ungefähr eine Phasenverschiebung von 0-8°, und> sollte relativ genau (0.1°) bestimmt werden.
Wichtig wäre zu wissen, ob du das Ergebnis als Digitalwert oder analog
brauchst, und wie schnell es vorliegen muss.
Man könnte auch eines der Signale um 90° in der Phase schieben. Danach
dieses phasenverschobene Signal und das andere Signal auf einen Mischer
geben und dessen Ausgangssignal tiefpassfiltern. Das Resultat ist eine
Gleichspannung, die sich wie der Sinus der Phasenverschiebung verhält.
Da nur sehr kleine Phasenverschiebungen bis 8° messen willst, kann man
das als näherungsweise linear betrachten.
Die 90° Phasenschiebung sollte auch relativ einfach zu realisieren sein,
da deine Frequenz konstant ist könnte man das z.B. mit RC-Gliedern tun.
Hi, Fritz,
das ist das passende Meßgerät:
http://www.ebay.de/itm/Vektor-Analyzer-ZPV-mit-reichlichem-Zubehor-/171956060329?hash=item28096140a9:g:1ykAAOSw~gRVtd6Z
0,1° ist aber schon eine stolze Forderung.
> Danach würde ich beide Signale mit einer einfachen> Phasendetektorschaltung
Oder nimm die eines handelsüblichen PLL-Schaltkreises wie CD4046. Da ist
der Komparator auch mit drin.
Auch möglich: Phasenvergleich am 2-Kanal-Oszilloskop, getriggert auf
eins der Signale.
Ciao
Wolfgang Horn
So, habe mir das nochmal gründlich alles überlegt, eure Vorschläge auch
mit einer Privatperson diskutiert, welche sich da auch etwas auskennt.
Haben nun folgenden Lösungsansatz entwickelt, welcher vielleicht
funktionieren könnte:
Beide Signale werden durch Komparatoren in Rechtecksignale gewandelt
(Schaltschwelle so gut wie möglich bei 0 - somit wird das Signal dann
high, wenn ein 0-Durchgang im Sinus stattfindet).
Danach werden beide Signale durch ein EXOR insofern gefiltert, dass am
EXOR Ausgang der Bereich durch ein High dargestellt wird, welcher
zwischen dem 0-Durchgang des ersten Signales und dem 0-Durchgang des
zweiten liegt - also der Zeitbereich welcher der Phasenverschiebung
entspricht.
Dieses EXOR-Signal wird dann mit einem sehr schnellen Takt verundet
(AND), und dann mit einem Zähler gezählt wie viele Perioden dieses
Taktes sich in der High-Phase des EXOR Signals ausgehen -> dadurch kann
die Zeit der High-Phase und somit auch der Phasenwinkel errechnet werden
- theoretisch.
Findet ihr diese Idee plausibel? Wenn nicht, warum?
Elektrische Grüße,
Fritz
Früher hat man beide Signale in Rechteckspannung umgewandelt und auf ein
XOR gegeben. Den Mittelwert der Ausgangsspannung hat man dann gemessen.
Das funktioniert auch bei variabler Frequenz bezüglich Phase: bei =Grad
0V bei 90 Grad 1/2 Vcc bei 180 Grad Vcc.
Es kommt halt drauf an, ob ein Mittelwert genügt, oder ob man die
Phasenverschiebung für jede Schwingung braucht.
Fritz K. schrieb:> Findet ihr diese Idee plausibel? Wenn nicht, warum?
Ein Zähler mit zwei Capture-Einheiten zusammen in einem µC liefert
genauere Ergebnisse. Dabei ist es zweckmäßig, eines der Signale zu
invertieren damit die Phasenlage 180 - 188° beträgt.
Ich habe das mal auf einem STM32F407 gemacht, was aber für Hobbyzwecke
wahrscheinlich zu aufwendig ist. Dabei werden Phasenlage und Frequenz
immer gleichzeitig erfaßt.
Fritz K. schrieb:> Haben nun folgenden Lösungsansatz entwickelt, [...]
Worin besteht der Neuheitswert?
Das ist exakt die Lösung, die Du im Originalbeitrag vor
sechs Tagen schon vorgeschlagen hast.
Peter R. schrieb:> Früher hat man beide Signale in Rechteckspannung umgewandelt und> auf ein> XOR gegeben. Den Mittelwert der Ausgangsspannung hat man dann gemessen.>> Das funktioniert auch bei variabler Frequenz bezüglich Phase: bei =Grad> 0V bei 90 Grad 1/2 Vcc bei 180 Grad Vcc.>> Es kommt halt drauf an, ob ein Mittelwert genügt, oder ob man die> Phasenverschiebung für jede Schwingung braucht.
Danke erstmal für die Idee, hab mir das mal durchgedacht.
Da ich Verschiebungen im Bereich von ca. ~ 1-8° messen muss (High-Phase
des XOR Signals sehr klein), würden sich die ermittelten Mittelwerte bei
diesen geringen Gradunterschieden wahrscheinlich kaum unterscheiden
(mV-Bereich), weswegen ich denke dass es dann bei der Errechnung der
Phasenverschiebung etwas schwierig werden könnte.
> Ein Zähler mit zwei Capture-Einheiten zusammen in einem µC liefert> genauere Ergebnisse. Dabei ist es zweckmäßig, eines der Signale zu> invertieren damit die Phasenlage 180 - 188° beträgt.> Ich habe das mal auf einem STM32F407 gemacht, was aber für Hobbyzwecke> wahrscheinlich zu aufwendig ist. Dabei werden Phasenlage und Frequenz> immer gleichzeitig erfaßt.
Denke, dass das für mein Projekt etwas aufwendig ist..zumal ich die
Frequenz ja nicht messen muss (beide Signale 50kHz). Danke trotzdem!
Elektronische Grüße,
Fritz
Fritz K. schrieb:> Denke, dass das für mein Projekt etwas aufwendig ist..zumal ich die> Frequenz ja nicht messen muss (beide Signale 50kHz).
Gut, aber wenn Du mit einfachen Zählern arbeiten willst, mußt Du
sicherstellen, daß die Frequenz geberseitig 50,00 kHz ist.
Sofern man mit µC arbeitet, mißt man automatisch die Periodendauer und
damit auch die Frequenz ;-)
Für Deinen Bedarf würde sich sogar noch ein Arduino Uno eignen.
Bei 1...10 Grad Wertebereich gehts halt per sample-and-hold:
Das geht z.B. in der Form dass bei pos.Flke des ersten Signals ein
Schalter geöffnet wird und per C und Stromquelle am C die Spannung
ansteigt.
Bei pos. Flke. des zweiten Signals wird die Stromquelle gesperrt und die
Spannung am C einem Folgespeicher übergeben.
Dafür gibts sample and hold-ICs und elektronische Schalter.
Nebenbei:
Bei XOR und VCC=10V ist der ansteigende Kennlinienbereich zwschen 0 und
90 Grad. Da entspricht 9 Grad einem Volt. Das ist doch durchaus ein
praktikabler Spannungswert? auch die 0,5V , bei Vcc = 5V, sind doch kein
großes Problem. Es gibt ja Verstärker die bei 500kHz (Zehnfaches von
50k, wegen Rechteckimpulsform)ganz wunderbar verstärken.
Ein andrer Weg wäre die "Spektralanalyse": Die Amplitude der Grundwelle
des XOR-Ausgangssignal wächst linear zur Dauer der H-Zeit des XOR.
Also XOR mit Schwingkreis als Folgeelement.
>Da dies bei dieser Frequenz ungefähr einen ADU bzw. µC mit ca. ~100MHz>erfordert,
wo ist das Problem?
Jeder Kanal mit 12Bit/2,4MHz abgetastet währe im STM32F4 Discovery sogar
noch der 3. ADC unbenutzt. 48fache Überabtastung und knapp 200k RAM
sollten für ein paar Perioden reichen. Der Rest ist ein wenig
Mathematik. Man muss ja nicht gleich mit FFT & Co schiessen (könnte aber
natürlich).
Muss man nicht selber löten, gibts für kleines Geld.
Auch wenn klassich diskret seinen Reiz hat:
50kHz entspricht 20us Periodendauer. 0.1° s sind knapp über 5ns. Ich
hätte insbesondere bei unterschiedlichen Signalamplituden Sorgen
hinsichtlich Offsetspannungen und Laufzeittoleranzen gerade im analogen
Pfad. Das gilt insbesondere auch wenn die Signale noch gefiltert werden
müssen, was bisher aber nicht gefordert worden ist.
viel Erfolg
hauspapa
>Ich würde einfach die beiden Signale multiplizieren und dann integrieren>über eine Periode:
Coole Idee mit einem kleinen Haken: Einen Zahlenwert für die
Phasenverschiebung bekommt man nur wenn man neben dem berechneten
Integral auch T, A1 und A2 hinzeichend genau bestimmt hat.
viel Erfolg
hauspapa
S. K. schrieb:> T, A1 und A2 hinzeichend genau
Ja da hast du recht, aber T folgt ja direkt aus der Frequenz, die ja
ziemlich genau 50khz sein soll und A1 und A2 sollten auch ziemlich
konstant sein und einfach mit einem Oszilloskop zu messen.
Gruss Hans
Hans schrieb:> S. K. schrieb:>> T, A1 und A2 hinzeichend genau>> Ja da hast du recht, aber T folgt ja direkt aus der Frequenz, die ja> ziemlich genau 50khz sein soll und A1 und A2 sollten auch ziemlich> konstant sein und einfach mit einem Oszilloskop zu messen.
Da ist es einfacher die Phasenverschiebung gleich mit dem Oszilloskop zu
bestimmen.
Loog schrieb:> Da ist es einfacher die Phasenverschiebung gleich mit dem Oszilloskop zu> bestimmen.
Nein, wenn A1 und A2 auch konstant sind, muss man die nur einmal messen!
S. K. schrieb:> 50kHz entspricht 20us Periodendauer. 0.1° s sind knapp über 5ns. Ich> hätte insbesondere bei unterschiedlichen Signalamplituden Sorgen> hinsichtlich Offsetspannungen und Laufzeittoleranzen gerade im analogen> Pfad.
Genau das ist die Crux. Die geforderte Genauigkeit ist verdammt happig.
Da braucht auch nur ein Komparator ein klein wenig einen andere
Schwellwert haben als der 2. und schon ist die Genauigkeit ausserhalb
des geforderten Bereichs.
>> 50kHz entspricht 20us Periodendauer. 0.1° s sind knapp über 5ns.>Genau das ist die Crux. Die geforderte Genauigkeit ist verdammt happig.
Man kann auf eine tiefere Frequenz runtermischen, die Phase bleibt
erhalten. Bei z.B. 100Hz sind 0.1° schon fast 3µs, die lassen sich
bequemer messen.
Bernhard schrieb:>>> 50kHz entspricht 20us Periodendauer. 0.1° s sind knapp über 5ns.>>>Genau das ist die Crux. Die geforderte Genauigkeit ist verdammt happig.>> Man kann auf eine tiefere Frequenz runtermischen,
Wozu den schütteln, rühren oder mischen? Einfach 1000 Messungen machen
und den Mittelwert bilden.
Der Andere schrieb:> Da braucht auch nur ein Komparator ein klein wenig einen andere> Schwellwert haben als der 2. und schon ist die Genauigkeit ausserhalb> des geforderten Bereichs.
Wenn man ein Signal an beide Eingänge legt, kann man wunderbar auf 0,0°
abgleichen.
>Wozu den schütteln, rühren oder mischen? Einfach 1000 Messungen machen>und den Mittelwert bilden.
Hilft gegen zufällige Fehler aber nicht (in jedem Fall) gegen
Systematische.
>Wenn man ein Signal an beide Eingänge legt, kann man wunderbar auf 0,0°>abgleichen.
Das hilft wirklich (gegen Laufzeitunterschiede).
wird schon werden
hauspapa
Es ist möglichm die Phase von 5kHz Sinus per Soundkarte 96kHz 16bit auf
0.01° zu messen. BTDT
n* 20ms mit Sinusfit (SAM) .... Mittelwert
also runterteilen , Bandpass, Soundkarte, ....
Test? Soundkartenausgang 5kHz ->( linein L) und R(Poti)C Verzögerung ->
(linein R)
Nur das Übersprechen macht ggf. Probleme, je nach Soundkarte.