• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


RTA
Gut, ich denke ich weiß jetzt wo ich hin will. Schwierig sind offenbar Phasenmessungen, da bei einer Totzeit im System (LS->Luft->Messmikro) Die Phase so früh fällt, das man nur noch Sprünge sieht.

Die ursprüngliche Idee des Programms war es ja ein kontinuierliches rosa Rauschen auszugeben und kontinuierlich die Übertragungsfunktion zu berechnen. Das ist ganz nett, um zusehen, was passiert, wenn man gerade am Equalizer dreht. Die Funktion will ich auf jeden Fall beibehalten.
Der Aufnahme-Ringpuffer war dabei deutlich länger als die zu berechnenden FFTs. Um die Laufzeit auszugleichen habe ich einfach y(t) von einer um die entsprechende Anzahl Samples weiter "hinten" liegende Position aus dem Puffer geholt. Das musste ich aber manuell einstellen und war unschön.


[Bild: 1_1370702764_rta.jpg]

hier nochmal der Aufbau. In der Aufnahme steckt dann z.b. u(t) linbks und y(t) rechts. Der Prüfling oder DUT ist hier eine Mischpult->AMP->LS->Mikro->Preamp Anordnung.

Ich will präzise Lautsprecher vermessen können.
Das sieht dann nach meiner Vorstellung so aus:
-Ich starte die Aufnahme (z.b. 2^16+n Samples)
-Ich starte die Ausgabe eines Sinussweeps (z.b. 2^16 Samples)
-Die Ausgabe endet
-Die Aufnahme endet

Wie sehen nun die beiden gesampelten Signale aus?
Am Anfang ist immer Ruhe, da zw. den ersten beiden Punkten etwas (undefinierte) Zeit vergeht. Nach dieser undefinierten Zeit habe ich Werte für u(t). Werte für y(t) beginnen dann erst um die der Laufzeit entsprechenden Anzahl an Samples später.
Ziel ist es nun die beiden Signale so zu bearbeiten, dass ich nur noch 2 2^16-lange Arrays habe, bei denen es sofort bei 0 losgeht.

Dazu berechne ich von beiden Aufnahmekanälen zunächst die FFT, danach U*(f) * Y(f) und erhalte dadurch das Kreuzleistungsspektrum. Davon die iFFT ist die Kreuzkorrelation der beiden Signale. Die muss (laut Theorie) beim Laufzeitunterschied einen Peak haben.

Dann kann ich bei y(t) erst einmal vorne so viele Samples "abschneiden" wie die Laufzeit lang war.

Jetzt will ich u(t) und y(t) auf Länge 2^16 bringen. Dazu berechne ich die KKF aus u(t) und des ursprünglichen (berechneten) Sweeps.
Ich erhalte wieder die Laufzeit, schneide die entsprechende Anzahl an Samples bei u(t) und y(t) vorne ab. Danach beschneide ich die Länge auf 2^16.

Diese beiden Arrays will ich dann als "Rohdaten" einer Messung auch exportieren können.

Danach geht es "klassisch" weiter. Amplitudengang, Phasengang (wenn die Phase weiter wie -180° fällt gibt es immer noch Sprünge, diese will ich auch noch sauber verarbeiten), Zeit/Frequenz-Intensitäts-Plot per STFT.

[Bild: 825_1376553149_spect.png]
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Zitat:Original geschrieben von woody
Schwierig sind offenbar Phasenmessungen, da bei einer Totzeit im System (LS->Luft->Messmikro) Die Phase so früh fällt, das man nur noch Sprünge sieht.

Ich versteh das ganze Phasenproblem nicht. Wieso fällt die Phase? Das ist doch ein frequenzabhängiger Effekt, oder?
 
Zitat:Ein reines Totzeitglied hat also die Verstärkung 1 bzw. die Dämpfung a_v = 0 dB. Die Phasenverschiebung zwischen Eingangssignal u(t) und Ausgangssignal y(t) erhöht sich proportional zur Frequenz, das heißt, mit zunehmender Frequenz des Eingangssignals vergrößert sich die Phasenverschiebung des Ausgangssignals.
http://de.wikipedia.org/wiki/Totzeit_%28...technik%29

