Forum: Digitale Signalverarbeitung / DSP / Machine Learning Anti-Aliasing Filter für 14Bit bei 5Msps


von Alex E. (tecnologic) Benutzerseite


Angehängte Dateien:

Lesenswert?

Moin,

Ich möchte den Stromanstieg und Abfall in einer Spule bei 20kHz PWM 
auswerten. Dafür will ich möglichst schnell Abtasten und aus den Samples 
mit Linearer Regession die Steigung des Stroms in den verschiedenen 
Phasen des PWM Zykluses erfassen. (Induktivität usw. berechnen) Dafür 
plane ich eine Auflösung von 10mA bei 100A Messbereich.

Dafür will ich den ADC eines STM32H750 mit einem Differenziellen Signal 
versorgen. Der ADC soll mit 5Msps bei 14Bit laufen.

Datenblatt Angaben dazu:
ENOB Effective number of bits
Single ended - 12.2 -
Bits
Differential - 13.2 -
SINAD Signal-to-noise and
distortion ratio
Single ended - 75.2 -
dB
Differential - 81.2 -
SNR Signal-to-noise ratio
Single ended - 77.0 -
Differential - 81.0 -

Meine Signal Quelle ist ein Shunt mit MAX40056. Als Diff-Signal wollte 
ich den Out und die interne REF des MAX nutzen. Der MAX40056 hat eine 
Bandbreite 300kHz und scheint dann mit ca. 20db/Dekade zu fallen.

Wenn ich jetzt keine Auflösung verschenken möchte dann muss ich bei 
2,5MHz bei ca. -80db sein? Oder reicht auch weniger? Die Auflösung von 
effektiv 10000 Schritten würde ich gern erreichen. Immer voraus gesetzt 
der ADC kann das wirklich was im dB steht aber das werde ich dann sehen.

Würde also ein Diff OP wie der MCP6D11 als Filter 3. Ordnung mit 
fc=200kHz zwischen Stromverstärker und ADC ausreichen? Ich würde gern 
mit einem OP in dem Filter auskommen.

Ich dachte an die angehängte Schaltung aus Seite 22 von: 
https://www.ti.com/lit/an/sloa054e/sloa054e.pdf

von Burkhard K. (buks)


Lesenswert?

Alexander B. schrieb:
> Wenn ich jetzt keine Auflösung verschenken möchte dann muss ich bei
> 2,5MHz bei ca. -80db sein? Oder reicht auch weniger?

Wie aggressiv das Antialiasfilter ausgelegt werden muss hängt letztlich 
davon ab, wie das Spektrum oberhalb der halben Samplingfrequenz (2,5MHz) 
aussieht. Je weniger dort los ist (i.e. Noisefloor/SINAD) umso weniger 
agressiv muss es ausfallen.

Wenn z.B. der Signal- oder Rauschpegel oberhalb von 2.5MHz -60 dBFS 
nicht überschreitet, dann reichen -20 dB Absenkung bereits aus. Wenn ich 
nicht weiss, wie das Spektrum aussieht, muss ich halt auf "Nummer 
Sicher" gehen.

Spannend ist in diesem Zusammenhang die Frage, wie sauber die analogen 
Eingänge der ST32H750 ADCs gegen Feedthrough von digitalen Signalen 
isoliert sind?

BTW: Laut Datenblatt (S. 158) sind ENOB/SINAD für die 16bit 
Konfiguration und 2MSPs/s spezifiziert. Ich würde erwarten, dass bei 5 
MSPs/s diese Werte deutlich niedriger ausfallen.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Burkhard K. schrieb:
> Wie aggressiv das Antialiasfilter ausgelegt werden muss hängt letztlich
> davon ab, wie das Spektrum oberhalb der halben Samplingfrequenz (2,5MHz)
> aussieht. Je weniger dort los ist (i.e. Noisefloor/SINAD) umso weniger
> agressiv muss es ausfallen.
>
> Wenn z.B. der Signal- oder Rauschpegel oberhalb von 2.5MHz -60 dBFS
> nicht überschreitet, dann reichen -20 dB Absenkung bereits aus. Wenn ich
> nicht weiss, wie das Spektrum aussieht, muss ich halt auf "Nummer
> Sicher" gehen.

Wie kann ich an eine Abschätzung des Noisefloor ran gehen? Die 
Leistungsbrücke für die PWM liegt auf einem PCB unter dem Board mit dem 
Controller und Filter. Es liegt also mindestens eine GND und Vcc Plane 
zwischen der geschalteten Phase und dem Analog Pfad nach dem MAX40056. 
Die Schaltflanken der PWM würde ich aktuell auf 500V/µs und ich muss max 
mit 1000A/µs rechnen.

