Alternative zur FFT, Freq. genau bestimmen

Dec 13, 2007 78 Replies

Ich würde dann erstmal das Signal auf dem PC als Kurve darstellen. Sowas geht mit Delphi ganz gut. Notfalls wohl auch mit Excel.

Dann filtern und wieder als Kurve darstellen und einfach erstmal ansehen und dann entscheiden, wie aufwendig die Sache werden muss. Das mit der Frequenzdrift läßt sich durch eine Messung der Periodendauer des gefilterten Signals über die Zeit erkennen. Also Abstand zwischen zwei Nulldurchgängen von - nach + messen und die Absolutzeit auf der X-Achse und die Periodendauer auf der Y-Achse darstellen. Da müsste man schon was sehen können.

Über was für Frequenzen und Abtastintervalle reden wir hier?

Gruß

Stefan DF9BI

Die Anwendung war damals der Hoffnungsträger:

formatting link
Die Version mit dem festen Code im IC wurde glaube ich sogar hierzulande in Wehrtechnik verwendet. Im niederfrequenteren Bereich als CCD-Filter für z.B. Sonar hätte man gern ähnliches gehabt. In Europa hat damals Wolfson Microelectronics für das englische Verteidigungsministerium ICs dahingehend gewerkelt.

Von der "programmierbaren" SAW-Version war dann aber nichtmehr viel zu hören. Nach dem schmählichen Verrat der Russen&Ossis die nichtmehr den kalten Krieg weiterkämpfen wollten ist schlicht die Regierungs- Knete überall gestrichen worden und ohne die rührt die Industrie keinen Finger wenn der Einsatz für Consumeranwendungen nicht unmittelbar ersichtlich ist.

MfG JRD

Hi,

Auch das lässt sich auswerten, indem du nur zwei kurze Zeitfenster betrachtest. Über jedes Fenster wird eine FFT gerechnet, dann hast du jeweils Frequenz und Phasenlage. Du hast also 4 Grössen gegeben: F1, F2, P1, P2

Die mittlere Frequenz nimmst du zunächst an als (F1+F2) / 2. Die mittlere Frequenzdrift über den gesamten Zeitraum ist F2-F1. Dann weiter wie bereits vorgeschlagen, die Phaseninformation verwenden um die Frequenzen genauer zu berechnen. Das geht natürlich nur unter der Annahme, dass zwischendurch keine wilden Frequenz- oder Phasensprünge stattgefunden haben.

Nochmal zurück zu deiner ursprünglichen Idee mit einer FFT über alle Daten. Ich vermute das ist bereits die optimale Methode, wenn es auf möglichst hohe Genauigkeit ankommt.

Gruss Michael

Matthias Weingart schrieb:

Müsste es

Wenn man kleinlich wäre, dann ist DC immer DC, Sprünge sind mit der DC überlagerte Frequenzen ;-) Die Differenzierung ergibt halt einen 6dB/Oktave Hochpass.

Damit bekommt man aber noch nicht die Unstetigkeiten am Rand weg, eine FFT geht ja davon aus, dass das Signal periodisch ist, also am Rand mit dem nächsten Sample von vorne wieder beginnt.

Klappt eigentlich sehr gut:

formatting link

Welche die Beste für eine genaue Frequenzanalyse ist, weiss ich jetzt auch nicht.

Wüsste ich jetzt auf Anhieb auch nicht, man sollte sich vorher auch Gedanken machen ob eine Schwerpunktfindung überhaupt Sinn macht, wenn die Genauigkeit durch andere Fehlerquellen sowieso nicht gegeben wäre.

Letztendlich geben x samples theoretisch sowieso nur eine begrenzte Genauigkeit her, da helfen dann nur mehr samples, egal mit welchem Verfahren du herangehst. Mit Nulldurchgängen würde ich überhaupt nicht anfangen, da kannst du Differenzieren wie du willst :-).

Jens

Ja, das war genau die Zeit. Als es dann mit der Jobsuche schwierig wurde, habe ich mich dann nach der Zeit an der Uni selbstständig gemacht.

