Daten-Filterung per uC - Erklärung des Amplitudenverlaufs

OP (Firma: CAD- und CAE-Konstruktion) #8077925
Lesenswert?

Ich möchte mit einem Controller ein digitales Signal filtern, das mit einem Wandler gewonnen wurde, der auf I2C läuft. Der Einfachheit halber wird mit 400.000kHz gesampelt.

Das Signal hat ein Spektrum bis etwa 10.000Hz, max. 15.000Hz und enthält darüber nur Rauschen. Der Wandler kann bis zu 1MHz Abtastrate und hat einen internen Filter von 200kHz.

Ich habe hier das Spektrum aufgenommen und finde beim Eingang von 10.000 Hz bis etwa 200kHz den folgenden Verlauf in gelb für das gefilterte Signal.

Ich benutze aktuell den Mittelwert aus altem und neuem sample und gewichte 1:1. Dabei kommt die obere Kurve raus. Einigermaßen überraschend setzt der Filter schon bei 10kHz signifikant ein, liefert bei einem Viertel der Frequenz maximal 9dB und geht dann wieder hoch.

Passt das so?

Ich nehme an, das sind die Alias-Effekte, die die Störung bei höheren Frequenzen wieder durchlassen?

Wie sind die Werte genau zu erklären? Der beste Wert ist etwa bei 70kHz, der schlechteste (wieder fast 1) bei 115kHz. Richtung 200kHz geht es auch wieder in Durchlass.

Gewichte ich 3:1 kommt die untere raus. Das sind so 17dB, allerdings mit schon relevanter Absenkung bei 15kHz.

Wie könnte man das verbessern mit wenig Aufwand? Ich habe Bedenken, daß zuviel Rauschen durch kommt.

Angehängte Dateien:
Beitrag #8077928 wurde von einem Moderator gelöscht.
#8077949
Lesenswert?

Kai D. schrieb:

Ich möchte mit einem Controller ein digitales Signal filtern, das mit einem Wandler gewonnen wurde, der auf I2C läuft. Der Einfachheit halber wird mit 400.000kHz gesampelt.

Wie hoch ist die Taktfrequenz von deinem I2C und wieviele Bits werden pro Abtastpunkt über den Bus übertragen?

Meinst du mit "400.000kHz" eine Abtastung mit 400 MSa/s oder hast du nur ein Problem mit deinem Dezimaltrennzeichen?

Beitrag #8078026 wurde vom Autor gelöscht.
Beitrag #8078109 wurde von einem Moderator gelöscht.
Beitrag #8079053 wurde von einem Moderator gelöscht.
OP (Firma: CAD- und CAE-Konstruktion) #8079055
Lesenswert?

Rainer W. schrieb:

Wie hoch ist die Taktfrequenz von deinem I2C und wieviele Bits werden pro Abtastpunkt über den Bus übertragen?

Die Taktfrequenz für den Wandler ist in der Tat 400kHz. Die Punkte sind Tippfehler, respektive mit dem "k" redundant.

Die Frequenz hat mit der Takterzeugung des Moduls zu tun und kommt von extern. Das könnte man ändern, ich denke aber, daß der Wandler mit 400kHz Abtastung schnell genug ist. Die Ankopplung intern ist parallel, d.h. ich bekomme alle Daten mit 400kHz.

Es handelt sich um ein fertiges Modul, in das ich die SW nur reinwerfe. Hier ist das Ziel, erst einmal das Spektrum eines angeschlossenen Sensors zu erfassen und dann eventuell den Filter anzupassen. Das Modul fängt leider ordentlich Rauschen aus der verseuchten Umgebung ein, daher das Filtern.

Mir geht es um zwei Dinge:

a) möchte ich das Verhalten der Filterung bei dem Durchfahren der Testfrequenz (Sinus) verstehen - ich dachte dass ein Tiefpass der beschriebenen Art zwar schlecht sein mag, aber dennoch oben zu macht.

b) wäre ein Tipp gut, wie ich den Filter zu einem vollständigen TP machen kann.

OP (Firma: CAD- und CAE-Konstruktion) #8079058
Lesenswert?

Markus K. schrieb:

Zur Sicherheit: Läuft der I²C mit 400kbit/s oder der A/D-Wandler mit 400kSPS

Ja, allerdings haben die direkt offenbar nichts mit einander zu tun, wie ich nun nachgesehen habe. Den I2C hätte man aus der Frage weglassen können. Es ist tatsächlich nur so, daß der I2C-Takt aus dem 400er abgeleitet wird. Wohl Bequemlichkeit.

Wie auch immer, sollten die 400kHz mit Sicherheit geeignet sein, die gewünschten 15kHz abzutasten und zu filtern.

