LabVIEWForum.de
Hochpass - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Hochpass (/Thread-Hochpass)

Seiten: 1 2


Hochpass - sneube - 14.09.2006 13:18

Hallo,
ich bin schon seit einiger Zeit auf der Suche nach einem Point to Point Hochpass unter LabVIEW. Kann mir da jemand weiterhelfen? Leider kann ich mit den VIs von National Instruments nichts anfangen.
Grüße
Stefan


Hochpass - sneube - 18.09.2006 11:48

Hallo,
wie sieht denn ein Hochpass aus, wenn man den Tiefpass so programmiert, zB.:

Wert = 0,90*akt_Wert + 0,1*alter_Wert (Zeitkonstante = 10)
?

Stefan


Hochpass - Lucki - 18.09.2006 22:11

Dein Beispiel ist nicht korrekt, zu einem einfachen TP 1. Ordnung mit der Zeitkonstante 10 passt die Gleichung
Wert = 0.9*alter_Wert + 0.1*akt_Wert.
oder
Y(n) = [(T-1)*Y(n-1) + X(n)]/T

Wegen des HP werde ich mal nachdenlen, gib mir ein wenig Zeit, jetzt ist es schon spät


Hochpass - sneube - 19.09.2006 06:51

Guten Morgen Lucki,
du hast natürlich Recht, die Gleichung stimmt nicht, da wäre die Zeitkonstante = 90.
Könnte man einen Hochpass so realisieren:

y[i] = (y[i-1] + x[i] - x[i-1] / (1 - (1/T))
?


Grüße
Stefan


Hochpass - Lucki - 19.09.2006 09:19

' schrieb:wie sieht denn ein Hochpass aus...
Hier also die versprochene Antwort. Ich gehe davon aus, daß Du nur einen Hochpass erster Ordnung haben willst.

Die Formel für die Punkt-zu-Punkt-Berechnung eines Filters erster Ordnung ist:

y(n) = -a1*y(n-1) + b0*x(n) + b1*x(n-1)

Die Koeffizienten kann man einfach mit LabVIEW berechnen. Ich nehme mal die Zeitkonstante 9.5 und nicht 10, damit ergeben sich runde Werte für die Koeffizienten.
Als Vi zur Koeffizientenberechnung nehme ich z.B das vi "Butterworth Koeffizienten". So habe ich es gemacht:
[attachment=3168]
Danach hätte man also für den TP die Gleichung
y(n) = 0.9y(n-1) + 0.05x(n) + 0.05x(n-1)
(warum für x zwei Gleider anstatt 0.1x(n) verwendet werden, kann ich Dir jetzt auch nicht sagen)

Für den HP hat man
y(n) = 0.9y(n-1) + 0.95x(n) - 0.95x(n-1)
Danach kansst Du Dein eigenes HP- oder TP-VI stricken, für den TP habe ich es mal gemacht und kann es Dir gern schicken. Allerdings ist es einfacher, von LV z.B das "IIR Filter PtPyPt.vi" zu verwenden, siehe oben.
Und natürlich kann man auch die Filterfunktionen von LV direkt verwenden, vielleicht gibt Dir obiges Bild einen kleinen Hinweis, was den Zusammenhang von Grenzfrequenz, Abtastfrequenz und Zeitkonstante betrifft.


Hochpass - sneube - 19.09.2006 09:51

Hallo Lucki,
danke für deine Hilfe.
Ich komme aber noch nicht so ganz zurecht.
Ich habe LV 7.1. Das VI "Butterworth Koeffizient" hat bei mir als Eingang noch die obere und untere Grenzfrequenz. Unter was fällt dann die Zeitkonstante? Ich bekomme dann Eingangs - und Ausgangskoeffizienten, das ist klar. Sind diese konstant, oder änderen die sich je nach dem Eingangsarray?
Kann ich den Hochpass nicht ohne Koeffizienten aufbauen, nur mit der Zeitkonstante? Denn beim TP hat man ja nur ein Verzögerungsglied, bei dem nur eine Zeitkonstante benötigt wird.
Grüße
Stefan


Hochpass - sneube - 19.09.2006 10:32

Hallo Lucki,
ich habe von dir schon mal einen Tiefpass bekommen und jetzt versucht, ihn als Hochpass zu betreiben. Leider funktioniert das nicht, es werden nur die Werte aufaddiert.
Gruss


Hochpass - Lucki - 19.09.2006 13:08

' schrieb:Hallo Lucki,
ich habe von dir schon mal einen Tiefpass bekommen und jetzt versucht, ihn als Hochpass zu betreiben. Leider funktioniert das nicht, es werden nur die Werte aufaddiert.
Gruss
Ich habe mir das jetzt nicht angesehen, was Du verändert hast, um aus dem Tiefpass einen HP zu zaubern. Wenn es nicht geht, dann liegt es vielleicht darin, daß die Formel für den HP, die Du weiter oben genannt hast, nicht korrekt ist und Du sie benutzt hast. Ich habe keine Lust, einen anderen HP zu erstellen, weil ich dafür lieber das IIR Filter verwende.
Wenn Du weiterhin mit der Zeitkonstante arbeiten willst, dann steht dem nichts im Wege. Allerdings solltest Du daran denken, daß, wenn die Samplezeit dt nlcht 1s ist , anstelle von T der Wert T/dt benutzt werden muß.
Das Bild, was ich weiter oben gepostet hatte, funktioniert so leider nicht, das liegt aber nicht an mir, sondern an LV. Die am Ausgang des einen Vi erzeugten Koeffizienten sind in ihrer Darstellungsweise nicht kompatibel mit den Eingangskoeffizienten, wie sie das andere VI verlangt.
Das PointTPoint-VI verlanget diese Koeffizienten:
[attachment=3316]
d.h der Vektor der Rückwärtskoeffizienten beginnt mit dem allgemeinem Verstärkungsfaktor a0, der eigentlich mit einem Rückwärtskoeffizienten gar nichts zu tun hat und getrost immer gleich 1 gesetzt werden kann. Das VI zur Bestimmung der Koeffizienten lieferte aber a0 nicht mit, der Vektor beginnt mit a1, deshalb die Inkompatibilität.

Die Koeffizienten für den Hochpass, so wie es das IIR-Filter verlangt, würden so aussehen:
a0 = 1
a1 = -(T-1)/T
b0 = (2T-1)/2T
b1 = -b1
Unten die Realisierung, diesmal, wie Du siehts, geprüft, so daß es wirklich funktioniert.


Hochpass - Lucki - 19.09.2006 19:18

Ich hätte vielleicht noch hinzufügen sollen, daß es ein fortgeschrittener Benutzter eher nicht mit dem IIR-Filter machen wird, sondern natürlich direkt mit einem Hochpass-VI. Was man nimmt, ob Bessel oder Buttterworth, ist gleich, denn bei 1. Ordnung macht das keinen Unterschied:

[attachment=3321]


Hochpass - sneube - 20.09.2006 07:10

Hallo Lucki,
Danke für deine Hilfe. Es hat mir sehr weitergeholfen und der Hochpass funktioniert auch gut. Mich würde es interessieren, wie ich die Koeffizienten für die Filter ermitteln kann. Ich kann ja in diesem Fall nicht, wie bei analogen FIltern, von einer oberen und unteren Grenzfrequenz sprechen. Wenn ich einen digitalen Filter aus einem Analogen ermittle, gibt es ja die bekannten Verfahren, mit DGL -> DiffGl -> z-Transf. Spielt in diesem Fall die FIR und IIR Struktur wegen der Stabiltät eine Rolle? LabVIEW arbeitet mit Vorwärts -und Rückwärtskoeffizienten. Sind damit die Verstärkungen bei Ein- und Ausgang gemeint?
Gruß