mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Digitale Filter selbst entwerfen


Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich bin ziemlich neu in der Filtertechnik.
Habe aber schon mal einen TP 1. Ordnung und TP2. Ordnung entworfen
und die entsprechende Rechenvorschrift in das µC-Programm eingebaut.

Ich möchte aber höher hinaus. Ich möchte einen HP 10.Ordnung und
einen Bandpass 2-8. Ordnung entwerfen.
Das Problem ist nur das man von der Übertragungsfunktion in der
normierten Form zur Differentialgleichung und dann zur
Differenzengleichung gelangen muss.
Leider ist hier der Rechenaufwand auf dem Papier sicher gewaltig.

Aus diesem Grund wäre ein Programm, welchen einem bei einer
Filterdimensionierung unter die Arme greift echt großartig.
Welche Programme gibt es für die Dimensionierung von digitalen
Filtern?

Danke für eure Antworten.

Tschüss
Martin

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu dem Thema gibt es enldos viel im www. Versuchs mal mit google:
'digital filter design'.

Gruß, Michael

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Matlab ist ein sehr gutes Programm zum Filterdesign.

Autor: MSE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... und ein sehr teures. Es gibt frei verfügbare Matlab-Clones:

Scilab und Octave.

Scilab enthält ausserdem eine Art Simulink-Clone.

Autor: michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Filter Free" ist auch eine Empfehlung

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Weg ist nicht zu schwer. Man will mit den digitalen Filtern die
analogen Filter schlagen und nimmt noch andere Aspekte meist hinzu, wie
Fensterung und Phasengangoptimierung.

Autor: TOMMu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch mit LabVIEW geht das mittlerweile. Nicht so teuer wie Matlab und es
gibt ganz oole Studi-Preise, aber ist halt auch nicht umsonst


http://www.ni.com/toolkits/df_design_toolkit.htm

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für eure Antworten.
Ich habe mir jetzt schon verschiedenste Filterprogramme angesehen.
z.B. auch Filter Free
Aber ich habe keines gefunden, welches Differenzengleichungen ausgibt.
Das mit dem Labview-Toolkit schaue ich mir mal an, wenn es eine
Shareware davon gibt.

Tschüss
Martin

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum brauchst du die DGL's?

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin im Moment nicht total fit auf dem Gebiet.
Die Filterkoeffizienten sind doch die Übertragungsfunktion.

G(z)= a*z + b*z^(-1).....

Jetzt brauchst du die Transformation z-> jOmega.

Da gab es eine einfache Rechnung. Irgend ein Satz aus der
Funktionstheorie. Das ist eine spezielle Reihe. Leider bin ich etwas
aus der Übung.

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soweit ich weiß ist überall die normierte Übertragungsfunktion angegeben
A(s). Man multipliziert diese mit x und y kreuzweise aus.
Danach bildet man die Differentialgleichungen und erst danach kann man
entsprechend die Differenzengleichungen oder auch die Z-Transformation
bilden.
TP1.0 Ordnung z.B:
y(n)=(k*x(n)+(T1/TA)*y(n-1))/(1+T1/TA)
Daraus ergibt sich im Programm:
y(n)=multiplikator1*x(n)+multiplikator2*y(n-1);

Beim TP2.0 Ordnung ist die Berechnung der Differenzengleichung schon um
einiges aufwändiger.

Aber einen TP z.B. 10 Ordnung zu berechnen ist für mich auf dem Papier
zu heftig.

Gruß, Martin

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab was vergessen: Bei A(s) ist s = jOmega

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hoffe du hast verstanden, dass du mit dem G(z) bereits die
Differenzengleichung gegeben hast. Ansonsten wirst du, was die Theorie
angeht, nochmal von vorne anfangen müssen.

Autor: martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja. Das weiß ich.
Aber z.B. beim TP1 Ordnung ist folgende Übertragungsfunktion gegeben:
A(jOm)=y(jOm)/x(jOm)=K/(1+(jOm/Om0))

Bei einem TP10 Ordnung wird das mit 5 Tiefpässen zweiter Ordnung
erledigt. Die einzelnen Parameter für die einzelnen Grenzfrequenzen
kann man dem Tieze-Schenk entnehmen.

Leider ist die Umwandlung von A(jOm) auf z.B. G(z) bei einem TP10
Ordnung auf dem Papier schwierig. Aus diesem Grunde meine Frage.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso :-)

Die einzige genaue Variante ist über Tabellen (also erst in TPs 2.
Ordnung zerlegen und dann transformieren).

Alternativ gibt es auch Näherungen wie die Bilineartransformation. In
Rechnern werden z.T. iterative Verfahren eingesetzt, die dann genauer
arbeiten. Am genauesten sind jedoch die Tabellen.

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du bist sehr versteift auf die Mathematik. Wichtige Hilfsmittel sind
das Pol-Null-Stellen Diagramm und das Bodediagramm. Aus dem
Bodediagramm sind die Einschwingzeiten nicht ermittelbar, doch der
Eingeschwungen Zustand lässt sich  gut ablesen. Die Hilfsmittel sind
Grafische Lösungen der Differentialgleichungen. Damit kann man sehr gut
arbeiten und Aussagen treffen.

Autor: Weinga-Unity (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Hab nur die Fragestellung gelesen und hier vielleicht was, was
weiterhilft (natürlich SCILAB).

http://scilabsoft.inria.fr/product/man/html/eng/co...

Für die Diskretisierung der Zustandsraumdarstellung  hab ich immer
Maxima verwendet, bei dem die Matrix Ad=e^(A*\Delta t) und der Vektor
Bd=(e^(A*\Delta t)-I)*A^(-1)*B

x(n+1)=Ad*x(n)+Bd*u(n)

mfg Weinga-Unity

Autor: dose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
das stimmt schon. Dieser Weg ist nur möglich wenn eine
Matixschreibweise überhaupt möglich ist. Die Zurücktransformierte muss
eine Lineare Differntialgleichung sein. Die Digitalen
Filterkonstruktion lassen auch ander Diff-gleichungen zu. Diese werden
sehr selten betrachtet, zumindest in den Büchern. Der Grund es lässt
sich nicht gut damit rechnen. Das sind die Typen bei denen man
numerische Lösungen anwendet.

Autor: Carsten Steiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich verwende SigLab. Als Output hab ich die Filterkoeffizienten in
Tabellenform, die ich über #include in ein Array einbinden kann.
ZUr Filterung muss ich dann nur noch diesen "Filter-Vektor" mit
meinem Eingangspuffer multiplizieren.
Hier sind ohne Problem Filter der Ordnung 200 oder mehr möglich. Du
hast hier mit DGLs nichts mehr zu tun.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Filterordnung würde ich nicht als Kriterium sehen. Beim
fenstergestützten FIR-Filter Enwurf hat Matlab auch mit N=100000 kein
Problem, nur macht die Implementierung keinen Sinn mehr.

Mit Differentialgleichungen hat man beim diskreten Filterentwurf
gemeinhin nichts zu tun.

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.