Das Problem sind die hässlichen Sprünge von -180 nach 180. Die entstehen nur durch die atan2-Funktion. Wenn ich z.b. nur den Equalizer im Mischpult vermesse sehe ich keine Sprünge, da die Phase um max. 90° fällt.

Bei LS-Messungen sieht das aber anders aus. Um die Sprünge zu eliminieren will ich einmal den Laufzeitunterschied ausmerzern (sprich die Totzeit rausrechnen). Zum anderen will ich erkennen, wo ein solcher Sprung in der Darstellung sitzt und ihn durch Addition von -180 an der entsprechenden Stelle ausmerzen.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
" Die Phasenverschiebung zwischen Eingangssignal u(t) und Ausgangssignal y(t) erhöht sich proportional zur Frequenz"

Mir erscheint das Rausrechnen der frequenzabhängigen Phasenverschiebung trivial. Übrig bleibt dann der interessierende Anteil.
 
Wenn man die verzögerung genau kennt ist das auch tivial...
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Man muss sie ja nicht absolut kennen. Es reicht doch die Kenntnis, dass sich die Phasenverschiebung bei doppelter Frequenz verdoppelt. Diesen Anteil müsste man rauskürzen können.
 
Ich betrachte das gerade auch als Experiment. Mal sehen obs klappt:

[Bild: 825_1376563393_aufbau.jpg]

[Bild: 825_1376563806_lz2.png]

Der Peak der Kreuzkorrelation sitzt reproduzierbar bei 84.

343 * (84/44800) = 0,64. Das passt jetzt nicht genau, aber ist auch nicht wirklich abwegig... misstrau
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Wie erklärt sich meine Abwesenheit in den letzten Tagen? Viel Software, Kaffee und Zigaretten. lachend

Als erstes habe ich mal recherchiert. Was machen eigentlich andere, um Lautsprecher o.ä. zu vermessen?
  • MLS ist bekannt aus Zeiten, als Rechenzeit Gold war - überholt.
  • DualFFT mit Rauschen kannte ich aus dem PA-Bereich (z.B. SMAART) - praktisch, aber schlichtes SNR.
  • Die Ende '90 / Anfang '00 von Angelo Farina vorgestellte log-swept-sine-Methode scheint alle "drawbacks" der Vorgänger (ich hab zu viele englische Papers gelesen Rolleyes ) auszumerzen und ist beinahe state-of-the-art.
  • Absolut "hot topic" sind Wavelets

Was ist das tolle an der Methode? Die Impulsantwort besteht aus einem rein linearen Anteil und den Harmonischen, wobei selbige bei negativen Zeiten landen und so total einfach weggefensert oder separat betrachtet werden können.

Vgl.:
Direkt von Farina (AES-Paper)
Was wird kommerziell damit gemacht
Berechnung des Wasserfalls aus Impulsantwort (Farina) und pseudo-Wavelets

Also habe ich mal losgelegt. Da ich zu faul was die lineare Faltung selber zu implementieren habe ich auf ALGLIB zurückgegriffen. Die freie Version steht unter der GPL, das passt.

Dann habe ich mir Gedanken um die Darstellung gemacht. Ich hatte bereits GDI+ (da muss man alles selber machen) und DirectX (ein einziges Kompatibilitätsdesater) ausprobiert. Da ich aber von der RealTime-Messung zur Einzelmessung übergegangen bin kann ich auch etwas weniger performante Bibliotheken in Betracht ziehen. System.Windows.Forms.DataVisualization.Charting passt.

Jetzt braucht eine solche Software auch noch einen gewissen vorgegebenen Ablauf, weil ohne Daten kann ich nichts anzeigen. Ja gut, hier ist .net eine echte Hilfe - keine Api-Calls, einfach Fenster zeichnen.


Es geht los mit einer (noch leeren) Einführungsseite.

[Bild: 825_1376950448_start.png]


Im nächsten Schritt klickt man auf "Einpegeln". Es wird ein Testsignal ausgegeben, man sieht zwei "Oszis", der Maximalausschlag liegt bei 0dBfs (es wird fix mit 44800kHz und 16bit gesampelt). ToDo: Trigger

