IIR unterschiedliche Koeffizienten +AVR

Gast #1261151
Lesenswert?

Hallo,

ich versuche grad einen IIR Filter in nach Atmel Appnote nachzubauen.
Die Koeffizienten habe ich mit Filter-Free bestimmt, leider sind diese 
stark unterschiedlich. D.h. der kleinste ist 7.xxxxe-8 und der größte 
2.xxxxxx. Diese Faktoren müßte ich ja ziemlich stark skalieren um 
überhaupt eine Handvoll wertende Stellen zu erhalten, während die 
anderen dann schon mächtig groß sind. Macht das überhaupt Sinn?

Die Abtastrate ist mit 1,6hz nur sehr gering, deshalb mach ich mir um 
die Performance prinzipiell auch keine Sorgen.
Die Grenzfrequenz ist auch recht klein da die interessante frequenz sehr 
langsam ist (1/600 hz) und der ganze Rest das nur stört.

Hilft evtl. Mehrfachfilterung?

Bin leider mit der Mathematik nicht so recht vertraut deshalb frag ich 
lieber vor ich mich tagelang mit nonsens beschäftige.


Grüße
 kaffeetas
#1263790
Lesenswert?

Ein Beispiel für ein elliptisches Stopbandfilter, das ich mit dem 
ATMega48 gebaut habe:

// Stopband-Filter für 1750 Hz, Samplerate =18029Hz
// Eckfrequenzen 1400Hz, 1700Hz, 1800 Hz, 2100Hz:
omega=[2*%pi*(1400/18029),2*%pi*(1700/18029),2*%pi*(1800/18029),2*%pi*(2 
100/18029)];
// Maximale Durchgangswelligkeit 0,5 dB
deltapass = (1-10**(-0.5/20)) ;
// minimale Sperrband-Dämpfung 50 dB
deltastop = 10**(-50/20);
// IIR-Filter berechnen:
[sos,gain,zeroes,poles] = eqiir('sb','el',omega,deltapass,deltastop);
// Second order sections anzeigen:
sos
gain

                            2                             2 
2
          1 - 1.6219938z + z            1 - 1.6396794z + z           1 - 
1.656616z + z
sos = --------------------------    ------------------------   
-------------------------
                                2                             2 
2
      0.9383702 - 1.5100165z + z     0.8466245 - 1.513936z + z 
0.9485511 - 1.663563z + z

gain = 0.8683583

die Brüche müssen noch in Zähler und Nenner durch z^2 dividiert werden, 
damit die übliche Schreibweise mit z^(-2) und z^(-1) herauskommt.
( hoffentlich passt das in eine Zeile, sonst wird es unleserlich).
Gast #1264814
Lesenswert?

vielen Dank für die Antworten!

hab mir jetzt mal das scilab installiert - naja da muss ich mich jetzt 
auch noch einarbeiten.....
die tutorial von matlab sollen ja ganz gut dazu passen....

auch die CICR-Filter werd ich mal austesten.

Ist die aktuelle Apnote von der Homepage der IIR ist 2 Ordnung ist da 
auch ein Fehler drin?
Hab mal zum aufwärmen den FIR umgeschrieben in GCC und Assembler ist 
auch eine spezielle Welt!

Grüße
 kaffeetas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren