Ich möchte mit einem dsPIC ein Audiosignal verarbeiten. Dazu denke ich, dass eine Bandbreite von 10kHz und somit 20kHz Abtastrate ausreicht. Nun müsste ich dazu ein Antialising Filter bauen, da im Audiosignal vermutlich Frequenzen bis etwa 20KHz drin sind. Reicht für meine Bastelei nun ein einfaches Filter erster Ordnung? Oder sollte das schon eines mit höherer Flankensteilheit sein? Wie kann ich praktisch abschäzen, wie sich eine unzureichende Flankensteilheit auf meine Abtastwerte auswirkt. Gibt es hier eine "Fausregel" ? Oder brauceh ich vielleicht gar kein Filter, da die Anteile im Audiosignal ohnehin gering sind?
Hallo das kommt darauf an, was du mit dem digitalisierten Signal anfangen willst. Wenn daraus eine FFT werden soll, gibts halt "falsche" Informationen in deiner FFT. Was willst du denn mit den Daten anfangen ? Gerhard
Ich möchte die Funktionen zur digitalen Filterung ausprobieren, aber auch hören, wie es akkustisch wirkt. Es ist nur Spielerei um den dsPIC kennenzulernen. Das digitale Signal möchte ich dann über I²S rückwandeln.
Alle Signalanteile, die nach der Filterung noch oberhalb der halben Abtastfrequenz drin sind, spiegeln sich um die halbe Abtastfrequenz nach unten. In deinem Beispiel werden 12kHz zu 8kHz, 15 kHz zu 5 kHz. Lästig sind z.B. Reste des Stereo-Pilottones (19kHz), der dann auf 1kHz gespiegelt wird. Richtigerweise sollten alle Signale oberhalb der halben Abtastfrequenz mindestens um soviel gedämpft sein, wie du mit dem AD-Wandler an S/N schaffst. S/N ist ca. 6dB/Bit. Also: bei 10 Bit Wandler sollten die Frequenzen um ca. 60 dB gedämpft sein. Man kann natürlich auch berücksichtigen, dass die Pegel im Audiobereich bei natürlichen Signalen (nicht Synthesizer) schon deutlich kleinere Pegel als im Bassbereich haben. Für deine Spielerein kannst du natürlich großzügig sein und ev. eine Signalquelle nehmen, die schon vorfiltert, wie z.B. den Höhen-Klangregler am Audioverstärker.
Ich täte mal ohne Filter anfangen, um zu "sehen" wie Aliasingeffekt klingen. Tatsächlich sind ja die hochfrequenten Anteile in Deinem Signal nicht so stark vertreten, wie die niederfrequenten. Ja nach Wortbreite Deines ADC muss der Tiefpass unterschiedlich steil ausgelegt werden. Ich sage jetzt mal vorsichtig, das verhält sich proportional zur Wortbreite. Rein theoretisch muss bei Abtastfrequenz/2 das Signal auf Bitzahl x 6dB abgeschwächt werden. Man braucht also sehr schnell sehr steile Filter. Je nach Auslegung wird auch mehr oder weniger der Nutzbandbreite beschnitten. Für "ernsthafte Spielerei" würde ich zumindest ein aktives Filter 2. Ordnung vorsehen, das mit Tschebyscheff-Characteristik dimensioniert ist: Etwas Welligkeit im Durchlassbreich, aber steiler Abfall im Sperrbereich. Wie ein Filter 1. Ordnung klingen wird, kann ich nicht sagen. Probier's einfach aus.
>Wie ein Filter 1. Ordnung klingen wird, kann ich nicht sagen. Probier's >einfach aus. Der Unterschied zu gar keinem Filter dürfte minimal sein ... :-)
Jo. Ungefähr so wie ein Höhenregler :) Trotzdem kann man sich ja mit der Eckfrequenz spielen. In der Tat wäre ich auch zu faul, nur zum Probieren hier gross nen Filter zu dimensionieren. Man ist ja kompromissfähig.
Vielen Dank, ich kenn mich nun aus. Ich werde einfach einen SC Filter von Maxim nehmen, die sind zwar nicht ganz billig, aber haben den Vorteil, dass sie mit der Clock durchstimmbar sind. Würdet ihr sowas empfehlen? Ich nehme mal an, dass ich die Reste der Clock am Ausgang nicht mehr spüren werde.
Das Filter muss nicht besonders steil sein wenn du die Abtastfrequenz großzügiger dimensionierst. Zum Beispiel 40 kHz statt 20 kHz. Das reduziert die Anforderungen an das Filter enorm, und um dann die Abtastrate zur einfacheren Weiterverarbeitung wieder zu reduzieren reicht ein relativ einfaches Digitalfilter.
Ich löse es derzeit so das ich ein digitales Signal filtere für eine Unterabtastung. Dadurch erhalte z.B. ein Signal mit 48k Messwerten das keine Frequenzen größer als meine halbe Unterabtastfrequenz hat. Weil das Signal aber beschleunigt ist, setze ich jetzt die Abtastwerte um!!!! Als hätte ich äquidistant zum beschleunigten Signal digitalisiert. Stellt euch eine Welle vor die sich beschleunigt dreht. Jeder Messwert ist jetzt auf den Winkel der Welle definiert. Also eine gleiche Abtastung pro Winkel, statt wie üblich über die Zeit. Ich habe genausoviele Stützstellen wie ich das gefilterte Zeitsignal hätte unterabtasten können (hab ich ja nicht). Das Abtasttheorem geht davon aus das man konstant abtastet. Der Filter geht auch davon aus das ich konstant abtaste. Das signal war aber nicht konstant!!! Durch die Verschiebung habe ich es erst konstant gemacht. Hab ich gegen das Abtasttheorem verstoßen? Warum funktioniert das? (Das ganze heißt nämlich Ordertracking.) PS: Hier ist das Abtasttheorem definiert: http://mfb.informatik.uni-tuebingen.de/book/node182.html den Beweis hab ich verstanden (einigermaßen). Aber wie kann ich beweisen das das auch geht in meinem Fall.
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.