Das Signal des MAX liegt bei 1,5Vpp somit ist alles unter -80dB davon 
egal.
Nur wie schätze ich hab welche Störungen von >150µVpp auf dem Signal 
sind.

Burkhard K. schrieb:
> Spannend ist in diesem Zusammenhang die Frage, wie sauber die analogen
> Eingänge der ST32H750 ADCs gegen Feedthrough von digitalen Signalen
> isoliert sind?
>
> BTW: Laut Datenblatt (S. 158) sind ENOB/SINAD für die 16bit
> Konfiguration und 2MSPs/s spezifiziert. Ich würde erwarten, dass bei 5
> MSPs/s diese Werte deutlich niedriger ausfallen.

Guter Punkt das ist mir entgangen. Dann sollte ich also eher gucken das 
ich bei 1MHz genug Dämpfung erreiche. Ich kann dann ja die Verschiedenen 
ADC Konfigurationen ohne HW Änderungen vergleichen.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Nur mit einem RC Filter nach dem MAX40056 habe ich bei ähnlichen 
Anwendungen ca. ein Rauschen von 1/1000FS = -60dBFS. Die fc lag bei der 
Anwendung bei ca. 20kHz. Aber der dort verwendete ADC sollte nur 67dB 
SINAD haben. Außerdem war in der Anwendung nur der Strommittelwert 
interessant und somit wurde synchron zur PWM mit 20kHz gesampled. Der 
Filter ist für diese Betrachtung quasi irrelevant?

Mit den Annahmen liegt mein noise floor bei -60dBFS. Ich muss also von 
300kHz auf 1MHz 20dB weg drücken. Das schafft ja schon ein Bessel 
2.Ordnung.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Der MAX40056 sollte da auch nicht viel Noise liefern. PSRR ist min. 
90dB.
Die Voltage Noise Density bei 10kHz ist 150 nV/√Hz das geht da auch 
unter.
Aber der Graph Input Integrated Noise sieht interessant aus der geht bei 
1MHz hoch auf 110µVrms. Die interne Referenz des MAX soll maximal 
2,5µV/√Hz liefern.

Was sagt das V/√Hz aus?

von Helmut S. (helmuts)


Lesenswert?

> Was sagt das V/√Hz aus?

Rauschspannung

en = V/√Hz ist die Rasuchspannung/Wurzel(1Hz), also für 1Hz Bandbreite.

Nachfolgend die Formel, falls en konstant ist über die ganze 
Bandbreite.

Urmsnoise = Wurzel(Bandbreite) * en


Ganz allgemein gilt die nachfolgende Formel für beliebiges en(f).

Urmsnoise = Wurzel( Integral (en(f))^2 df von f1 bis f2 )

Bandbreite = f2-f1

: Bearbeitet durch User
von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Danke für die Erklärung. Ich brauche also erstmal die Bandbreite des 
Signals am Eingang des MAX40056. Da wäre ein differenzieller RC-Tiefpass 
an dem Shunt sinnvoll mit dem ich auf fc=190kHz gehe damit ich ein 
Eingangssignal mit einer effektiven Bandbreite von 190*1,57kHz = 300kHz 
habe. Somit nutze ich de Bandbreite des MAX noch gut aus und habe aber 
eine Begrenzung des Inputnoise.
Ich werde mal ein Schaltplan mit Simulation machen.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Laut dem DB des MAX40056 liegt der Input noise bei ca. 160nV/sqrt(Hz) 
bis ca. 300kHz und dann fällt das Rauschen stark ab. Zur Sicherheit 
würde ich aber für die Bandbreite den Korrekturfaktor für die effektive 
Bandbreite eines RC-TP von 1,57 ansetzen. Dann komme ich auf ca. 
110µVrms als Input Noise. Ich wollte den MAX40056 mit einer Verstärkung 
von 50V/V einsetzen. Somit muss ich mit 5,5µVrms am Ausgang des MAX40056 
rechnen. Dazu kommt das Rauschen der internen Referenz des MAX. Laut dem 
Graphen im DB beginnt das Rauschen bei ca. 2,5µV/sqrt(Hz) und fällt dann 
stetig ab. Demnach muss ich die Bandbreite der Referenz soweit wie 
möglich begrenzen. Da die sich eh nicht ändert ist das ja kein Problem.

Schaltplan kommt morgen.

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.