mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP IIR-Filter in ATMega324


Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
#define IIR_NUMERATOR       0xF0
#define IIR_DENOMINATOR     0x10
    // Wert Filtern und in Zielvariable schreiben
    stProcessData.ui16AnalogValue = (
      __multiply_unsigned(ui8FilterInput,IIR_NUMERATOR) +
      __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?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Blockdiagramm sieht das IIR-Filter so aus:
http://www.mikrocontroller.net/articles/Digitalfil...

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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.