PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Simulation der nichtlinearen Verzerrungen mit Filtern



ansch
04.02.2022, 20:26
Hallo zusammen,

Vorab vielleicht noch einige Worte:
Für mich ist das Thema Audio Hobby und das Lesen (primär) dient mir neues zu lernen und andere Sichtweisen kennen zu lernen. Das Schreiben im Forum dient dem dem Austausch um damit wieder ersteres zu ermöglichen und bereits Angewandtes auf den Prüfstand zu stellen.
Aber eigentlich ist das Freizeit und Entspannung und teilt sich die freie Zeit neben anderen Dingen wie Familie - die dann Vorrang haben - eben der Zeit in der Werkstatt.

Nun aber zum Thema: Es geht um die Simulation des Klirrverhaltens eines Lautsprechers mit Filter eben bevor dieser umgesetzt wird.

Bei der Filterauslegung wäre es wünschenswert vorab einen Eindruck davon zu gewinnen, wie sich das Klirrverhalten des fertigen Konstrukts, also inklusive der erforderlichen Filter darstellt.
Idealerweise eben beim anvisierten Betriebspegel.
Dabei ist es in erster Näherung egal ob es sich um passive oder aktive Filter handelt.

Im Threat zur Auslegung eines PA-Topteils (https://www.diy-hifi-forum.eu/forum/showthread.php?22117-Erste-Eigenentwicklung-(PA)-Tops) habe ich ein mögliches Vorgehen - dort für aktive Filterung - grob skizziert. Leider wohl so grob, dass nicht klar ist, was ich genau meine - OK, sehe ich ein.:D
Aber wenn ich darstelle was ich meine, wird das wohl etwas länger.
Jedenfalls wollte ich das mal eingehender darstellen.

Und da das Thema möglicherweise von allgemeinerem Interesse ist, stelle ich das mal hier rein. So dass Diskussionen zur vorgeschlagenen Methode eben hier erfolgen können und nicht vom eigentlichen Thema im anderen Threat ablenken.
Außerdem ist das Vorgehen ja allgemeingültig und lässt sich beliebig übertragen - eben auch auf passive Weichen. Das würde dann u.U. sogar ermöglichen, einen Einfluss der passiven Weiche abzutrennen.

Das Verfahren ist eigentlich recht simpel und funktioniert grundsätzlich mit jedem Messprogramm, da das Messprogramm nur zur Aufnahme der Daten dient. Die Analyse erfolgt extern.
Mir ist kein (freies) Simulationsprogramm bekannt mit dem sich diese Simulationen durchführen lassen.
Deswegen beschreibe ich das Verfahren als "zu Fuß Methode" und zur Anwendung mit MATLAB/Octave (Octave ist die Open Source Variante von MATLAB mit sehr hoher Syntaxkompatibilität - Liebe Octave Leute, bitte um Nachsicht für diese Formulierung). Vermutlich geht auch ein Tabellenkalkulationsprogramm.

Weil es so einfach ist, kann es durchaus sein, dass das jeder schon so macht und einfach nicht drüber redet. In dem Fall bitte ich den Beitrag einfach zu ignorieren!

Vorgehen:
Im Prinzip handelt es sich ganz einfach um ein Look-up-table, welches ausgewertet wird. Man könnte das mit Interpolation erweitern aber das soll hier mal außen vor bleiben.
Man benötigt Messungen über verschiedene Pegelabstufungen, da die nichtlinearen Verzerrungen ja nichtlinear sind. D.h. man kann sie nicht einfach aus einer Einzelmessung für andere Pegel vorhersagen.


Ausgangspunkt sind Messungen der nichtlinearen Verzerrungen für verschiedene Pegelabstufungen. Ich habe für das Beispiel Arta und die Farina Messmethode gewählt. Idealerweise würde man den absoluten Klirr in dB exportieren und später in Prozent umrechnen.
Hier zeige ich das mit dem Klirr direkt in Prozent.
Für das Beispiel habe ich einen 1" Treiber an einem großen und recht tiefen Horn gewählt. Das ergibt natürlich erhöhten K2 (gab es da nicht mal eine Formel mit der man den sauch theoretisch berechnen kann, muss ich noch mal kramen..)).
Die Pegel für das Beispiel blieben moderat (max. 115 dB, das entspricht 2.83 V am Treiber). Real würde man für einen Beschallungslautsprecher eher in Richtung max. Eingangsleistung bzw. eben des maximalen anvisierten Betriebspegels gehen
Gemessen wurde in 2 dB Pegelstufen, das ergibt nachher max. 1 dB Pegelfehler.

Die Messungen werden exportiert (hier als *.mag-dist.txt Dateien aus Arta) und in das Auswerteprogramm (hier MATLAB) importiert.
Dort werden die Amplitudenfrequenzgänge gemeinsam in einem Diagramm dargestellt und in einem darunter liegenden K2 bzw. K3.
So erhält man jeweils eine Kurvenschar, in der Abbildung in blau dargestellt.

Nächster Schritt ist das einzeichnen der Zielkurve.
Diese kann man sich im Sim-prog. der Wahl generieren. Ich habe einfach die Übertragungsfunktion in für die Frequenzen der Klirrmessungen in MATLAB gerechnet (Ich habe die Funktionen ohnehin in einem Skrip mit dem ich mir die Controllereinstellungen vorab simulieren kann. Das stammt noch aus der Zeit als es die gängigen Simprogs das nicht konnten) und Klirr machen sie ja immer noch nicht....
In der Abbildung ist das die rote Kurve.

Nun sucht man für die Frequenzen von Interesse die Schnittpunkte der roten Kurve mit einer der blauen im Amplitudendiagramm. Das ist im oberen Diagramm mit den grünen Kreisen gekennzeichnet.
Von diesen "Schnittfrequenzen" zeichnet man eine vertikale Linie zu den Klirrwerten und such den zum jeweiligen Amplitudenmesswert zugehörigen Klirrwert. Deswegen sind die Kurven unterschiedlich markiert (Punkt, Kreis, Viereck, etc.), so dass man die richtige Klirrkurve identifizieren kann.
Auf der y-Achse des Klirrdiagramms kann nun der entsprechende Klirrwert für die jeweilige Frequenz und die betreffende Amplitude mit Filter abgelesen werden.
I.d.R. wird man das zu Fuß wohl eher um die Trennfrequenz machen.

Hier denke ich, dass das Verhalten des Filters mit bedacht werden muss. Für tiefe Frequenzen fällt der Pegel und der Treiber wird weniger belastet. Wenn darunter ein anderer Treiber übernimmt, maskiert er zunehmend den abfallenden Pegel des Hochtöners. Bzw. für einen Tieftöner am unteren Ende sinkt der Pegel einfach und der Klirr spielt gehörmäßig keine Rolle mehr.
Mathematisch steigt aber der prozentuale Klirr, während der absolute Klirr in dB eben fällt.
Im Diagramm habe ich das über die dunkelgrünen Strichlinien gekennzeichnet.

64603

Zur Korrektur kann man nun den Pegel in Prozent in absolute Pegel umrechnen, die Pegeldämpfung zugeben und zurück in Prozent wandeln.
Hier bin ich auf Meinungen und Rückmeldungen zur Gültigkeit des Vorgehens an dieser Stelle gespannt.

Und da sind wir schon bei der skript-basierten numerischen Auswertung. Ich bin zu faul das zu Fuß zu machen und überlasse das gern MATLAB/Octave.
Nachfolgend ein einfaches und nicht besonders intelligentes Script dazu. Es geht ums Prinzip.
Die graphische Auswertung und auch die Kombination mit einem anderen Treiber (z.B. Mitteltöner) ist da jetzt nicht bei. Letztere muss man wieder über die absoluten Klirrwerte in dB machen.
Wie man sieht geht das extrem knapp und einfach. Damit lässt sich sehr sch simulieren, wie sich der Klirr später veralten wird.
Der Aufwand sind die Messungen.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Simulate non-harminc distortion of a driver with applied filter.
%
%Import measurements (*mag-dist.tx) into individual data_xx
%Add attenuation if measured with Arta attenuation -> Amplitude remains constant
%otherwise
%Form arrays for amplitude (Amp, K2 and K3)
%Cycle through for all frequencies, find min deviation between meas amplitude
%and target
%
%(c) Dr.-Ing. A. Schüttpelz, 2011 - 2022, published under GPL
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


freq = data_m0(:,1); %first column in data files, all files to have same frequencies!
[G_HP] = HP(freq, 1250, 'LR', 4); % High pass filter function AS from GUI2
target = 20*log10(abs(G_HP))+108; %get amplitude for target


%form arrays
Amp = [data_m0(:,2) data_m2(:,2)-2 data_m4(:,2)-4 data_m6(:,2)-6 data_m8(:,2)-8 data_m10(:,2)-10 data_m12(:,2)-12 data_m14(:,2)-14 data_m16(:,2)-16 data_m18(:,2)-18];
K3 = [data_m0(:,4) data_m2(:,4) data_m4(:,4) data_m6(:,4) data_m8(:,4) data_m10(:,4) data_m12(:,4) data_m14(:,4) data_m16(:,4) data_m18(:,4)];
K2 = [data_m0(:,3) data_m2(:,3) data_m4(:,3) data_m6(:,3) data_m8(:,3) data_m10(:,3) data_m12(:,3) data_m14(:,3) data_m16(:,3) data_m18(:,3)];


%calculate:
for i = 1:length(freq)
dA(i, :) = abs((Amp(i,:)-target(i)));
ind = find(dA(i,:) == min(dA(i,:)));
ampl_err(i) = dA(i, ind);

dtarg = max(target) - target(i);
k2_pre = K2(i, ind);
k3_pre = K3(i, ind);

k2_pre_db = 20*log10(k2_pre/100);
k2_pre_db_corr = k2_pre_db - dtarg;
k3_pre_db = 20*log10(k3_pre/100);
k3_pre_db_corr = k3_pre_db - dtarg;

K2_targ(i) = 100* 10.^(k2_pre_db_corr/20);
K3_targ(i) = 100* 10.^(k3_pre_db_corr/20);
end



Beispielergebnis
Anschließend hier noch Abbildungen zum Ergebnis.
Gezeigt sind die Simulation des Klirrs des Treibers mit Filter und zum Vergleich die Arta Farina Messung mit Treiber am Controller.

6460464605

Außerdem ist noch eine Abbildung mit dem Pegelfehler der Table-look-up-Methode für die betreffenden Messungen gezeigt.

64606

Wie vorab geschrieben, sind die Abweichungen für 2 dB-Messabstufungen auf 1 dB begrenzt. Nur außerhalb des Übertragungsbereiches gibt es Pegelabweichungen. Die rühren daher, dass Arta bei der Farina Auswertung das Gate nicht mit berücksichtigt (im Endeffekt also Raumeinflüsse).


Der Pegel sollte eigentlich stimmen. Das Target war auf LR24 bei 1.25 kHz für 108 dB eingestellt. Die Controllereinstellungen sollten entsprechend sein.

Man kann aber insgesamt eine gute Übereinstimmung trotz unterschiedlicher Sklierung) hoffentlich erkennen. Zum Vergleich steht der Marker in der Arta Messung bei 10 kHz.
Das ist die obere Grenzfrequenz für die die Simulation gilt. Das ergibt sich daraus, dass es keine blauen Amplituden- und Klirrkurven für Pegel oberhalb von 10 kHz gibt. Die braucht man für K2 aber auch nicht. Ob Fledermäuse sich durch die nichtlinearen Verzerrungen gestört fühlen ist mir an der Stelle egal.
Die verbleibenden Abweichungen können jetzt verschiedene Ursachen haben, wie z.B. Pegelabweichungen post-controller. Das war jetzt zugegebenrmaßen etwas quick&dirty um das Vorgehen darzustellen.
Die Abweichungen bei tiefen Frequenzen ergeben sich aus der angesprochenen Pegelkorrektur des Klirr.

