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.