Hallo zusammen, für ein Projekt gibt es ein analoges Front-End für kleine Ströme, dass aus einem Integrator und einem 240kHz / 18 Bit ADC besteht. Die Ausgangsspannung des Integrators wird dabei permanent mit 240kHz abgetastet und die digitalisierten Werte (für DC input monoton steigende Gerade) in größeren Blöcken (z.b. 1000, 1500 oder 2000 Werte) verrechnet. Verrechnen heißt in dem Fall z.B. ein Least-Squares-Fit mit einer Geraden über ein Intervall von 1000 oder 1500 Punkten. Das eigentliche Ausgangssignal ist dann wieder der Strom (bzw. die Steigung des Fits) mit einer Datenrate von dann 240 bzw. 160 Hz. Ich möchte nun die Rauschbandbreite des Systems bestimmen. Dafür hab ich die Ausgangsdaten (160Hz) Datenrate für ein konstantes Eingangssignal mit weißem Rauschen exportiert und mit LT-Spice eine FFT gemacht. Siehe Bild im Anhang. Das Verhalten ähnelt extrem dem eines zero order hold Gliedes (sinc()). Hohe Dämpfung bei vielfachen der Abtastfrequenz und knapp -3db bei FS/2. Im analogen Pfad sind keine Bandbreitenbegrenzungen vorhanden. Die Verrechnung auf 160Hz ist also der Flaschenhals für die Bandbreite. Um das ganze System besser charakterisieren zu können habe ich in Matlab ein Modell nachgebaut. (Rein numerisch, siehe 2. Bild) Das Verhalten dort unterscheidet sich aber deutlich.Der Frequenzgang weißt extrem schmale Notches auf, die Hüllkurve hat ihre Extrema aber nicht mehr auf vielfachen der Abtastfrequenz. Die Signale des Matlabmodells im 3. Bild. Blau oben Eingangssignal, in dem Fall 5Hz mit leichtem Offset, Orange Oben das 160Hz Signal, Blau unten der Integratorausgang. (PS: Fehler in der Beschriftung der Zeitachse, es sind samples (1/240.000 sek pro punkt), nicht Sekunden) Hat Jemand eine Idee woher die Diskrepanz kommen könnte?
:
Bearbeitet durch User
Christoph K. schrieb: > Das Verhalten > dort unterscheidet sich aber deutlich.Der Frequenzgang weißt extrem > schmale Notches auf, Die Notches dürften Rechenfehler sein. Mit float32 kann man zwar einen Dynamikbereich von 1528 dB abdecken [1], aber mit der Genauigkeit ist es nicht weit her [2]. Dein 18-Bit Wandler kann eine Dynamik von ca. 104 dB abbilden. Von daher würde ich bei den Berechnungen den Bereich auf 120 dB begrenzen. Die theoretischen Werte können in der Praxis gar nicht auftreten. [1] https://www.sounddevices.com/32-bit-float-files-explained/ [2] https://de.wikipedia.org/wiki/Einfache_Genauigkeit
Bernd schrieb: > Die Notches dürften Rechenfehler sein. Mit float32 kann man zwar einen > Dynamikbereich von 1528 dB abdecken [1], aber mit der Genauigkeit ist es > nicht weit her [2]. Hallo Bernd, danke fürs mit drauf schauen! Ich glaube nicht an Rechenfehler: die grüne Kurve die ich mit LT-Spice erzeugt habe sind reale Messdaten. Sie entspricht auch dem was ich erwarten würde. Sprich Nochtches bei n*Fs Die Matlab-Kurven zeigen das unerklärliche Verhalten: Extrem scharfe, extrem tiefe Einbrüche bei n*FS, aber die Hüllkurve hat ihre Extrempunkte ganz wo anders - das passt aus meiner Sicht jetzt nicht mehr zusammen und da suche ich den Fehler. An der Dynamik der Rechnung liegt es in Matlab sicher nicht. Ich sehe den Effekt ja auch im Zeitbereich.
okay jetzt wird es richtig schräg..ich habe anstatt wobbeln in Matlab mal white noise in die signalkette eingespeist und die 160hz-Datenpunkte in eine FFT gesteckt. Ergebnis deckt sich mit den Messdaten (siehe Bild Anhang). Sollte wobbeln und FFT von white noise am Ende nicht den selben Frequenzgang liefern?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.