Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenzgang Integrator + ADC + Curve Fit


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Christoph K. (christoph_k314)



Lesenswert?

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
von Christoph K. (christoph_k314)


Lesenswert?


von My2cents (Gast)


Lesenswert?

Wie hast du das weiße Rauschen erzeugt ?

von Bernd (Gast)


Lesenswert?

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

von Christoph K. (christoph_k314)


Lesenswert?

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.

von Christoph K. (christoph_k314)



Lesenswert?

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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.