Billige Lautsprecher klingen normalerweise auch billig, Stichwort Brüllwürfel. Konstruktionsbedingt ist ihr Frequenzgang von zahlreichen Resonanzen geprägt - tragbare Transistorradios vermitteln akustisch einen Eindruck vom Problem. Die Konstrukteure von Lautsprecherboxen können aber Maßnahmen treffen, um trotz finanziell günstiger, aber akustisch ungünstiger Lautsprecher einen vergleichsweise gleichmäßigen Frequenzgang zu erreichen. Dazu fahren sie gewöhnlich Messtechnik für die elektroakustischen Größen auf, die zwischen 10000 und 50000 Euro kostet, bekannte Hersteller solcher Maschinen sind Wayne Kerr und Agilent.
Darum entstand die Idee, die Soundkarte eines PC für die Messung der Signale wie auch für die Erzeugung der Testsequenzen zu nutzen. Die Auflösung (Quantisierung) und die Abtastfrequenz gängiger Karten sind für diesen Zweck nämlich absolut ausreichend. Das System sollte Übertragungsfunktion, Impedanz und Klirrfaktor elektronischer und elektroakustischer Komponenten messen - ganz wie seine teuren Vorbilder. Das Projekt gelang, der Artikel stellt es vor.
Am Anfang stand eine Praktikumsarbeit, die untersuchen sollte, ob sich die Soundkarte eines PC mit etwas zusätzlicher Hardware dazu eignet, Impedanzen im Audiofrequenzbereich zu messen. Auf diese Weise würden sich beispielsweise die Resonanzfrequenz von Lautsprechern bestimmen lassen.
Das System besitzt inzwischen eine grafische Benutzerschnittstelle und wird in der Entwicklung und Optimierung von Audiosprechstellen eingesetzt. Zum Ausmessen eines Lautsprecherfrequenzgangs bedarf es außerdem eines Elektret-Kondensatormikrofons mit passendem Mikrofonvorverstärker, die Kosten dafür liegen unter 100 Euro.
Ganz ohne Theorie geht's wirklich nicht
Die einfachste Methode zur Bestimmung einer frequenzabhängigen Übertragungsfunktion besteht darin, ein Sinussignal an den Eingang des Systems zu legen und die Amplitude des Ausgangssignals zu messen. Das Verhältnis zwischen Eingangs- und Ausgangsamplitude ergibt den Übertragungsfaktor des Systems für die angelegte Frequenz. Wer auf diese Weise den Frequenzgang eines Lautsprechers präzise ermitteln will, muss die Messung für mehrere hundert Frequenzen absolvieren. Das dauert jedoch gern einige Minuten, selbst bei einem automatischen Messsystem.
Mit ein wenig nachrichtentechnischem Know-how lässt sich das Ganze um ein Vielfaches beschleunigen: Statt das Übertragungsverhalten eines Systems Frequenz für Frequenz nacheinander zu messen, kann man den Frequenzgang für alle Frequenzen gleichzeitig messen. Dazu legt der Tester an den Eingang das Systems ein breitbandiges Frequenzgemisch an, dessen Spektrum er kennt.
Nachrichtentechnisch zerlegen
Am Ausgang misst er dann die Antwort des Systems und errechnet daraus den Frequenzgang. Um die Amplitude der einzelnen Frequenzen wieder aus dem Frequenzgemisch herauszulesen, zerlegt eine diskrete Fouriertransformation (DFT) das gemessene Signal in seine Frequenzanteile, was für einen PC keine wirkliche Herausforderung ist. Die diskrete Fouriertransformation ist eine Sonderform der allgemeinen Fouriertransformation und gilt für zeitdiskret abgetastete periodische Signale. Sie lässt sich in C durch zwei verschachtelte For-Schleifen realisieren (Listing 1).
01 # include <math.h>
02
03 int n, // Anzahl der Samples
04 i, k;
05 double freq, real, imag,
06 samples[MAX_N],
07 magnitude[MAX_N], phase[MAX_N];
08
09 ...
10
11 for (i=0; i<(n-1)/2; i++)
12 {
13 real = 0.0;
14 imag = 0.0;
15 for (k=0; k<n; k++)
16 {
17 real += samples[k]*cos(2*M_PI*i*k/n);
18 imag -= samples[k]*sin(2*M_PI*i*k/n);
19 }
20 magnitude[i] = 2.0/n * sqrt(real*real+imag*imag);
21 phase[i] = atan2(imag, real);
22 }
|
Das Verhältnis zwischen dem Ausgangsspektrum Y(f) und dem Spektrum des Eingangssignals X(f) entspricht der Übertragungsfunktion H(f) des Systems (siehe Abbildung 1). Die Berechnung des Quotienten zwischen Ausgangs- und Eingangsspektrum muss natürlich berücksichtigen, dass beide Spektren mathematisch komplex sind, also Real- und Imaginärteil beziehungsweise Betrag und Phase enthalten.
Abbildung 1: Berechnung des Frequenzgangs H(f) eines Systems mit Hilfe der diskreten Fouriertransformation (DFT).