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

#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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren