Mit einem 8bit-Mikrocontroller lese ich eine Spannung vom 10bit-AD-Wandler ein. Jetzt möchte ich mit Hilfe eines digitalen Filters in Software das Rauschen des AD-Signals minimieren. Welcher Filter ist da geeignet? Woher bekomme ich die Grenzfrequenz?
Digitalwert (AD-Wandler) --> Mikrocontroller --> Softwarefilter Wie könnte man dies realisieren?
Es macht keinen Sinn! Antialiasingfilter davor, dann wird rauschen ohnehin unterdrückt. Es sei denn dein Antialaisingfilter hat eine so hohe Grenzfrequenz (weil sehr schneller AD Wandler) und dein Signal ist weit überabgetastet, dann kann man noch ein digitales Filter ansetzen. Aber um das zu beantworten fehlen, wie so oft, wichtige Informationen deinerseits. Zum Beispiel: - Wie hoch ist die Abtastrate? - Wie groß ist deine höchste Signalfrequenz? pumpkin
Nimm einen Exponentialaverage : http://www.ibrtses.com/embedded/exponential.html Es ist faktisch dasselbe wie ein RC-Tiefpass.
>>Wie hoch ist die Abtastrate? Ich lese im Hauptprogramm in der while(1) Schleife den AD Wert aus. Wahrscheinlich müsste ich mit dem Oszi mal messen. >>Wie groß ist deine höchste Signalfrequenz? Wie könnte ich diese ermitteln?
"das Rauschen des AD-Signals minimieren" Rauschen bringst du meiner Meinung nach mit Filtern nicht weg, da Rauschen halt zufällig ist. Ich würde von mehreren Samples den Mittelwert bilden oder das Layout optimieren.
Filtern ist ja auch zufällig und ein Mittelwert ist kein Filter sondern eine Abfolge von arithmetischen Operationen. Das Layout ist sowieso immer schuld. Frei nach Herrn N**r: Wenn man keine Ahnung hat, einfach mal die Fresse halten.
> Ich lese im Hauptprogramm in der while(1) Schleife den AD Wert aus. > Wahrscheinlich müsste ich mit dem Oszi mal messen. Mach das. > Wie könnte ich diese ermitteln? Du wirst doch wissen, wie hoch die maximale von dir gemessene Frequenz sein soll?!? pumpkin
>> Filtern ist ja auch zufällig das wäre sehr schlecht! >> und ein Mittelwert ist kein Filter sondern >> eine Abfolge von arithmetischen Operationen. >> Das Layout ist sowieso immer schuld. Was ist den ein Filter? Keine "Abfolge von arithmetischen Operationen"??? Über ein geeignetes Filter kann man sehr schön "mitteln" >> Frei nach Herrn N**r: Wenn man keine Ahnung hat, einfach mal die Fresse >> halten. Merkst Du selbst, oder?
Schau zuerst einmal ins Datenblatt des µC´s bis zu welcher Sample-Frequenz der µC "rauscharm" arbeitet. Diese darfst Du auf gar keinen Fall überschreiten. Dann mache Dir klar, ob du 10Bit Auflösung überhaupt brauchst, wenn NEIN, dann benutze einen der oben genannten Filter (mit 10Bit berechnung!) und verwende vom Filterergebnis nur 8Bit. Dann solltest Du ein schön sauberes Signal erhalten.
@ Hmmm.... Du hast ja von Tuten und Blasen keine Ahnung, zwar von Blasen vielleicht schon... "Filtern ist ja auch zufällig und ein Mittelwert ist kein Filter sondern eine Abfolge von arithmetischen Operationen. Das Layout ist sowieso immer schuld." 1. Filtern ist definitiv nicht zufällig! 2. Weisst du überhaupt was Rauschen ist und wie es zu stande kommt? nicht... 3. Rauschen bringt man mit Abstand am einfachsten mittels optimieren des Layouts hin.
Nachdem die Frage nur unzureichend beantwortet wurde und ich das selbe Problem hab noch ne Frage von mir: Möchte mit Controller der 12Bit und 1MSPS ADC macht immer so vieleicht aus 100 oder 1000 Werten n Mittelwert bilden um ein gewisses Rauschen bzw. eventuelle Spitzen rauszubekommen. Bei der normalen Mittelwertbildung bekomm ich vieleicht n klareren Wert, aber ne Fehlmessung mit enormer Spitze kann sich da schon ganz gut auf das Ergebnis auswirken und verfälschen (zumindest bei nur 100Werten). Was für ne Mittelwertsbildung oder Filter empfehlt ihr mir? Wär da n PT1-Filter angebracht? Schöne Grüße
Einzelne Fehlmessungen entfernt ein Medianfilter: http://de.wikipedia.org/wiki/Medianfilter Cheers Detlef
Ich nehme an, die Frage bezieht sich auf Dithering http://de.wikipedia.org/wiki/Dithering_%28Audiotechnik%29 "Anstatt die "überflüssigen" Bits einfach abzuschneiden ("Truncation"),...sollte Dither hinzugefügt werden..."
Also Medianfilter klingt schon mal gar nicht so schlecht. Aber da wirds Programmtechnisch n bischen schwierig, wenn ich nicht unbedingt n Array mit 1000 Werten anlegen will. Oder hat da jemand n code dafür? Hab ja hier im Forum schon von einigen Filtern gelesen, aber welcher ist für so ne Anwendung auch am Besten???
Nein, ein Medianfilter ist nicht geeignet fuer einen ADC. Ein Median ist ein Bildverarbeitungsfilter, um einzelne, isolierte Ausreisser wegzumachen. Wenn man vor derm ADC das uebliche Antialiasing RC hat, bringt ein Median gar nichts, da keinerlei isolierten Ausreisser vorkommen.
Gar nicht. Filter sind dazu da, Signalrequenzen in einem oder mehreren Frequenzbändern zu unterdrücken. Wenn dich Signal-Rauschen-Abstand interessiert, dann musst du die Signalleistung erhöhen, Leitungslänge verkürzen, Leitung mit niedrigerem Dämpfungswert wählen.
Wenn das Spektrum von Nutz- und Rauschanteil unterschiedlich ist kann man das SNR durch ein Filter schon verbessern.
Moving Average Filter ist ausch immer ganz gut und vor allem einfach zu implementieren
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.