Gruß

Stefan DF9BI

Rafael Deliano schrieb:

Jetzt muß ich erstmal gucken was ein Totzeitglied ist...

Also, der Störabstand darf bescheiden sein! Ich habe das ausführlich getestet. Im Gegensatz zu den Zählermethoden.

Und der Unterschied zwischen digital und analog sollte bei dieser Anordnung vermutlich nicht mehr als ca. 2dB sein. Ist gibt dazu Zahlen im Bereich SS. Denke, sie sind überführbar.

Alles in allem eine sehr effiziente Struktur.

Vielleicht sollte ich noch erwähnen, das die Verzögerung 1-Bit Amplitude hat aber mit Oversampling arbeitet (bezogen auf die Bit-Nettorate). Also ein Schieberegister mit z.B. ca. 30 Bits.

- Henry

www.ehydra.dyndns.info

Hallo Matthias,

Also wenig Oberwellen und quasi nur eine einzelne Frequenz

also ca 10^7 Abtastwerte?

Wie genau soll denn das werden?

Ich würde hier erst einmal die Nulldurchgänge zählen und dann den Zeitpunkt des ersten Nulldurchgang vom Zeitpunkt des letzten Nulldurchgangs abziehen und dann durch die Zahl der Nulldurchgänge teilen. das Ganze dann noch um den Faktor 2 korrigieren, weil es ja 2 Nulldurchgänge / Periode gibt. Wenns noch genauer sein muss, empfiehlt sich ein Bandpass um den fraglichen Bereich. herum. Da nur eine Frequenz am laufen ist, müsste die Ordnung des Filters wohl auch gar nicht so groß sein. Den Filter würd ich ja analog vor den Eingang setzen, aber Digital sollte das auch kein Hexenwerk geben.

Marte

Man kann das Signal auf I/Q mischen, danach per Filter bereinigen und sodann einem CORDIC Algorithmus vorsetzen. Damit hast Du die Phase pro Messpunkt und die Frequenz aus der zeitlichen Ableitung dieser. Der Mittelwert oder ein Wunschfilter sollte es genau machen.

Wichtig bei einem Frequenzgemisch: Bitte das Zeitgesetz der Nachrichtentechnik beachten ...

Gruß Oliver

P.s.: Bei der FFT kann man auch mit Null-Samples auffüllen.

Oliver Bartels + Erding, Germany + obartels@bartels.de http://www.bartels.de + Phone: +49-8122-9729-0 Fax: -10

Ein solches Filter ist ideal. Leider bekommt man die nicht außer in den Standardwerten gezimmert. Da muß man schon anders heißen und mit Großauftrag oder viel Kohle winken.

Sie sind auch frequenzmäßig beschränkt!

- Henry

www.ehydra.dyndns.info

Rafael Deliano schrieb:

Es gibt etwas ähnliches von Jim Thompson in einem FSK-Demodulator für Telefonleitungen. Er behauptet, seine Schaltung würde vor allem in der Unterdrückung der Oberwellen (Verursacht durch die alten Kohlemikrofone und Übertrager) vorteilhaft sein.

formatting link

Meine Fragen hat er damals leider nicht beantwortet. In LTspice funktioniert seine Schaltung gut.

Ist ein Gyrator mit obiger Schaltung.

- Henry

www.ehydra.dyndns.info

Und was steht nun drin? IEEE können die meisten nicht lesen.

- Henry

www.ehydra.dyndns.info

Rafael Deliano schrieb:

Wieviele Stapel hast du eigentlich?

Gibt es noch, z.B. für Chirp-Signale:

formatting link

- Henry

www.ehydra.dyndns.info

Zuviele. Korrelatoren unproblematisch: in 2 dicken Ordnern abgelegt in Vorbereitung auf mehrere Artikel in meiner Zeitschrift. Sind simpel und damit für Controller attraktiv.

MfG JRD

Oliver Bartels schrieb:

IIRC aber nur eine Portion, d.h. eine Zweierpotenz mehr. Alles drüber ist dann pseudo und kann auch per Interpolation erhalten werden. (Ohne Garantie, ist schon Jahre her...)

mfg Rolf Bombach

Stefan Brröring schrieb:

Die Frage ist eben, ob das ein weitgehend konstanter Offset ist, ob der Popcorn-noise-sprünge macht oder schleichend rumdriftet. Alles hat dann eigene optimale "Abwehrmassnahmen". Bei langsamem Drift kann ein base line restorer vorteilhaft sein, d.h. der Offset wird mit einem Opamp sehr geringer slew rate subtrahiert. Wie man das numerisch umsetzt dürfte klar sein.

mfg Rolf Bombach

Rafael Deliano schrieb:

So was ähnliches hat in der Lasertechnik überlebt, Form ultrakurzer Pulse durch gegenläufige Überlagerung in nichtlinearen Kristallen direkt beobachten.

mfg Rolf Bombach

Hallo Matthias,

Matthias Weingart schrieb:

ich weiß nicht genau, ob jemand schon das vorgeschlagen hat, weil es etwas unübersichtlich geworden ist:

Ich würde die ganze Sache als simple Frequenzdemodulation betrachten. Detektiere einfach die Nulldurchgänge _mit_ _Hysterese_ und zähle die Samples dazwischen, das waren so um die 100 bei Dir. Dann hast Du eine diskrete Funktion der Frequenz über der Zeit mit 10000 Samples. Das geht simpelst und schnell ohne FFT oder AKF, die Hysterese ist zwingend wegen Rauschen notwendig, denn alles mit mehr als 11 Bit glaube ich bei AD-Wandlern nicht und würde Rauschen vermuten. Es sind dafür nur wenige Programmzeilen notwendig und sind im 0.nix geschrieben.

Jetzt gibt es mehrere Möglichkeiten, die gesampelte Frequenzfunktion aufzubereiten, also praktisch eine Rekonstruktion. Zuerst fällt mir ein einfacher Polynomfit an die anscheinend schwach gekrümmte Kurve ein, der Grad kann niedrig sein, vielleicht um 5, je nachdem, also Fit nach gauß'scher Fehlerquadratmethode, da ist IMHO nur 1 große Matrixoperation nötig.

Mir fällt noch eine Deluxe-Methode ein. Mit Ausgleichsplines kann man auch an stärker gekrümmten Funktionen Ausgleichsfunktionen im Sinne der Gauß'schen Fehlerquadratmethode gewinnen. Im Gegensatz zur Filterung müßten die Ränder dann auch stimmen, denn da schwingt nichts ein. Ich hab diese Methode vor langer Zeit mal eingesetzt und konnte damit sehr schön verrauschte Kurven glätten. Der Nachteil liegt im hohen Rechenaufwand oder Speicherbedarf, ich weiß jetzt nicht mehr, ob der an die FFT ran kommt. Auch erinnere ich mich an sogenannte Konditionierungsprobleme bei den Gleichungssystemen, also nicht so ganz einfach.

Jedenfalls bekommst Du so eine genaue Funktion der Frequenz über der Zeit, was mit der FFT glaube ich so nicht geht. Bis auf das Fitten kommt mir das Ganze sehr einfach vor. Es könnte natürlich sein, daß man zum Fitten von 10000 Punkten extrem viel Speicher braucht.

mfg. Winfried

Rafael Deliano schrieb:

Deine Darstellungsbemühungen in Ehren. Es fehlt was: Nämlich der Hinweis auf die äußerst effiziente Mixed-Mode Struktur. Mit einem Floatingpoint-DSP mit 1,2GFLOPS und AD/DA ist das keine Herausforderung. Legt man aber Wert auf minimalen Aufwand, sieht es anders aus.

- Henry

www.ehydra.dyndns.info

Henry Kiefer schrieb:

Peilst du da einen gewissen SHARC an?

mfg Rolf Bombach

Rolf_Bombach schrieb:

Beispielsweise.

- Henry

www.ehydra.dyndns.info

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required