Ich hatte nun erwartet, daß ein Filter wie oben angesprochen, mit wachsender Frequenz zunehmend dicht macht. Das ist offenbar nicht der Fall. Ganz blicke ich noch nicht durch, aber es hat wohl mit dem Aliasing zu tun.

Das Thema auch gerne in den Signalverarbeitungsbereich verschieben.

#8079081
Lesenswert?

Moin,

Mir ist und bleibt da doch recht viel schleierhaft. Was ist das fuer ein komisches Bild im ersten Post? Was soll das zeigen? Wie ist das entstanden? Achsenbeschriftung incl. Einheiten waere nicht schlecht - lesbar oder wenigstens vorhanden? Achsen linear oder logarithmisch?

Wenn du ein simples digitales "Filter" hast, was dir immer den arith. Mittelwert aus dem aktuellen Sample und dem davor berechnet, dann hat das so eine Impulsantwort: [0.5 0.5]. Damit hat das dann einen cosinus-foermigen Amplitudenfrequenzgang. Also Gleichanteile werden 1:1 durchgelassen, die halbe Abtastfrequenz wird komplett gesperrt, dazwischen ein cos-foermiger Verlauf.

Gruss WK

OP (Firma: CAD- und CAE-Konstruktion) #8079084
Lesenswert?

Ich habe nochmals in den Daten nachgesehen:

Das Bild ist die Aufzeichnung eines Durchlaufs mit einem Signalgenerator von 0 bis 400 kHz. Es ist doppelt logarithmisch. Das Gelbe ist die Hüllkurve also der Absolutwert des Signals. Phase habe ich da nicht drin.

Dergute W. schrieb:

Gleichanteile werden 1:1 durchgelassen, die halbe Abtastfrequenz wird komplett gesperrt, dazwischen ein cos-foermiger Verlauf.

Ist das aufgezeichnete Verhalten dann korrekt?

Ich sehe abgesehen von der zeitlichen Deformation durchaus eine Art Sinus, allerdings keine 100% Sperrung bei F/2, sondern Durchlass.

Ich werde nochmals eine Aufzeichnung machen.

#8079086
Lesenswert?

Zusätzlich zu dem was WK geschrieben hat:

