IIR-Filter in ATMega324

Gast #1767790
Lesenswert?
• ▲
▼
Hallo, ich habe versucht, für meine Bachelorarbeit ein IIR-Filter erster 
Ordung zu implemetieren, dass das Rauschen am ADC-Eingang unterdrücken 
soll.
1
#define IIR_NUMERATOR       0xF0
2
#define IIR_DENOMINATOR     0x10
3
    // Wert Filtern und in Zielvariable schreiben
4
    stProcessData.ui16AnalogValue = (
5
      __multiply_unsigned(ui8FilterInput,IIR_NUMERATOR) +
6
      __multiply_unsigned(stProcessData.ui16AnalogValue,IIR_DENOMINATOR))>>8;

Die Koeffizienten sind mit Matlab berechnet. Sowohl Daten als auch 
Koeffizienten haben eine Breite von 8-Bit. Nun habe ich das Problem, 
dass durch Rundungsfehler kleine Änderungen sich gar nicht auswirken. 
Dem wollte ich entgegen wirken, indem ich die Auflösung der Daten 
(künstlich) erhöhe, um die Rundungsfelher zu verringern. Leider komme 
ich schon den ganzen Tag damit nicht auf einen grünen Zeig. Hat jemand 
einen Tipp in dieser Richtung?
#1767979
Lesenswert?
• ▲
▼
Als Blockdiagramm sieht das IIR-Filter so aus:
http://www.mikrocontroller.net/articles/Digitalfilter_mit_ATmega#Von_der_.C3.9Cbertragungsfunktion_zum_Programm

hier sind also nur die Koeffizienten b0 und a1 vorhanden.
Das Ergebnis ist b0 mal Eingang minus a1 * vorheriges Ergebnis.

8 Bit ist für Digitalfilter sehr wenig. Es hilft aber, das 
Zwischenergebnis möglichst lange in 16 Bit Breite zu belassen, und nur 
für den Ausgang auf die oberen 8 Bit zu beschneiden. Das kostet 
allerdings mehr Zeit.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.