digitale Filter -> Kochrezept ?

Hi Leute, in meinen µC-Entwicklungen setze ich oft einfache IIR-Filter zur Filterung von Analogwerten ein. Die haben dann immer 2 Koeffizienten, z.B. 0,99 und 0,01.

Soweit ich das verstanden habe, entspricht dieses Filter einem analogen Filter erster Ordung.

Manchmal wünsche ich mir eine steilere Filterkennlinie, möchte jedoch nicht unnötig tief in die Theorie einsteigen (aus Zeitgründen). Gibt es irgendwo Tabellen mit Koeffizientensätzen und graphisch daneben den Frequenz- und Phasengang?

Einfache Hoch- und Tiefpässe würden im Prinzip reichen. Bandpass kann man sich da ja draus bauen, auch wenns dann nicht gerade effizient ist.

Grüße Michael

Reply to
Michael Rübig
Loading thread data ...

Die müssten bei Festkomma aus 1pol und 2pol Teilfiltern zusammengesetzt werden. Einzelne 2pol Teilfilter können aber bei ungünstiger Wortlängen /Koeffizienten- kombination bereits selbst instabil werden. Bei der Anordnung in der üblicheren Serienschaltung spielt dann auch die Reihenfolge noch eine Rolle. Parallelschaltung ist auch nicht viel einfacher. Ein Tabellenwerk müsste also nichtnur Koeffizienten sondern auch Wortlänge, Art der Skalierung usw. mitbeinhalten. Bessere DSP-Bücher haben meist 1-2 Seiten zu dem Problem, aber keine sichere, simple Lösung. FIR kann oft einfachere Lösung sein.

Wenn man die analoge Realisierung einer Schaltung im Hinterkopf hat: nicht direkt digital nachbilden wollen. Korrelatoren, FFT, adaptive Filter usw. die analog nicht machbar sind, sind digital oft besserer Ansatz als Filter.

MfG JRD

Reply to
Rafael Deliano

Hallo,

Ahja!?

Dass die Wortlänge problematisch sein kann, war mir noch gar nicht bewusst.

Von mir aus auch FIR, gibts da Tabellen? Da brauche ich halt mehr Koeffizienten und mehr Rechenleistung.

Meist gehts wirklich nur um die Tiefpassfilterung eines Analog-Signals, um z.B. das Rauchen wegzubekommen. Ein FIR-Mittelwertfilter ist da zwar sehr gut, braucht aber mehr Speicher und mehr Rechenleistung als ein IIR. Oft reicht ein IIR, wenns manchmal doch nur etwas steilere wäre. Ich will da jetzt keine Filter 20. Ordnung machen, 2. oder 3. Ordnung würde reichen. Ist das auch schon so kritisch?

Bei Matlab habe ich mal sein Filter-Toolkit gesehen. Leider habe ich selbst kein Matlab.

Gibts sonst noch (vielleicht freie) Software zur Koeffizientenerstellung?

Grüße Michael

Reply to
Michael Rübig

Es gibt eine ganze Menge Tutorials und Filterberechnungsprogramme im Internet, die auch Frequenz- und Phasengang anzeigen. Hier sind ein paar Links (und es gibt noch viel mehr...):

formatting link
formatting link
formatting link
formatting link
formatting link

Wie gesagt, das ist nur eine kleine Auswahl und die Filter funktionieren interessanterweise auch dann, wenn man die Theorie nicht ganz verstanden hat ;-)

Reply to
Michael Krämer

Dafuer gibt es diverse Programme, auch Freeware. Ein einfaches ist DSP Filter Design von Gunther May DL3ABQ.

Christian

Reply to
Christian Keck

Wenn es sich um Spikes handelt gelten Median-Filter als günstiger. Die sind nichtlinear, seit den 80er Jahren in der akademiologischen Literatur breit behandelt. Hab ich aber auch noch nie verbaut. Für "gaussches" Rauschen sind normale lineare Filter angemessen.

Vgl. http://www.embeddedFORTHde Heft 10 S. 23 Speicher ja, Rechenleistung ( vgl Bild 2 dort ) eher weniger. Controller haben ja im allgemeinen keinen MAC, geringe Wortbreite, aber dafür RAM.

