Amplitude und Phase von (bis zu) 20MHz Signal schnell herausfinden

OP #4148955
Lesenswert?
• ▲
▼
Hallo,

nachdem ich schon fast das halbe Internet leergesucht habe, wollte ich 
einmal hier nachfragen.
Ich kann mit 100MSPS ADCs einen Sinus aufnehmen. Dieser soll bis zu 
20MHz gehen. Dieser Sinus entspricht der Amplitude eines Cantilevers 
eines Rasterkraft Mikroskops. Das ist ein kurzer Ausleger mit einer 
kleinen Spitze unten dran, die mit seiner Resonanzfrequenz angeregt 
wird.
Ja klar sagt ihr jetzt, nehm einen digitalen Lockin. Also ADC Signal 
einmal mit Sinus und einmal mit Cosinus der Anregungsfrequenz 
multiplizieren, (Tiefpassfiltern, downsamplen)^N und irgendwann kommt 
dann die Amplitude und Phase heraus.
Hier habe ich aber das Problem, dass ich um eine Amplitude zu erhalten, 
extrem lange samplen muss, und so im Endeffekt auch wieder nur im 
kHz-Bereich die aktuelle Amplitude erhalte. Da ich nach der Amplitude 
regeln muss, bedeutet ein schnelleres erhalten der aktuelle Amplitude 
ein schnelleres regeln, damit ein schnellerer aufgebautes Bild.

Hierfür suche ich ein paar Anregungen. Denn eigentlich sollte man ja 
schon nach ein paar Durchgängen des Sinus eine sehr genaue Aussage 
treffen können, wie beispielsweise nach einem Fit (wenn die 
Datenverarbeitung schnell genug ist). Da alles auf einem FPGA relaisiert 
werden soll sollte die Verarbeitung auch schnell machbar sein.
#4149080
Lesenswert?
• ▲
▼
Ich bin grad nicht ganz sicher, aber kannst du nicht einfach die 
Betragsquadrate aller Messwerte addieren? Das sollte proportional zur 
Amplitude sein.

Mein Gedanke dabei ist, dass du die sinc-Interpolation ausrechnen 
kannst, die dir das "perfekte" Sinussignal rekonstruiert, indem du 
Fouriertransformierst, mit Nullen auffüllst und wieder 
zurücktransformierst. Durch das Anhängen der Nullen ändert sich die Norm 
der Funktion nicht, durch die Fouriertransformation auch nicht, also 
sollte die Norm korrekt rauskommen, auch wenn der Sinus nur sehr 
spärlich abgetastet ist. Klingt das plausibel?
#4149081
Lesenswert?
• ▲
▼
Mach das so:

Urms^2 = Summe x_i^2 der letzten 100 Werte

Udc = Mittelwert der letzten 100 Werte

Uacrms^2 = Urms^2 - Udc^2

Wenn dich die Schwankungen im Ergebnis(ca. 1%) wegen der nicht exakt 
passenden Signalfrequenz zur Abtastfrequenz stört, dann wende auf die 
letzten 100 x_i Werte noch eine Fensterfunktion an.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.