mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP 2 poliger IIR-Bandpass mit variabler Mittenfrequenz


Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

für die Realisierung eines 2 poligen IIR-Bandpass auf einem Atmega8 muss 
ich die Filterkoeffizienten online ausrechnen.

Hat jemand schon mal sowas realisiert?

Gruß,
ajax

Autor: GPS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Tabelle, resp ein Satz Tabellen geht nicht ? Die benoetigten 
Rechnungen sind nicht das uebliche, was man sonst auf einem AVR 
durchzieht.

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An eine Tabelle habe ich auch schon gedacht. Aber es soll sowohl die 
Resonanzfrequenz als auch die Güte variabel gehalten werden. Dazu 
bräuchte es also eine 2-D Kennlinienfeld bei dem jeder Aufhängpunkt mit 
5 Konstanten für die Koeffizienten belegt ist.
Mit der begrenzten Speicherkapazität ist das dann auch nicht mehr 
praktikabel.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein zweipoliges IIR Filter hat seine Pole bei r*exp(+/-j*w). Dabei 
entspricht r der Güte und w der Resonanzfrequenz.

Es ist also (z-r*exp(j*w))*(z-r*exp(-j*w)) auszurechnen. Dazu braucht 
man kein Kennlinienfeld sondern Schulmathematik zu komplexen Zahlen und 
eine Cosinusberechnung.

Math rules!

Cheers
Detlef

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Detlef,

hab's auch schon hingekriegt. Leider musste ich die Flieskommabib 
einbinden, was viel Speicher und viel Rechenzeit kostet. Die Berechnung 
der Koeffizienten braucht bei 16MHz jetzt 5ms, das ist für meine 
Anwendung so einigermaßen ok. Der Filter braucht ca. 10us ( geschätzt ).

Bei der Betreffzeile ist mir allerdings ein kleiner Fehler unterlaufen: 
Ich meinte nicht einen 2 poligen IIR-Filter, sonderen einen IIR-Filter 
2.ter Ordnung, d.h. es kommen noch 2 Nullstellen dazu.
Dadurch wird die Berechnung der Filterkoeffizienten etwas aufwendiger, 
falls man den Amplitudengang auf 1 normieren muß.

Das ärgerliche bei der Realisierung eines Filters auf einem Atmega ist 
der kleine Dynamikbereich, deshalb muß man den Amplitudengang relativ 
gut anpassen, damit es nicht zu Übersteuerungen kommt.

Gruß,
ajax

Autor: GPS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weshalb ist der Dynamikbereich klein ? Weil der ADC nur 10 bit hat. Da 
muesste man allenfalls einen externen ADC nehmen.

Autor: ajax (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen externen ADC? Warum nicht gleich ein ARM Prozessor? Oder noch 
besser: ein DSP aus der TMS320C6x Reihe? Zusätlich ein 10 Mhz 16Bit ADC, 
dann hätte man noch etwas Reserven.

Ne, ne, das Prinzip heist Single Chip, Einfachheit und Low Cost.

ajax

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.