Zusammenfassung, Erweiterungen und Fragen:
Zusammenfassend, denke ich, dass man auf diese Weise den Klirr mit Filter simulieren und ihn als Entscheidungsgrundlage für die Wahl der Trennung und Filterung verwenden kann.
Selbstverständlich ist das von besonderem Interesse bei allen Treibern, die auf Achse erstmal nicht linear sin (wie alle Treiber am echten CD-Horn) und allen Konzepten für die aufgrund der Art ihres Betriebes das Risiko erhöhter Klirrwerte besteht..
Man spart sich so viel Messerei, wenn man das vorab simulieren kann.

Erweitern ließe sich das Verfahren ggf. über Interpolation der Amplituden- und Klirrwerte. Dabei muss man dann natürlch aufpassen, dennoch gültige Aussagen zu erhalten. Aber solange keine Sprünge auftreten sollte das eigentlich gehen.

Nun bin ich mal gespannt ob / wann es freie Simprogs mit der Fähigkeit dieser Simulation gibt. Vielleicht sollte ich mal den Kimmo Saunisto anschreiben. Bis dahn mache ich das weiter in MATLAB.

Abschließend möchte ich mal die fRage in die Runde werfen ob ihr das so oder so ähnlich schon immer macht? Bzw. auch ob es Anmerkungen, Fragen etc. zum Vorgehen gibt.
Ein Punkt der hier jetzt nich betrachtet wurde ist ja, was man letzlich als erstrebenswertes Kriterium im Übergang der Treiber anlegt?
Vor allem in der Kombination von Direktstrahlern und Horntreibern wird das ja interessant, da sie unterschiedlich klirren.