I²C läuft typischerweise mit 400kHz. Der Bus kann auch schneller, aber nicht viel schneller (https://de.wikipedia.org/wiki/I2C)

In 2.5µs (1÷400kHz) überträgt der Bus dann bestenfalls 1 (ein!) Bit. Mit Start/Stop, Adressierung des DAC etc. pp. brauchst du gut und gerne 20 Takte a 2.5µs um ein Sample zu übertragen. Ein ADC der an einem I²C Bus mit 400kHz läuft /kann/ also gar nicht 400kSPS liefern.

#8079090
Lesenswert?

Moin,

Kai D. schrieb:

Das Bild ist die Aufzeichnung eines Durchlaufs mit einem Signalgenerator von 0 bis 400 kHz.

Was wird da durchlaufen? Das olle [0.5 0.5] FIR? Wie ist da der Messaufbau? Wenn man mit 400kHz Samplingfrequenz arbeitet, sollte man oberhalb von 200kHz nichts neues entdecken...

Es ist doppelt logarithmisch.

Mach' dafuer erstmal lieber lineare Frequenzachse.

Das Gelbe ist die Hüllkurve also der Absolutwert des Signals. Phase habe ich da nicht drin.

Phase ist da auch erstmal wurst, bei FIR mit symmetrischen Koeffizienzen eh' auch linear.

allerdings keine 100% Sperrung bei F/2, sondern Durchlass.

Irgendeinen Ripple halt, einmal mit 10?dB? und einmal mit 17dB?.

Gruss WK

OP (Firma: CAD- und CAE-Konstruktion) #8079098
Lesenswert?

Kleine Korrektur: Es ist kein Mittelwertfilter wie ( X(n) + X(n-1) ) /2 sondern Y(t) = Y(t-1) * 0,75 + X(n) * 0,25. Also in IIR mit 3-facher Gewichtung der alten Werte.

Hier ein neues Bild mit 50Khz ... 175kHz. Diesmal mit: Y(t) = Y(t-1) * 0,5 + X(n) * 0,5.

Die beste Dämpfung sind offenbar 10dB bei 50kHz und 150kHz, während er bei 100kHz gar nicht mehr dämpft.

Das Zackige sind irgendwelche Störungen - allerdings habe ich nun den Verdacht, daß bei der Programmierung des AWG etwas nicht stimmt und der bereits Aliasing aufwirft.

Angehängte Dateien:
OP (Firma: CAD- und CAE-Konstruktion) #8079101
Lesenswert?

Axel S. schrieb:

Ein ADC der an einem I²C Bus mit 400kHz läuft kann also gar nicht 400kSPS liefern.

Richtig, der ist auch parallel an dem Prozessor dran. Das hatte ich zunächst auch überschlagen. Das Stichwort I2C kam auch nur ins Spiel weil die am gleichen Takt nuckeln. Das kann man für die Betrachtung vergessen!

Dergute W. schrieb:

GNU-Octave liefert:

Ich kann den GNU Befehl nicht ganz dekodieren, aber in der Tat scheint das Bild zu stimmen!

Dergute W. schrieb:

bei FIR mit symmetrischen Koeffizienzen

Sollte ich lieber so einen nehmen?

#8079104
Lesenswert?

Kai D. schrieb:

Die Taktfrequenz für den Wandler ist in der Tat 400kHz.

Die Punkte sind Tippfehler, respektive mit dem "k" redundant.

Und was sollte dort richtig stehen? Unter einem Punkt, der redundant mit einem "k" ist, kann ich mir leider ÜBERHAUPT nichts vorstellen.

Kai D. schrieb:

Wie auch immer, sollten die 400kHz mit Sicherheit geeignet sein, die gewünschten 15kHz abzutasten und zu filtern.

Ja, jedenfalls wenn du die Daten mit den 400kHz Abtastrate bekommst und der I2C damit überhaupt nichts zu tun hat. Aber wenn du die 15kHz filtern möchtest, muss auch das Rauschen ausreichend schnell abgetastet werden. Wie sieht dein Rauschspektrum aus und was bleibt davon hinter deinem internen 200kHz-Filter?

Ich hatte nun erwartet, daß ein Filter wie oben angesprochen, mit wachsender Frequenz zunehmend dicht macht. Das ist offenbar nicht der Fall. Ganz blicke ich noch nicht durch, aber es hat wohl mit dem Aliasing zu tun.

Bei 400kHz Abtastrate und einer sauberen Bandbegrenzung des Eingangssignals auf 200kHz bekommst du kein Aliasing. Mir scheint es allerdings unwahrscheinlich, dass du ein Filter besitzt, das sauber alles über 200kHz abschneidet und darunter alles unverfälscht durch lässt. So etwas gibt es nur als theoretisches Konstrukt.

Wenn du den Frequenzgang von deinem oben angesprochenen Filter erfahren möchtest, kannst du ihn ausrechnen und dann per Messung verifizieren. Breitbandiges Rauschen auf den Eingang zu geben, um die Filterkurve zu messen, funktioniert nur, wenn du ein funktionierendes Antialiasing-Filter vorgeschaltet hast, d.h. wenn du keine Signalanteile über 200kHz auf dein Filter gibst. Du könntest das Rauschen weg lassen und das Filter mit einem Sinus-Signal durchwobblen.

: Bearbeitet durch User
#8079109
Lesenswert?

Moin,

Ohne Frequenzbeschriftung sind deine Bilder ziemlich fuer den Popo. Vermutlich zeigen die dir schon ein paar Aliasspektren. Hoechstwahrscheinlich ist dein ganzer Filterzauber beim ersten Minimum der Amplitude schon bei fsample/2 und damit also durch, d.h. es zaehlt da nur das ca. linke Drittel des Bildes.

Kai D. schrieb:

Dergute W. schrieb:

bei FIR mit symmetrischen Koeffizienzen

Sollte ich lieber so einen nehmen?

Musst du wissen, was du mit deinem Filter ueberhaupt filtern willst. Normalerweise ueberlegt man sich erstmal, welche Frequenzen, oder Frequenzbereiche man wie wenig oder viel daempfen oder verstaerken will. Und ob ein da irgendeine nichtlinearitaet in der Phase kratzt. Dann baut man sich aus den Infos ein entsprechendes Filter. Und wenn man dann ein langes Gesicht macht, weils zum Rechnen zu lange dauert, kann man immernoch anfangen, wie man das jetzt mit weniger Rechnen realisieren kann.

Gruss WK

#8079112
Lesenswert?

Dergute W. schrieb:

Ohne Frequenzbeschriftung sind deine Bilder ziemlich fuer den Popo.

Naja, die "Bildunterschrift" gibt dir einen ungefähren Anhalt, nur ob die Darstellung linear oder logarithmisch ist, wäre noch zu klären.

Kai D. schrieb:

Ich habe hier das Spektrum aufgenommen und finde beim Eingang von 10.000 Hz bis etwa 200kHz den folgenden Verlauf ...

Viel schlimmer ist die Y-Achse. Dort stehen zwar Zahlen dran, aber keiner weiß, was die angeben und die Art der Teilung ist ebenfalls unklar :-(

Persönliche Seite #8079122
Lesenswert?

Rainer W. schrieb:

Viel schlimmer ist die Y-Achse. Dort stehen zwar Zahlen dran, aber keiner weiß, was die angeben

"-12" riecht verdächtig nach Dezibel würde ich sagen, aber vollständige Beschriftungen sind heute ja nicht mehr üblich.

Kai D. schrieb:

Y(t) = Y(t-1) * 0,5 + X(n) * 0,5.

Das ist der denkbar einfachste gedämpfte Filter. Aber egal - das Problem ist ein anderes:

Was wird denn da wo abgegriffen? Der Filter ist ja offenbar Software. Woher kommen die Daten für das treibende Signal?

Das Spektrum des Filters ist insoweit plausibel. Abgesehen von der komischen Einspeisung scheint der ADC auch zu liefern. Allerdings hat der offenbar keine Bandfilterung davor, was er aber haben muss, soll er keine Frequenzen erfassen, die der ADC nicht verarbeiten kann. Die kriegst du nämlich auch mit dem besten Filter nicht mehr raus. Es braucht einen AA-Filter vor dem ADC. In dem Fall wahrscheinlich so etwa bei 20-30 kHz. Dann erledigt der schon einmal das Rauschen in dem Bereich ab 40-50KkHz, wo der Software-Filter anfängt, zu versagen.

Persönliche Seite #8079127
Lesenswert?

Rainer W. schrieb:

Bei 400kHz Abtastrate und einer sauberen Bandbegrenzung des Eingangssignals auf 200kHz bekommst du kein Aliasing.

Das reicht nicht und ist auch kaum machbar. Das Filter muss sehr deutlich vor Nyquist dichtmachen und zwar total. Alles, was drüber ist, klappt wie ein Spiegel wieder ins Spektrum darunter.

Egal welchen SW-Filter man nimmt, je mehr es mit der Erfassung in Richtung Nyquist geht, desto mehr und steiler muss das analoge AA-Filter davor sein.

Idealerweise baut man sowas mit ausreichendem Abstand zur kritischen Frequenz so wie in grün: Der AA stoppt schon weit bevor fs/2, hat aber genug Reserve für einen Faktor 1 im Durchlassbereich. Hat er das nicht, baut man in gelb, muss gfs steile Filter nehmen und per SW korrigieren und / oder etwas Alias (rot) in Kauf nehmen.

Im Audiobereich baut man bei 48kHz in rot. Da kriegt man immer Alias rein und hat einen reichlich faulen Kompromiss und sehr viel Getue in den Höhen. Jeder DAC und jeder ADC macht da was er will, zur Belustigung der HIFI-Fans. Mit Einzug der 96kHz Technik hat sich das Problem entschärft und mit 192kHz erledigt. Hält die HIFI-Freaks aber nicht davon ab, weiter ihre 48kHz Wandler zu benutzen und sich über das Glitzern in den Höhen zu erfreuen.

Viele Studioleute schwören auch noch auf die 48kHz Rate und arbeiten in der DAW damit und nehmen damit auf. Was sie oft nicht wissen ist, daß praktisch alle Chips für ADCs und DACs seit 20 Jahren intern mit erheblichem oversampling arbeiten, das Signal extrem stark filtern und runterprozessieren. Praktisch arbeiten die genau so wie Oszilloskope, die auch bei den einfachen Typen mit 200MHz Bandbreite schon mit 8Gsps daher kommen.

Angehängte Dateien:
#8079301
Lesenswert?

J. S. schrieb:

Das reicht nicht und ist auch kaum machbar. Das Filter muss sehr deutlich vor Nyquist dichtmachen und zwar total. Alles, was drüber ist, klappt wie ein Spiegel wieder ins Spektrum darunter.

Aach ... Aliasing bekommst du nur, wenn im Signal Frequenzanteile über der halben Abtastfrequenz enthalten sind. Das AA-Filter muss nicht "deutlich vor Nyquist" "und zwar total" dichtmachen. Wie kommst du darauf? Einziges Problem für die Praxis ist eben nur, dass es ein Filter, das hart bei der halben Abtastfrequenz dicht macht, leider nur als theoretisches Konstrukt gibt.

: Bearbeitet durch User
Persönliche Seite #8079340
Lesenswert?

Rainer W. schrieb:

Aliasing bekommst du nur,

Genau das schreibe ich ja:

"Frequenzanteile über der halben Abtastfrequenz" gibt es dann, wenn das Filter nicht vor Nyquist-Frequenz dicht macht. Theoretisch geht es bis ganz hart heran, aber (wie ich ebenfalls schrieb) gibt es keine Filter mit unendlicher Steilheit und unendlicher Dämpfung, daher gilt die reale grüne Linie. Die darf man sich nach unten ins Unendliche fortgesetzt denken.

Gerade bei digitalen Filtern ist es ja so, daß die keinen monotonen Verlauf haben und jenseits der eigentlichen Eckfrequenz noch wellige Durchlassbereiche im Stoppband haben. Bei analogen Filtern ist es wiederum so, daß sie um die Eckfrequenz herum gfs sehr wellig werden. Das ist der gelbe Bereich.

Daher meine Aussage, daß der Filter deutlich vorher zumachen muss, konkret muss die Eckfrequenz entsprechend liegen. Um ein Beispiel aus dem Audiobereich zu nennen, nutzen wir 4-pol-Filter mit 24dB/oct. Üblicherweise werden Störungen im Bereich 40dB unhörbar - bei 10-12dB Lautheitsdynamik möchte man also 50dB-Filterung haben. Das erfordert also 2 Oktaven. Bei einem 192kHz-Signal kommt man also bei 24kHz Grenzfrequenz an, was gut passt. Damit kriegt man solche Filter perfekt (genug) durchgerechnet, wenn man sie emuliert, respektive kann sie als AA-Filter nutzen, wenn man so ein System als DDS betreibt.

#8079376
Lesenswert?

J. S. schrieb:

Idealerweise baut man sowas mit ausreichendem Abstand zur kritischen Frequenz so wie in grün

Idealerweise hat man die Anforderungen vernünftig spezifiziert. Ein Filter, das auf 0 dicht macht, gibt es nicht. Man muss also spezifizieren, wieviel Aliasing man zulassen will. Zusammen mit dem Störspektrum ergibt sich dann, wie das AA-Filter bei gegebener Abtastfrequenz aussehen muss.

#8079383
Lesenswert?

Ich fasse mal den aktuellen Stand zusammen:

Es wird ein Signal digital gefiltert von dem man nicht weiß, oder uns nicht mitteilen will

  • wie das ursprüngliche analoge Signal aussieht
  • welches analoge Anti-Alias-Filter, wenn überhaupt, eingesetzt wird
  • mit welcher Abtastrate abgetastet wird
  • was rausgefiltert werden soll

Dazu gibt es "Informationen" die nicht relevant sind, und die noch dazu um den Faktor 1000 falsch sind.

Auf dieser Basis werden wir gefragt

Passt das so?

Wir dürfen jetzt entscheiden ob das Getrolle ist oder ob jegliche Grundlagen zum Filterentwurf fehlen.

Ja ne, der Thread kann zugemacht werden.

#8079528
Lesenswert?

Weder noch:

Ich möchte mit einem Controller ein digitales Signal filtern,...

Ich hatte an ein PPM (Modellbau-Fernsteuerung aus den 90ern) gedacht. Wenn dort kurze Spikes drinn waren und das alles schlecht gemacht war, sprang das Auto auch mal "kurz rückwärts". Scheint aber dann doch ein analoges Signal zu sein.

OP (Firma: CAD- und CAE-Konstruktion) #8079548
Lesenswert?

Hannes J. schrieb:

Ich fasse mal den aktuellen Stand zusammen:

Auf diesen "Übergang" von Positiv auf Negativ hätte die Welt verzichten können. Wenn du nichts sachliches, inhaltliches Beizutragen hast, dann kümmere dich um deinen Job, falls du einen hast.

  • wie das ursprüngliche analoge Signal aussieht

das ist unbekannt, weil es von einem Sensor kommmt. Die Spezifikation 15kHz wurde genannt.

  • welches analoge Anti-Alias-Filter, wenn überhaupt, eingesetzt wird

das ist nicht Gegenstand der Betrachtung. Es geht um die Wirkung der digitalen Filterung. Dort ein gefiltertes Signal zu applizieren, macht keinen Sinn.

  • mit welcher Abtastrate abgetastet wird

Es sind 400kHz wie mehrfach erklärt.

  • was rausgefiltert werden soll

Störungen über 15kHz, wie ausdrücklich im ersten Posting erwähnt.

Ja ne, der Thread kann zugemacht werden.

Ich wüsste nicht, daß selbsternannte Johannesens entscheiden, welche threads geschlossen werden müssen!!!

OP (Firma: CAD- und CAE-Konstruktion) #8079549
Lesenswert?

Axel R. schrieb:

Ich hatte an ein PPM (Modellbau-Fernsteuerung aus den 90ern) gedacht.

Ich betreibe in der Tat Modell und Roboterbau, doch diesmal ist es keine Fernsteuerung, die betroffen ist.

J. S. schrieb:

Kai D. schrieb:

Y(t) = Y(t-1) * 0,5 + X(n) * 0,5.

Das ist der denkbar einfachste gedämpfte Filter.

Welcher wäre der nächst bessere?

Was wird denn da wo abgegriffen?

Einspeisepunkt des Testsignals auf nach dem AD-Wandler und dann nach dem Filter. Das sind Werte aus der firmware, die gespeichert wurden.

Woher kommen die Daten für das treibende Signal?

Programmierbarer Testgenerator in Labview.

Es braucht einen AA-Filter vor dem ADC.

Selbverständlich wird ein solcher implementiert.

OP (Firma: CAD- und CAE-Konstruktion) #8079557
Lesenswert?

Axel R. schrieb:

Das Signal ist unbekannt, weil es aus einem Sensor kommt?

Ja

Erklär' mal bitte. Ist Sensor und Mikrocontroller eine Einheit?

Nein

Vielleicht magst Du verraten, um wlechen Sensor(Typ) es sich handelt?

Nein

Ich sehe nicht, wo die Relevanz ist. Das Signal hat nutzbare Spektralanteile im Bereich 10-15kHz. Mehr muss man nicht sehen.

#8079560
Lesenswert?

Moin,

Eieiei, das ist aber alles recht zaeh... Hier mal n paar Fragen, die man sich bei der Entwicklung von sowas stellen sollte: Also, ein Tiefpass mit 15kHz Grenzfrequenz bei 400kHz Samplingrate soll's werden, richtig? Wie siehts um die 15kHz herum aus, wo kann's mit der Daempfung anfangen, wo sollte die Sperrdaempfung erreicht sein, also wie breit kann der Uebergang von Durchlass auf Sperr sein? Was soll denn der fuer eine Sperrdaempfung haben? (Kleiner Tip: Es ist nicht clever in der Antwort auf diese Frage: "Maximal" oder so zu antworten. Aehnlich unclever waere sowas wie 500dB). Also, was ist ein realistischer Wert fuer dich? Gibts irgendwelche Frequenzbereiche im Sperrbereich, wo die Sperrdaempfung besser/schlechter sein kann/darf/soll? Was kannst du an Ripple im Durchlass aktzeptieren (in dB)? Ist eine konstante Gruppenlaufzeit wichtig? Ja/nein/keineAhnung Was issn das fuer ein µC, auf dem das laufen soll? Mit welcher Wortbreite (wieviel bit) willst/musst/kannst du rechnen, oder solls float/double oder so sein? Isses OK, wenn bei der Filterei auch gleich noch dezimiert wird, also hier z.b. koennte es sich anbieten mit 400kSamples/s reinzugehen und mit 50kSamples/s rauszukommen oder muss da auch die Originaldatenrate durch die ganze Filterei mitgeschleppt werden?

Das sind so halbwegs wichtige Fragen, wenn man sowas bauen will und nicht, was fuern Sensor und ob IIR oder FIR oder exponentiell oder ruelpsender Mittelwert oder sonst sowas.

Gruss WK

Edit: Ich seh grad ein Post drueber: Also brauchste einen Tiefpass mit 15kHz oder einen Bandpass mit 10..15kHz(, schnauf)?

: Bearbeitet durch User
OP (Firma: CAD- und CAE-Konstruktion) #8079572
Lesenswert?

Ja, 15Khz 3dB wären ok, 20kHz gehen auch

  • 400 KHz sind kein Problem zum Verarbeiten
  • etwas Ripple oberhalb 15 ok
  • kein ausgeprägtes Überschwingen, max 1%, daher Filter höherer Ordung bisher vermieden

Man könnte auch einen Filter auf 30kHz legen und entsprechend steil bauen.

Gruppenlaufzeit = keine Ahnung

Input 12 Bit, Auflösung ist 16 Bit Integerrechnung, kein float. Ich kann das implementieren, brauche nur die Formel.

: Bearbeitet durch User
Persönliche Seite #8079616
Lesenswert?

Rainer W. schrieb:

Idealerweise hat man die Anforderungen vernünftig spezifiziert. Ein Filter, das auf 0 dicht macht, gibt es nicht. Man muss also spezifizieren, wieviel Aliasing man zulassen will.

Nee, du kannst spezifizieren, ab wann die abklingende Kurve die 0 erreicht, denn die ist durch die digitale Auflösung definiert und liegt bei 0.25 digit - wenn man richtig rechnet, bzw. bei 1 digit und mehr, wenn faul ist und nicht rundet. Darüber gibt es oft noch eine "analoge" Grenze des Rauschens. Wenn der Filter dort genügend Dämpfung hat, ist das die Null.

Deshalb schreibe ich ja, daß man mit genügend übersampling solche Probleme gut erschlagen kann.

Persönliche Seite #8079618
Lesenswert?

Kai D. schrieb:

Welcher wäre der nächst bessere?

Naja, ein 2-poliger Filter halt. Ich würde einen Butterworth für einen kleinen Controller vorschlagen. Sollte sich gut implementieren lassen. Ist ja C nehme ich an?

Die einfachen TP haben nur 6dB/Oktave daran ist nichts zu rütteln. Ich nehme die zusammen mit einem einfachen FIR nur als Dämpfung für Rauschen und Rundungsfehler, um mich an die typischen Bandbegrenzungen von Analogverstärkern heranzupirschen. Damit läuft z.B. der Frequenzgang oberhalb des hörbaren Spektrums langsam gegen Nuqist aus.

Was mir dazu noch eingefallen ist:

Kai D. schrieb:

Programmierbarer Testgenerator in Labview.

Wie ist der programmiert und was gibt der aus? Die Kurve mit der getestet wird, scheint auch schon Alias zu haben. Das darf in keinem Fall sein, weil da nichts Verwertbares herauskommt. Bzw man könnte damit nur testen, was der Wandler macht. Der müsste eigentlich von sich aus schon alles über Nyquist abblocken. Ich vermute, der kann aber von Haus aus einige Megahertz und wird mit den 400k nicht ausgelastet, womit der AA-Filter nicht funktioniert.

Um das was du bauen musst, nachzustellen, muss der AA-Filter vor den ADC oder man macht die Abtastung so extrem hoch, daß man es in Signalverarbeitung machen kann. Dann braucht es aber einen massiven Filter, der alles zwischen Nutzfrequenz und Bandende des DAC-AA prozessiert.

In jedem Fall muss das Nutzspektrum ausgetetet werden! Das Verhalten des Filters auszumessen, indem man ihn mit Frequenzen oberhalb Nyquist versorgt, hat keinen echten praktischen Nutzen, wie man sieht.

Angehängte Dateien:
#8079633
Lesenswert?

Dergute W. schrieb:

Also, ein Tiefpass mit 15kHz Grenzfrequenz bei 400kHz Samplingrate soll's werden, richtig?

Wohl eher nicht. Wenn das Nutzsignal bis 15kHz reicht, wird man das bei 15kHz vielleicht nicht 3dB abschwächen wollen. Wie glatt muss das Filter im Bereich des Nutzsignals sein? Ist das Nutzsignal ein reiner Sinus oder enthält es auf Grund der Kurvenform auch noch andere Spektralanteile?

J. S. schrieb:

Ich würde einen Butterworth für einen kleinen Controller vorschlagen.

Ein Butterworth ist ein Analogfilter, aus dem man erstmal z.B. per Bilineartransformation ein digitales, halbwegs ähnliches Filter erzeugen muss.

Bei einem Nutzsignal im Bereich 10 bis 15kHz stellt sich auch die Frage, was mit dem Bereich unterhalb von 10kHz passieren soll? Sind relevante Störanteile in dem Bereich zu erwarten? Dann würde man vielleicht besser ein Bandpassfilter verwenden, z.B. in Form eines Frequency Sampling Filters.

: Bearbeitet durch User
#8079734
Lesenswert?

Moin,

Hier mal ein Gegenbeispiel, wie jemand es schafft, im Eroeffnungspost umfassend genug sein Problem zu beschreiben, was dann zur Folge hat, dass da ziemlich schnell eine moegliche Umsetzung steht: Beitrag "Filterdesign lernen"

Im Gegensatz zu hier, wo sogar nach x Posts in y verschiedenen Threads irgendwie nix voran geht...

wolltichnurmalangemerkthaben. Gruss WK

#8079804
Lesenswert?

Kai D. schrieb:

Wie könnte man das verbessern mit wenig Aufwand? Ich habe Bedenken, daß zuviel Rauschen durch kommt.

Die Bilder besser beschriften und Kriterien genauer darstellen. Im Thread hier ist auch einiges an Rauschen unterwegs.

J. S. schrieb:

In jedem Fall muss das Nutzspektrum ausgetetet werden! Das Verhalten des Filters auszumessen, indem man ihn mit Frequenzen oberhalb Nyquist versorgt, hat keinen echten praktischen Nutzen, wie man sieht.

Das stimmt nicht ganz, manchmal kann man ja Sampleraten und die Frequenzen direkt anpassen bzw. aufeinander abstimmen. Widersprüchlich ist da eher der "Einfachhalber" Begriff oben. Einfacher wäre gewesen, korrekte oder entgegenkommende Rechnerei und Optimierungen vorzubereiten. Ein anderer Aspekt wäre, weniger Quantisierungsrauschen zu erzeugen - das bezieht sich aber nicht vorrangig auf die Frequenz, sondern eher auf die Bitrate - ganz unabhängig voneinander sind die beiden Verhältnisse aber nicht.

Übrigens kann man mit einem z.B. modulen Sample-Synth direkt ausprobieren, mit welcher Frequenz (oder mit wieviel Bit) man am besten eine Bass-Drum sampelt oder mit welchen einen Tschinderassabumbum-Sound.

Persönliche Seite #8079912
Lesenswert?

Rainer W. schrieb:

Ein Butterworth ist ein Analogfilter, aus dem man erstmal z.B. per Bilineartransformation ein digitales, halbwegs ähnliches Filter erzeugen muss.

Das ist für Analogelektriker aber anschaulicher und Implementierungen in C findete man wie Sand am Meer. Man müsste sie also nicht einmal verstehen und das scheint mir das Problem beim TE.

Rainer W. schrieb:

Frequency Sampling Filters.

Mit ausreichender TAP-Zahl ja, allerdings braucht das auch ordentlich Rechenleistung und.

Persönliche Seite #8079916
Lesenswert?

Dergute W. schrieb:

Hier mal ein Gegenbeispiel,

hm, auch da fehlen die wesentlichen Angaben, welche die mögliche implementierung bedingen, z.B. Rechenresourcen und Auflösung der CPU, siehe auch meine damaligen Rückfragen in Beitrag 3. :)

Das Problem ist einfach, daß die Anfänger gar keine Ahnung haben, was sie alles an Randbedinungen posten und berücksichtigen müssten. Gerade solche Dinge wie Rückkopplungen und Auflösungen sind kritisch wegen Schwingungen.

Rbx schrieb:

Ein anderer Aspekt wäre, weniger Quantisierungsrauschen zu erzeugen

Wodurch?

das bezieht sich ... auf die Bitrate

Die des Wandler?

Oder geht die Idee Richtung "weniger Abtasten mit mehr Integrationszeit"?

Übrigens kann man mit einem z.B. modulen Sample-Synth direkt ausprobieren, mit welcher Frequenz (oder mit wieviel Bit) man am besten eine Bass-Drum sampelt

Naja, wenn man Schlagwerk sampelt, braucht man schon die Transienten und kann da nicht bandbegrenzen. Sehe ich nicht. Bei den Bits und der Dynamik schon gar nicht.

#8079936
Lesenswert?

J. S. schrieb:

das bezieht sich ... auf die Bitrate

Die des Wandler?

Was denn sonst?

J. S. schrieb:

Oder geht die Idee Richtung "weniger Abtasten mit mehr Integrationszeit"?

Quark. Früher wurde auch schon mit 8 Bit gesampelt. Da waren die Klänge nicht unbedingt so toll. Und generell wollte man ja auch von 16 Bit weg, gerade weil da noch mehr Rauschen auf den CDs waren als mit 20 oder 24 Bit. Wie gesagt, wenn man sich nicht damit näher beschäftigt, versteht man die Zusammenhänge kaum.

Und dann: So manche Klangbilder kann man auch gut mit Additiver Klangsythese gut hinbekommen.

Persönliche Seite #8079957
Lesenswert?

Rbx schrieb:

Was denn sonst?

Wie willst du denn da was "anpassen" oder "abstimmen" wie du schreibt? Ohne Kenntnis einer zu sampelenden Freuquenz gibt es da nichts abzustimmen. Da kann man nur auf die Bandgrenze zielen und überabtasten. Und der Faktor 20 den der TE hat, reichen wohl.

Rbx schrieb:

Quark. Früher wurde auch schon mit 8 Bit gesampelt.

Falsch gelesen. Es ging nicht um die Auflösung in Y sondern in t. Man kann bei manchen Wandlern die Integrationszeit bestimmen. Damit sinkt das Rauschen.

Was der Einwurf mit den CDs soll, ist mir unklar.

Rbx schrieb:

Klangbilder kann man auch gut mit Additiver Klangsythese gut hinbekommen.

Auch was die additive Synthese uns hier sagen soll, ist mir schleierhaft.

Hier geht es ja ums Filtern, also subtraktive Synthese, wenn man das schon vergleichen wollte.

Rick schrieb:

Leute die alle wesentlichen Angaben und Randbedingungen kennen und benennen, brauchen hier keine Fragen zu stellen...

Sag ich ja:

J. S. schrieb:

Das Problem ist einfach, daß die Anfänger gar keine Ahnung haben, was sie alles an Randbedinungen posten und berücksichtigen müssten.

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