[Bild: 825_1376950562_einpegeln.png]

Durch einen weiteren Klick auf "Einpegeln" gelangt man zur Messung.


Das Ganze ist unspektakulär. Die Messung läuft und man wird aufgefordert direkt zu speichern. In der Datei steckt die normierte Impulsantwort, die Position deren Maximums (das mit dem Laufzeitenausgleich durch Kreuzkorrelation habe ich wieder seinlassen, da überflüssig) und das aufgenommene Messignal. Die Dateien sind noch etwas groß, da z.b. die Impulsantwort 2^18 lang ist und plain text (XML-Serialisation - ich liebe .net) gespeichert wird. Da muss noch ein bisschen zip ran und wir haben statt 15Mb 800kb.

[Bild: 825_1376950709_mess1.png]

[Bild: 825_1376950745_mess2.png]


Hat man gespeichert, erlaubt es einem die Ablaufsteuerung, die gerade gemachte (oder auch eine andere) Messung zu laden.

[Bild: 825_1376950912_laden.png]

Dabei werden die interessanten Infos aus der Impulsantwort extrahiert, usw.


Weckome to the jungle - äh Schlaraffenland
Wunderschöne Plots mit gefühlten 2 Zeilen Code - .net Heart

[Bild: 825_1376950983_impulse.png]

[Bild: 825_1376951057_amplitude.png]

[Bild: 825_1376951085_csd.png]
Zu sehen sind 50ms in 32 Schritten


Zum Vergleich: eine Messung (gelb!) mit SMAART v6

[Bild: 825_1376951324_smaart.png]




ToDo:
  • Wasserfall mit Wavelets (die ich mit der Impulsantwort falte, siehe Link oben)
  • die Geschichte mit der Phase (ich habe da schon eine Idee - Stichwort Minimalphase/Allpass)
  • Extraktion der harmonischen aus der Imp-Aw (sie link 2)
  • Code aufräumen
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Im übrigen finde ich den Amplitudengang des LS zum kotzen. Aber gut, war auch billig lachend

Und ich sollte mal ein anderes Mikro nehmen.
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
überrascht
;pop;corn;
"Ich hab Millionen von Ideen und alle enden mit Sicherheit tödlich."
 
Ich staun auch nicht schlecht..... überrascht
 
Donnerknispel! Heart
...mit der Lizenz zum Löten!
 
Ich finde Woodys KnowHow-Spektrum erschreckend...

Gibt es eigentlich irgendwas, was woody nicht beherrscht? misstrau
 
Das willst du garnicht wissen lachend

Warum ich das hier mache ist ganz einfach: Die Mathematik ist bekannt, Messmethoden nicht patentiert. Trotzdem soll ich für eine solche Software zahlen (Arta / Kirchner) oder sie ist grottig (esweep).
Also mach ich was eigenes.

Audiointerfaces gibt es billig:
-44800/16: Behringer UCA222 - 30?
-96/24: ab ca. 100?

Und da hier die LS-Entwicklung gerade hoch im Kurs ist (ich komme ja auch noch zu den Breitbändern) haben wir so vielleicht ein Tool, das alle nutzen können (und evt. ein paar User anlockt).
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
[sup]...mit ner Sexseite könnte man viel mehr User anlocken...[/sup] klappe
 
Joa Titten wär auch ne idee Big Grin lachend
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Haha da hatten sich Fehler eingeschlichen (wie auch im Code) - Heißt natürlich 48000 statt 44800 Rolleyes
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
War mir natürlich klar Cool . Aber Du lernst mehr, wenn ich Dich auch mal die Fehler selbst finden lasse... Wink
 
motz motz motz motz
Pffffffffft. "Da entwich das Vakuum" - Heinrich Physik, 1857.
 
Zitat:Original geschrieben von woody

Joa Titten wär auch ne idee Big Grin lachend

Och ... zwei Sinus Schwingungen und wir haben sie Big Grin
"Ich hab Millionen von Ideen und alle enden mit Sicherheit tödlich."