Soweit erstmal dazu, sorry für den länglichen Text,

Viele Grüße
André

ente
04.02.2022, 21:25
Hallo André,

vielen Dank für die Ausführungen. Ich erinnere dunkel, dass Fabian mich vor einigen Jahren dazu schon mal kontaktiert hat, damit ich Ivo zur Integration einer derartigen Auswertung bewege. Leider hat er sich geweigert.

Hast du schon das neue Multitone-Tool in ARTA in diesem Kontext getestet. Dort können jetzt beliebige Filter gesetzt werden und die Auswirkung auf TD+N als f(Pegel) getestet werden. Leider gibt es (noch) keinen Datenexport, sondern nur eine Overlay-Funktion.

Gruß
Heinrich

ansch
04.02.2022, 22:14
Hallo André,

vielen Dank für die Ausführungen. Ich erinnere dunkel, dass Fabian mich vor einigen Jahren dazu schon mal kontaktiert hat, damit ich Ivo zur Integration einer derartigen Auswertung bewege. Leider hat er sich geweigert.

Hast du schon das neue Multitone-Tool in ARTA in diesem Kontext getestet. Dort können jetzt beliebige Filter gesetzt werden und die Auswirkung auf TD+N als f(Pegel) getestet werden. Leider gibt es (noch) keinen Datenexport, sondern nur eine Overlay-Funktion.