Sehr steilflankige FIRs haben zuviel Koeffizienten. Und eine Tschebyscheff-Approximation für die Koeffizienten wäre nur sinnvoll wenn man sie auch genau genug darstellen kann. Beides auf Controllern nicht der Fall. http://www.embeddedFORTHde Heft 7 S. 12 hat die simple Variante aus Frequenzgang Impulsantwort z.B. per FFT zu machen und dann Fensterfunktion anzulegen dargestellt. Das Fenster-Verfahren kommt mit Verfeinerungen oft sehr nahe an optimale Varianten ( d.h. die die akademiologische Literatur füllen ) heran. Was es auch gibt sind FIRs mit relativ vielen Koeffizienten die aber so ausgelegt sind daß man die Multiplikationen mit Shift&Add ausführen kann. Hilft aber nur wenn man ein Optimierungsprogramm schreibt / "im www findet" das diese Koeffizienten durch Suchverfahren bestimmt. Verliert auch an Bedeutung weil grössere Controller bereits MACs haben.

Studentenversion gibts oft bei ebay. Mich k*tzt allerdings das Vertriebsmodell nachhaltig an: no-cost Studenten reinwürgen, versuchen so "Industriestandard" zu werden ( vgl. mal Texte in Stellenanzeigen von Tageszeitungen ), dann an Firmen die Normal- version völlig überteuert verkaufen wollen. Resultat wie üblich, daß bei den Firmen auch nur Studenteversion verwendet werden wird ( Mittelständler gibt für CAD-Software kein Geld aus, selbst Versionen von Eagle die man "im www gefunden hat" gelten als standesgemäß ) und der Hersteller wegen "Raubkopien" jammert. Mathcad ist zwar nicht ganz so geeignet aber bei ebay gebraucht billig. Allerdings soll Version 11 (?) Dongleware sein. Ich habe Version 7 Standard.

MfG JRD

Reply to
Rafael Deliano

Hallo Michael,

Michael Rübig wrote:

so wie man das bei aktiven analogen Filtern ja auch macht.

Zu IIR-Filtern kann man eine Menge sagen. Begrenzte Wortlänge ruft numerisches Rauschen und Instabilität hervor. Instabilität kann man dadurch verhindern, daß man die Addierer gegen Überlauf sichert durch Sättigungsverhalten und die Koeffizientenmultiplizierer am Ausgang in der Wortlänge vom Betrag abschneidet und nicht rundet.

Die nötige Wortlänge hängt ganz von der Spezifikation ab, 8 Bit sind meist extrem wenig, es können schnell 32 Bit erforderlich werden.

FIR ist eigentlich nichts für uC, sondern für DSP, jedenfalls ziemlicher Overkill. Es gibt das Programm von Parks-McLellan, das funktioniert auch heute noch, ist auch in Matlab drin. Denke mal, es gibt sicher freie Software, ich habe selbst damit programmiert und experimentiert und es eingesetzt.

Da würde ich erstmal an Butterworth denken, sicher ist das in Matlab drin. Aus den Tabellen für analoge Filter (Tietze/Schenk oder so) kannst Du Dir die Z-Koeffizienten aber leicht mit der bilinearen Transformation selbst errechnen. Bei Bedarf könnte ich versuchen zu beschreiben, wie man das macht.

Für hohe Anforderungen setzen wir spezielle Filterstrukturen und Optimierungssoftware ein, die ist aber nicht frei. Wenn Du maximal steile IIR-Filter haben möchtest, dann sind Cauer bzw. elliptische Filter nötig, aber die dürften vom Aufwand etwas höher sein wegen der Nullstellen und vermutlich hohen Polgüten, auch digital.

Ich glaube schon, hab jetzt aber gerade nichts parat.

mfg. Winfried

Reply to
Winfried Salomon

Vielen Dank für die vielfältigen Infos, ich werde mir die ganzen Links mal anschauen und sehen, was sich da gebrauchen lässt.

Michael

Reply to
Michael Rübig
[Wegen Matlab]

Matlab ade, Gnu Octave Hallo:

formatting link

Reply to
Michael Roth

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.