Forum: Digitale Signalverarbeitung / DSP / Machine Learning Amplitude und Phase von (bis zu) 20MHz Signal schnell herausfinden


von Gerald G. (gerald_g)


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.

von Sven B. (scummos)


Lesenswert?

Moment, willst du jetzt die Frequenz des Sinus-Signals oder die 
Amplitude? Mir ist nicht klar ob die Frequenz der Amplitude des 
Cantilevers entspricht oder ob du tatsächlich die Amplitude vom Sinus 
brauchst.

von Gerald G. (gerald_g)


Lesenswert?

Die Frequenz finde ich durch einen sweep heraus, dafür habe ich alle 
Zeit der Welt.
Die Frequenz kenne ich also und gebe sie auf den Cantilever. Ich messe 
dann das Signal welches der Cantilever ausgibt. Also eine 
Sinusschwingung gleicher Frequenz mit unbekannter Amplitude.

von Sven B. (scummos)


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?

von Helmut S. (helmuts)


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.

von Gerald G. (gerald_g)


Lesenswert?

Ja, danke, das passt so

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.