Gruß
Heinrich

Hallo Heinrich,

danke für Rückmeldung.
Mit Fabian hatte ich in meiner Berliner Zeit ja einiges zusammen gemessen...das war auch damals die Zeit als ich sehr intensiv an den Hörnern gebaut und gemessen hatte. Da hatten wir einen sehr intensiven Austausch. Fabian kennt das aber. Ich habe danach dann eher langweiligen Kleinkram zur Befriedigung persönlichen Bedarfes gebaut.

Ehrlich gesagt hat der Ivo Matelajan da auch recht, das gehört in ein Sim prog. wie Vituixcad.
Ich meine mich aber auch ganz an die Anfangszeit von Arta zu erinnern, als Ivo Matelajan mal drüber nachdachte eine Skriptsprache in Arta einzubauen - das wärs doch.

Bzgl. des Multitone-Tool stehen mein Erfahrungen noch aus - ich habe den Post im Forum noch als Erinnerung offen und danke dabei ganz herzlich für die Info.
Der fehlende Datenexport ist natürlich schade aber das ausprobieren der Funktion und dann die Interpretation steht definitiv auf dem Programm.
Ich bin dabei auf einen neuen Controller umzustellen und dabei einige Dinge umzustellen. Unter anderem auch die Linea Research Variante linearphasiger Filter. In diesem Rahmen will ich mir das anschauen.
Aber dazu muss das Wetter noch wärmer werden.

Aber unabhängig davon bleibt ja, dass messen gut gut ist, aber Simulieren manchmal eben schneller. Oder kann man den Filter im Multitone-tool auch nachträglich setzen? Aber was ist dann mit der Kombination mehrerer Wege?
Deswegen wäre der Multitone-export schon interessant...

Viele Grüße
André

ente
05.02.2022, 08:56
Hallo André,

nein, nachträglich kann man kein Filter setzen, da das Anregungssignal gefiltert wird.

Bezüglich des Übergangs Auswertung/Simulation haben wir oft diskutiert. ich hatte (und habe) da noch einige Wünsche in der Schublade, wurde bislang aber alles abgelehnt. Mal sehen, ob ich Ivo im August noch zu einigen Sachen überreden kann.

Zur Integration deines Wunsches in VCAD schreib Kimmo ruhig mal an, er steht Anregungen in der Regel recht aufgeschlossen gegenüber.

Gruß
Heinrich

JFA
05.02.2022, 20:25
Hmm, irgendwann habe ich hier mal ein Messprogramm angeboten, was das "prinzipiell" könnte. Weil es immer die vollständige Impulsantwort behält und man darauf beliebige Filter setzen kann. Und wenn man die Impulsantwort mit einem logarithmischen Gleitsinus ermittelt, dann kann man da natürlich auch die harmonischen Verzerrungen dementsprehend auswerten. Das ganze ist auch makrofähig, da sollte sich einiges draus machen lassen.

Ein anderes Programm, was ich hier ebenfalls mal eingestellt habe, misst die IMD, auch makrogesteuert. Da lassen sich sowoh Eingangs- als auch Ausgangssignal filtern, die Auswertungen sind auch recht fancy. Sollte auch gehen.