Forum: Digitale Signalverarbeitung / DSP / Machine Learning Auslegung digitaler Filter - Abtastraten


von Björn W. (bjoernwe)


Lesenswert?

Hallo zusammen,

ich möchte ein digitales IIR Filter (Butterworth, 2. Ordnung) erstellen, 
um die fünfte Harmonische eines Motors zu filtern.
Dafür habe ich mir ein Modell mit MATLAB/Simulink erstellt, um die Sache 
mal durchzuspielen.

Dabei habe ich eine eher grundsätzliche Frage, die Abtastfrequenz 
angeht.

Angenommen, ich habe auf dem Controller eine Abtastfrequenz von fs=20kHz 
zur Verfügung. Mein Motor läuft mit eine Drehzahl, sagen wir 100 U/s, 
was dann im Modell einem dreiphasigen Strom mit einer Kreisfrequenz von 
w_rot=100*2*pi entspricht. Diesen Verlauf taste ich  mithilfe von 
Zero-Order_hold Gliedern  mit der Abtastfrequenz fs=20kHz ab, um das 
Signal zu digitalisieren.
Das Filter, ein Bandpass, habe ich in MATLAB ebenfalls mit der 
Abtastrate fs=20kHz designt.

Nun wurde mir gesagt, dass die Abtastraten für mein Filter und die 
Zero-Order-Hold Glieder gleich zu wählen sind, nämlich jeweils die volle 
mögliche Abtastrate fs. Allerdings kommt dabei bei mir nur Müll raus, 
der Filterausgang bleibt auf annähernd Null, was für eine Filterung der 
falschen Frequenz spricht. Der einzige Fall, in welchem mein Filter 
funktioniert, ist, wenn ich die Abtastrate der Zero-Order-Hold-Glieder 
um den Faktor 2*pi erhöhe, also auf fs=2*pi*fs.
(In Echt habe ich diese Frequenz zwar nicht zur Verfügung, aber im 
Modell kann man es ja erst mal machen.)

Kann mir jemand sagen, wieso es nicht mit der gleichen Abtastrate 
klappt,  sondern wieso es NUR mit 2*pi*fs klappt? Gibt es da einen 
festen Zusammenhang?

Ich vermute, ich habe irgendwo einen Denkfehler, wann muss ich bei der 
Berechnung die Kreisfrequenz mit *2*pi anwenden und wann die direkte 
Frequenz? Oder hätte ich die Motordrehzahl gleich mit 100 statt 100*2*pi 
angeben müssen??

Bin für jede Hilfe dankbar!

von Gerd (Gast)


Lesenswert?

Björn W. schrieb:
> Nun wurde mir gesagt, dass die Abtastraten für mein Filter und die
> Zero-Order-Hold Glieder gleich zu wählen sind,

Wer behauptet so etwas? Einzig müssen die Filterparameter und die 
Abtastrate zusammenpassen um die gewünschte Grenzfequenz zu erreichen.

von Björn W. (bjoernwe)


Lesenswert?

Gerd schrieb:

> Wer behauptet so etwas? Einzig müssen die Filterparameter und die
> Abtastrate zusammenpassen um die gewünschte Grenzfequenz zu erreichen.

Ja genau, dass die beiden gleich sind ergibt sich ja aus der Berechnung 
meiner Filterkoeffizienten, in die ich ja die Filterabtastzeit bereits 
einsetzen muss.

Dass ich die ZOH-Abtastrate auf die selbe setzen will hat den 
Hintergrund, dass ich ja eine Berenzte Abtastrate von meinem Controller 
vorgegeben habe und die ja möglichst ausnutzen will, um möglichst hohe 
Drehzahlen zu fahren.

von N. M. (mani)


Lesenswert?

Einfachste Vermutung: du hättest in Matlab Omega angeben müssen und hast 
f angegeben?

Wie hast du denn den Filter in Matlab berechnet?
Filter Toolbox?
Oder selbst ausgerechnet?

von Detlef _. (detlef_a)


Lesenswert?

Hi,

Matlab kann Butterworth Filter basteln:

 butter Butterworth digital and analog filter design.
    [B,A] = butter(N,Wn) designs an Nth order lowpass digital
    Butterworth filter and returns the filter coefficients in length
    N+1 vectors B (numerator) and A (denominator). The coefficients
    are listed in descending powers of z. The cutoff frequency
    Wn must be 0.0 < Wn < 1.0, with 1.0 corresponding to
    half the sample rate.

Die Grenzfrequenz ist, wie die Hilfe sagt, normiert auf 'half the sample 
rate', i.e. Nyquistfrequenz.
Also: Abtastrate 20ks/s, Nyquist also 10ks/s. Die Grundfrequenz des 
Motors ist 100/s, du willst die 5. Oberwellen rausschmeissen, also 
Grenzfrequenz z.B. 150Hz:

[B,A]=butter(2,150/10000);

Klappt wunderbar, hat mit zero-order und w statt f nichts zu tun.

cheers
Detlef

clear
t=0:1/20000:1;
rein=sin(2*pi*100*t)+sin(2*pi*500*t);
[fb,fa]=butter(2,150/10000);
raus=filter(fb,fa,rein);
return

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.