Entwurf und Realisierung analoger und digitaler Filter

Transcription

Entwurf und Realisierung analoger und digitaler Filter
FHD
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Entwurf und Realisierung analoger und digitaler Filter
Im Rahmen dieses Versuchs wollen wir uns mit der Dimensionierung von analogen und digitalen Filtern und mit der
Filterung und Auswertung von Messdaten befassen.
Filterung ist zum Beispiel ist folgenden Fällen notwendig:
Anti-Aliasing-Filter in abtastenden Analog-Digital-Konvertersystemen
Ausblenden von Frequenzbereichen, in denen Störsignale vorliegen
Glättung von Messdaten, z.B. zum Zwecke der Mittelung
Extrahierung von spektral getrennten Signalkomponenten
Mathematische Operationen wie Differenzierung und Integration
Korrektur eines Signals mit bekanntem Mangel (z.B. Verzerrung des Frequenzgangs)
Um für eine bestimmte Anwendung das ideale Filterverfahren auswählen und das Filter dimensionieren zu können ist
eine Kenntnis der Typen von analogen und digitalen Filtern mit ihren besonderen Eigenschaften notwendig.
Außerdem ist zur Dimensionierung eines Filters oft eine beachtliche Menge an Mathematik erforderlich.
Glücklicherweise kann die Berechnung eines Filters mit Hilfe geeigneter Software sehr vereinfacht werden.
Rechenprogramme wie MATLAB bietet eine Menge von Hilfsprogrammen für diese Zwecke an.
Im Rahmen dieses Versuchs wollen diese Programme nutzen und für ein paar ausgewählte Beispiele Filter auswählen,
dimensionieren und auf einem digitalen Signalprozessor (DSP) testen.
Vorbereitung:
Folgende Eigenschaften der Filter dienen ihrer Charakterisierung:
Im Frequenzbereich:
Amplitudengang
Phasengang
Gruppenlaufzeit
Im Zeitbereich:
Sprungantwort
Impulsantwort bzw. Gewichtsfunktion
Signalverzögerung ( bzw. Gruppenlaufzeit)
Machen sie sich z.B. anhand des Standardwerks „Tietze / Schenk: Halbleiter-Schaltungstechnik“ und der
Dokumentation zu MATLAB die prinzipielle Funktionsweise analoger und digitaler Filter klar
und betrachten Sie sich die Möglichkeiten der praktischen Realisierung.
Die Aufgabe, ein Filter zu entwerfen zerfällt in folgende Teilaufgaben:
Filtertyp auswählen
Die notwendige Filterordnung auswählen bzw. berechnen
Das Filter dimensionieren
Die resultierenden Eigenschaften des Filters dokumentieren
FHD
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Analoge und digitale Filter
Analoge Filter:
Analoge Filter werden in der Elektronik oft verwendet und lassen sich als Netzwerke von aktiven
und passiven Bauelementen realisieren. In der Meßtechnik verwendet man z.B. sehr oft
Schaltungen mit gegengekoppelten Operationsverstärkern.
Lineare analoge Filter lassen sich durch ein Polynom im Frequenzbereich (→ LaplaceTransformation), ihre Übertragungsfunktion („Laplace transform transfer function“), beschreiben.
(Die MATLAB Dokumentation verwendet den Buchstaben „s“ anstatt „p“).
m0 + m1 s + m2 s 2 + m3 s 3 +K
H ( s) =
n0 + n1 s + n2 s 2 + n3 s 3 +K
In MATLAB wird ein solches Polynom über zwei Vektoren beschrieben
(beachten Sie die invertierte Reihenfolge der Koeffizienten !):
Zähler: b = [... m2 m1 m0 ]
Nenner: a = [... n2 n1 n0 ]
Diese Form kann man auf verschiedene Weise umrechnen und erhält dann durch z.B.
Partialbruchzerlegung eine Summendarstellung und durch Pol/Nullstellen-Zerlegung eine
Produktdarstellung.
Die Umrechnungen sind oft mühsam und fehlerträchtig. Glücklicherweise beherrschen Programme
wie MATLAB diese Methoden besser als wir und machen die Mathematik zum Kinderspiel.
Allerdings taugt jedes Werkzeug höchstens so viel wie sein Benutzer und wir müssen uns im klaren
sein, wie die Methoden arbeiten, die wir benutzen.
Digitale Filter:
Digitale Filter sind mathematische Algorithmen, die eine zeitdiskrete Folge von Eingangswerten
x(i) aufnehmen und daraus eine Folge von Ausgabewerten y(i) berechnen. Wie im analogen Fall
gibt es unzählige Arten, diese Filter zu implementieren.
Wir wollen uns hier nur mit der Auslegung linearer zeitinvarianter digitaler Filter mit befassen. Im
Gegensatz zu den analogen Filtern, die sich über Differentialgleichung beschreiben lassen, wird ein
digitales Filter durch eine Differenzengleichung beschrieben, die die Folge der Eingangswerte x(1)
... x(n) mit der Folge der Ausgangswerte y(1) ... y(...) mathematisch verbindet:
a1 y ( k ) + a 2 y ( k − 1)+...+ a n y ( k − n ) = b0 x ( k ) + b1 x ( k − 1)+... bm x ( k − m)
Für eine beliebige Folge von Werten x(1) ... x(n) führt man nun die z-Transformierte ein:
∞
x ( z ) = x ( 0 ) + x (1) ⋅ z −1 + x ( 2 ) ⋅ z −2 +... = ∑ x ( k ) ⋅ z − k
k =0
Zum Glück kann man für praktisch alle wichtigen Funktionen aus der unendlichen Summe eine
geschlossene Darstellung der z-Transformierten finden, so erhält man z.B.:
•
für den Einheitsimpuls x(n)={1 0 0 0 0 ....}
x( z ) = 1
•
für den Einheitssprung x(n)={1 1 1 1 1 1 1 ...}
FHD
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
x( z ) =
z
z −1
•
für eine mit dem Exponenten a exponentiell auf- oder abklingende Folge x(n)={1 a a² a³...}:
z
x( z ) =
z−a
•
für eine um einen Takt verzögerten Einheitsimpuls (Impulsantwort einer Totzeit Ta ):
x ( z ) = z −1
In analogen Fall ist die Übertragungsfunktion die Laplace-Transformierte der Impulsantwort bzw.
Gewichtsfunktion. Genauso ist im digitalen Fall die Übertragungsfunktion die z-Transformierte der
Impulsantwort.
Mit Hilfe der z-Transformation kann man die Differenzengleichung eines digitalen Filters über
seine
z-transformierte Übertragungsfunktion („transfer function“), das Polynom H(z) beschreiben.
Dieses Polynom darf keinesfalls mit seinem analogen Kollegen H(s) verwechselt werden 1 !
H(z) =
b1 + b2 z −1 + b3 z −2 + b4 z −3 +K
a1 + a 2 z −1 + a3 z −2 + a 4 z −3 +K
Man kann aus der z-transformierten Übertragungsfunktion direkt den Frequenzgang berechnen, es
gilt nämlich:
H (ω ) = H ( z )
z = exp( jω )
Im Signalflußplan sieht eine Implementierung, hier ein Filter dritter Ordnung folgendermaßen aus :
z-1
b1
b2
-a4
-a3
-1
z
z-1
b3
z-1
b4
-a2
-1
z
( a1 = 1 )
-1
z
Die Multiplikation mit z-1 bedeutet einfach eine Verzögerung um einen Takt.
Das Ausgangssignal wird also als eine mit den Koeffizienten ai und bi bewertete Summe von
aktuellen und zeitverzögerten Eingangs- und Ausgangswerten berechnet.
Man kann nach rekursiven und nicht rekursiven Filtern unterscheiden:
Sind alle „a-Koeffizienten“ gleich null, so handelt es sich um ein „moving Average“ MA-Filter, um
eine Verallgemeinerung des gleitenden Durchschnitts. Diese Filter haben einige besondere
Eigenschaften, insbesondere haben sie ein zeitlich limitiertes „Gedächtnis“ und damit eine endliche
Einschwingzeit auf einen stationären Endwert. Man nennt sie auch FIR-Filter (Finite Impulse
Response). Wenn die Koeffizienten symmetrisch bzw. antisymmetrisch sind 2 , dann haben diese
1
Vergleichen Sie mal, wie die Sprungantwort für ein System mit Zähler: b=1 und Nenner: a=[1 1]
im analogen und im digitalen Fall aussieht und überlegen Sie für beide, wie man sie realisiert !
2 symmetrisch bedeutet a(1)=a(n), a(2)=a(n-1) ... antisymmetrisch bedeutet: a(1)= - a(n), ...
FHD
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Filter haben eine von der Frequenz unabhängige Gruppenlaufzeit, das ist bei bestimmten
Anwendungen von großem Vorteil.
Analog dazu gibt es Filter, bei denen nur der untere rekursive Zweig verwendet wird, sie heißen
autoregressive Filter (AR-Filter). Diese Filter haben im allgemeinen (aber nicht immer) eine
zeitlich unbegrenzte Impulsantwort und heißen dann IIR-Filter (Infinite Impulse Response).
Vorteil: Meistens kleinere Filterordnung notwendig als beim MA-Filter, kleinere
Signalverzögerung.
Nachteil: Verzerrung der Signalform durch frequenzabhängige Gruppenlaufzeit.
Im allgemeinen Fall sind sowohl die a- als auch die b- Koeffizienten ungleich null, dann handelt es
sich um ein autoregressives „ARMA Filter“.
Zusammenhang zwischen Laplace- und z-Transformation:
Die z-Transformation dient zur Beschreibung zeitdiskreter Signalwerte.
Aus einer zeitkontinuierlichen Signalfunktion x(t) wird durch Abtastung, das heißt durch
Multiplikation mit einer Folge von Deltaimpulsen, eine zeitdiskrete Funktion x*(t) gewonnen.
Die Abtastung zu den Zeitpunkten 0, Ta, 2 Ta ... ergibt:
∞
x * ( t ) = ∑ x ( kT a )δ ( t − kTa )
k =0
Bei diesem Prozeß muß das Shannonsche Abtasttheorem eingehalten werden.
Das Signal x(t) muß demnach eine Bandbreite haben, die nicht größer sein darf als B=1/(2Ta).
Die Laplace-Transformierte des Deltaimpulses ist bekanntlich 1, für die zeitverzögerten
Deltaimpulse erhält man:
L(δ ( t − kTa )) = e − nsTa
Die Laplace-Transformierte dieses abgetasteten Signals ist daher gegeben durch folgende Summe
von Deltaimpulsen:
∞
L( x * ( t )) = x * ( s) = ∑ x ( nTa ) e − nsTa
n=0
Führt man nun die Abkürzung z := exp(sTa) ein, so erhält man die z-Transformierte von x*,
nämlich x(z):
∞
x ( z ) = ∑ x ( nTa ) z − n
n=0
Genau wie bei der Laplace-Transformation gewinnt man die z-Transformierten im allgemeinen
durch Nachschlagen in einer Korrespondenztabelle.
Das Signal x*(t) ist nach wie vor ein analoges, allerdings zeitdiskretes Signal. Man kann es aber
ohne Verlust an Information durch einen Analog-Digital-Converter in eine Folge von zeit- und
amplitudendiskreten Zahlen umwandeln, die dann in geeigneter Weise digital weiter verarbeitet
werden können.
Mit Hilfe eines Digital-Aanalog-Converters und eines Rekonstruktionsfilters kann man das Signal
bei Bedarf jederzeit wieder in einen Analogwert zurückverwandeln.
FHD
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Beispiel: Dimensionierung eines PT1:
Am Beispiel des Tiefpasses erster Ordnung (PT1) kann man den Übergang von der analogen in die
digitale Welt gut nachvollziehen 3 :
Die Übertragungsfunktion des PT1 ist:
1
G( s) =
1 + sT1
Die Gewichtsfunktion (Impulsantwort bei Anregung mit einem Delta-Impuls) ist:
g( t ) = e
−
t
T1
Zu den Abtastzeitpunkten t=nTa erhält man:
g ( nTa ) = e
−
nTa
T1
Nun geht’s ans z-Transformieren und Umformen:
∞
g( z ) = ∑ e
−n
Ta
T1
⋅ e − nsTa
n=0
∞
= ∑e
⎛T
⎞
− n ⎜ a + sTa ⎟
⎝ T1
⎠
n=0
⎛ ⎛⎜ Ta + sTa ⎞⎟ ⎞
= ∑ ⎜ e ⎝ T1 ⎠ ⎟
⎜
⎟
n=0 ⎝
⎠
∞
e
=
e
⎛ Ta
⎞
⎜ + sTa ⎟
⎝ T1
⎠
⎛ Ta
⎞
⎜ + sTa ⎟
⎝ T1
⎠
−1
1
=
1 − z −1 ⋅ e
a1
= −e
−n
−
T
− a
T1
=
1
1 + a1 z −1
Ta
T1
Also kann man einen Tiefpaß erster Ordnung digital realisieren, indem man ein rekursives Filter mit
der oben berechnenten Übertragungsfunktion realisiert und den Koeffizienten a1 wie berechnet
einstellt.
Dieses Digitalfilter hat dann exakt die gleiche Sprungantwort wie das analogen Pendant.
Allerdings ist sein Frequenzgang periodisch und wiederholt sich mit der Abtastfrequenz Ta.
Somit kann der Frequenzgang niemals gleich zum im analogen Fall sein !
3Dieser
Weg entspricht der Methode der Impulsinvarianz (MATLAB: impinvar(...)).
FHD
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
Signal- und MesswertVerarbeitung
Versuch Filterung
FB Eui
Aufgaben:
1 Dimensionierung eines Anti-Aliasing-Filters
Dimensionieren Sie ein analoges Anti-Aliasing-Filter mit folgenden Vorgaben:
1.Amplitudenfehler bei 1 kHz unter 1 %
2.Dämpfung bei 100 kHz mindestens 60 dB
3.Geringes Überschwingen im Zeitbereich
4.Begründen Sie Ihre Wahl und dokumentieren Sie Ihr Ergebnis
(Filterordnung und -typ, Parameter, Frequenzgang, Sprungantwort).
Realisierung Digitaler Filter
z-1
b1
-a4
b2
z-1
-a3
-1
z
b3
z-1
b4
-a2
-1
z
( a1 = 1 )
z-1
Blockschaltbild eines digitalen („ARMA-„) Filters 3. Ordnung (Siehe Ahang)
2 Realisierung eines digitalen Filters 1. Ordnung
In diesem Versuchsteil wollen wir ein rekursives Digitalfilter 1. Ordnung, also ein digitales PT1 Glied, mit einem
Signalprozessor realisieren.
Zur Realisierung steht Ihnen ein digitaler Signalprozessor (DSP) vom Typ ADWIN Gold zur Verfügung.
Der DSP kann in einem Basic-Dialekt (ADBASIC) programmiert werden.
Zur Vereinfachung erhalten Sie ein Rahmenprogramm (s.u.) zum Einlesen und Ausgeben der Messwerte.
Die Grenzfrequnez des Filters soll über den Parameter fpar_1 (in Hz) einstellbar sein !
Entwerfen Sie zunächst den Signalflussplan auf dem Papier und realisieren sie anschließend das Programm in
ADBASIC.
Demonstrieren Sie bei zwei verschiedenen Grenzfrequenzen das Verhalten Ihres Filters im Zeit- und Frequenzbereich:
Bestimmen sie die -3dB Grenzfrequenz und die PT1-Zeitkonstante Ihres Filters und vergleichen Sie diese.
Welche Phasenverschiebung erhalten Sie bei der Grenzfrequenz ?
3 Realisierung digitaler Filter 2. Ordnung
Schreiben Sie ein Programm zu Implementierung digitaler ARMA Filter zweiter Ordnung.
Die Parameter b1, b2, b3, a2, und a3 sollen über die von ADBASIC vorgegebenen
Float-Parameter fpar_1 bis fpar_3 realisiert werden, damit man sie zur Laufzeit ändern kann.
Testen Sie Ihr Programm anhand zweier digitaler Tiefpassfilter, z.B. Butterworthfilter und elliptisches Filter.
Dokumentieren Sie den Frequenzgang Ihrer Filter in der Theorie (Bode-Diagramm) und tragen Sie anhand einiger
Messpunkte den gemessenen Frequenzgang mit ein.
Demonstrieren Sie, wie man bei einem DC -Signal mit überlagerter Wechselspannung den Wechselspannungsanteil
herausfiltern kann.
Dokunentieren sie die Sprungantwort ihres Filters. Wie groß ist die Signal-Laufzeit bei Sprunganregung ?
Vergleichen sie diese mit der Gruppenlaufzeit des Filters.
FHD
FB Eui
Signal- und MesswertVerarbeitung
Versuch Filterung
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
4 Bildung von Signalkennwerten mit dem DSP
Schreiben Sie ein Programm, das auf dem Parameterfenstern (fpar_1...)
folgende Kennwerte des Eingangssignals darstellt:
1) Gleichspannungsanteil (U DC)
2) Effektivwert (U RMS)
3) Effektivwert des Wechselspannungsanteils (U RMS AC)
4) Positiver Spitzenwert (U Peak)
Die Mittelwertbildung ist über einen Digitalfilter 2. Ordnung mit einer Einschwingzeit von 1s durchzuführen.
Entwerfen Sie zunächst den Signalflussplan auf dem Papier und realisieren sie anschliessend das Programm in
ADBASIC.
Demonstrieren Sie die Funktion Ihrer Kennwertbildner anhand folgender Signale:
Sinus, Rechteck, Sinus mit Gleichspannungsanteil.
FHD
FB Eui
Signal- und MesswertVerarbeitung
Versuch Filterung
Dr. K. Schaefer
Dipl Ing. H. Weinerth
WS 04/05
' Rahmenprogramm zur Filterung in ADBASIC
DIM rohwert AS INTEGER
DIM input as float
DIM output as float
#DEFINE FA 1000 ‘Abtastfrequenz in Hz
INIT: ‘ eimalig beim programmstart
GLOBALDELAY = 40000000 / FA
EVENT: ‘ wird zu jedem Abtastzeitpunkt einmal ausgeführt
rohwert = ADC(1)
input = (rohwert - 32768) / 3276.8
output = input
fpar_9 = output ‘anzeige der Ausgangsspannung im window fpar_9
rohwert = output * 3276.8 + 32768
DAC(1,rohwert)
Erklärungen zum ADBASIC - Programm:
Die DIM Statements dienen zur Definition der notwendigen Variablen.
In ADBASIC sind die Variablen par_1 bis par_99 und fpar_1 bis fpar_20 schon vordefiniert.
Sie können zur Laufzeit über die Benutzeroberfläche beobachtet und geändert werden.
INIT: Die Befehle hinter diesem Label werden zum Programmstart einmal ausgeführt.
EVENT: Dieses Programmstück wird vom DSP periodisch mit der Abtastfrequenz aufgerufen.
Eine Schleife zur Messwerterfassung und -Ausgabe muß also NICHT programmiert werden.
Die Erfassung und Ausgabe der Werte erfolgt im Integer Format mit den Befehlen ADC bzw. DAC.
Die Umrechnung rohwert -> input und output -> rohwert liefert eine Skalierung derart,
daß Ihr Programm mit der Einheit „Volt“ rechnet.
An der stelle „output = input“ können Sie nun Ihre Filter-Routine einfügen.