DIY-HIFI-Forum

Zurück   DIY-HIFI-Forum > Lautsprecher > Messen und Simulieren > Sonstige Messtechnik und Simulation
Registrieren Hilfe Benutzerliste Kalender Alle Foren als gelesen markieren

 
 
Themen-Optionen
Alt 06.12.2016, 16:16   #1
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard FR - Frequenzgänge von Lautsprechern messen

Hallo zusammen,

in den letzten Monaten habe ich eine ganze Reihe von Messprogrammen geschrieben. Gründe waren zum Einen, dass ich zu Hause ein taugliches brauchte (kein Windows, kein linux, kein Mac), und mir auf der Arbeit Arta und Limp ziemlich auf den Zünder gingen. Ich kann damit einfach nicht schnell genug arbeiten.

Ich will Euch gerne an einigen davon teilhaben lassen, teils aus Altruismus, teils aus purem Egoismus, weil viele Tester mehr und schneller Fehler finden als ein einzelner, und vielleicht auch Anregungen geben können.

Dies hier ist der erste Teil: Frequenzgänge von Lautsprechern messen.

Was braucht ihr: eine Tcl-Distribution, ich empfehle diese hier: http://www.activestate.com/activetcl/downloads

Installation: ganz einfach, irgendwo den Ordner entpacken

Starten: noch viel einfacher, Doppelklick auf fr.tcl im Basisverzeichnis

Einfach mal messen: Taste "m" drücken

Auch interessant: "F1" drücken

Etliche der Tricks und Kniffe werde ich im Laufe der Zeit hier schreiben, entweder in Eigeninitiative oder auf Anfrage.

Was mich am meisten interessieren würde: startet es überhaupt? Ich habe hier auf allen Rechnern ein eigenes Tcl (zwecks Entwicklungsumgebung), da kann schon mal einiges dabei sein, was in so einer offiziellen Distribution wie ActiveTcl vielleicht fehlt.

Kleine Einschränkung: zur Zeit ist die Audio-Ausgabe aus Kompatibilitätsgründen auf die gute alte WinMM-API eingeschränkt. Die ist zwar scheiße, aber funktioniert auch auf Windows XP. Ich könnte auch WASAPI, Kernel Streaming, Direct Sound und ähnlichen SchickiMicki, aber erstmal muss das altgammelige reichen.

Probiert es einfach mal aus!

Gruß
Jochen
Angehängte Dateien
Dateityp: zip FR.zip (618,8 KB, 13x aufgerufen)
JFA ist offline   Mit Zitat antworten
Alt 06.12.2016, 18:08   #2
rkv
Erfahrener Benutzer
 
Registriert seit: 20.11.2015
Ort: Verden
Beiträge: 127
Standard

Zitat:
Zitat von JFA Beitrag anzeigen
(kein Windows, kein linux, kein Mac)
Was dann? OS/2 Warp, beOS? Unix?
rkv ist offline   Mit Zitat antworten
Alt 06.12.2016, 20:46   #3
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Zitat:
Zitat von rkv Beitrag anzeigen
Unix?
Bingo!

OpenBSD.

Falls Ihr einen Fehler findet, bitte unbedingt Screenshot machen und hier posten.
JFA ist offline   Mit Zitat antworten
Alt 06.12.2016, 21:12   #4
adicoustic
Erfahrener Benutzer
 
Registriert seit: 17.09.2016
Beiträge: 125
Standard

Läuft bei mir unter Windows 10. UI ist für Asketen gemacht
Immerhin hab ich es geschafft, eine Messung zu starten und zwei Cursor zu setzen. Das in der Hilfe erwähnte IR-Fenster bleibt mir verborgen. Auch das Starten der Makros hab ich noch nicht hingekriegt.
Angehängte Grafiken
Dateityp: jpg JFA-FR.jpg (57,0 KB, 79x aufgerufen)
adicoustic ist offline   Mit Zitat antworten
Alt 06.12.2016, 21:24   #5
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Stimmt. Das fehlt in der Anleitung.

Macros ausführen:
:macro {exec} <Macro>

exec ist optional.

Macros laden:
:macro load <Macro>

Beim Programmstart sind alle Macros im macro-Unterordner bereits geladen, aber falls man was ändert oder ein neues erzeugt kann man die so einfach neu laden.

IR-Fenster geht mit
:show IR

Ach, und das UI ist auf alles Nötige reduziert. Ich kann damit inzwischen extrem schnell arbeiten, weil ich nirgends groß rumklicken muss. Zum Beispiel kann ich die zuletzt gemessene Kurve einfach mit "p" (wie paste) als Overlay abspeichern. Im Gegensatz zu Arta bleibt dabei auch die Impulsantwort erhalten
JFA ist offline   Mit Zitat antworten
Alt 06.12.2016, 22:15   #6
Olaf_HH
HSG Bremen-Hamburg
 
Registriert seit: 19.11.2012
Ort: Hamburg
Beiträge: 3.138
Standard

Hatte Jochen mir auf dem Battle vorgeführt, Interessantes Teil
__________________
Gruß Olaf

Nächstes Treffen der HSG Bremen-Hamburg:

Aktueller Battle in Planung für 2017: Full Metal Battle
Aktuelles Projekt: Noun MK2

Olaf_HH ist offline   Mit Zitat antworten
Alt 06.12.2016, 22:40   #7
LarsLarsen
D.A.U.
 
Registriert seit: 10.03.2015
Ort: Augsburg
Beiträge: 429
Standard

Also bei mir unter macOS startet das Programm nicht. ActiveTCL ist installiert.
-----------------
iMacLE:FR LarsLarsen$ tclsh fr.tcl
invalid command name "tk_messageBox"
while executing
"tk_messageBox -message $::errorInfo -icon error -type ok"
(file "/Users/larseickmeier/Downloads/FR/lib/env.tcl" line 23)
invoked from within
"source [file join [pwd] lib env.tcl]"
(file "fr.tcl" line 7)
------------------

Geändert von LarsLarsen (06.12.2016 um 22:50 Uhr).
LarsLarsen ist offline   Mit Zitat antworten
Alt 06.12.2016, 22:53   #8
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

MacOS und Linux gehen noch nicht, weil die Libraries noch nicht dafür kompiliert sind. Theoretisch sollte es aber gehen, auch ohne Emulator.

Interessant ist allerdings, dass das Programm an der Stelle schon abbricht. Denn tk_messageBox ist eigentlich ein in Tcl/Tk eingebauter Befehl
JFA ist offline   Mit Zitat antworten
Alt 06.12.2016, 22:55   #9
eltipo
Gast
 
Beiträge: n/a
Standard

Sehr spannend,

ich werde mir das in einer ruhigen Minute mal zu Gemüte führen.
Danke dir dafür!
  Mit Zitat antworten
Alt 07.12.2016, 08:47   #10
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Wollte eigentlich nur die verbesserte Anleitung posten, bin dabei aber noch über einen Fehler gestolpert, also hier eine aktualisierte Version.

Außerdem ein Download-Link zu den Daten, die ich beim Pappenbattle gezeigt habe: https://we.tl/r7sgFXMq3i

Sind knapp 50 MB. Datensparsamkeit kann man dem Programm nicht vorwerfen
Angehängte Dateien
Dateityp: zip FR.zip (620,6 KB, 3x aufgerufen)
JFA ist offline   Mit Zitat antworten
Alt 08.12.2016, 12:24   #11
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Mal ein kleines Tutorial um Euch zu zeigen, was man alles für nette Sachen mit dem Programm anstellen kann. Ich brauche recht häufig Zielkurven, also habe ich mir entsprechende Funktionen gebastelt. Für das Verständnis des Programms ist es wichtig, dass ich nicht einfach einen Befehl "Zielkurve" geschrieben habe, sondern den in einzelne Primitive zerlegt, diese implementiert und über die Makro-Schnittstelle offen gelegt habe.

1) Programm starten

2) Messung starten (Taste "m". Befehl ":measure") oder alte Messung laden (Befehl ":l"). Hinweis: Befehle können einfach so, wie sie da stehen, eingebeben werden. Durch die Eingabe von ":" springt das Programm sofort in die Befehlszeile.
=> Messung.png

3) Das ist ein Mitteltöner mit einer fiesen Membranresonanz, ich möchte also möglichst tief und möglichst steil trennen. Damit der Hochtöner nicht allzu viel leisten muss (Servicefälle vermeiden!) trenne ich bei 2,5 kHz, 4. Ordnung ist mit akzeptablem Aufwand machbar. Zielpegel sind 80 dB.
Nach unten soll es dritter Ordnung sein, Trennung bei 500 Hz.

3.1) neue Dummy-Kurve erzeugen: :dirac
Im Hintergrund arbeitet das Programm immer mit Impulsantworten. Der Befehl ":dirac" erzeugt einen sogenannten Dirac-Impuls*, der für alle Werte außer t=0 0 ist. Dieser Impuls hat die aktuelle Abtastrate und die Länge des aktuell eingestellten Gates. Wichtig: alles, was mit normalen Messkurven geht, kann auch damit gemacht werden
=> dirac.png

3.2) Pegel anpassen
Die Kurve ist deutlich zu laut, sie muss skaliert werden. Der Pegel lässt sich mit zwei Arten bestimmen:
- über die Cursor: Kurve in der Liste rechts anwählen, Taste "1" drücken, Pegel ablesen
- oder den - für Macros - besseren Weg, über
:get #14 Magnitude 2500
Die #14 ist die Kurven-ID, Magnitude zeigt an, welchen Wert ich haben möchte, 2500 ist die Frequenz bei welcher der ausgelesen werden soll. Ergebnis ist ziemlich exakt 94 dB. Also müssen wir den Pegel um 14 dB verringern:
:expr #14 / {pow(10, 14/20.0)}
Hier gibt es drei Fallstricke zu beachten:
- "#14", "/" und "{pow..." sind alles Parameter für den :expr-Befehl, müssen deshalb durch Leerzeichen getrennt werden
- damit das Leerzeichen innerhalb von pow() nicht als Parametertrennung interpretiert wird, ist es in {} gesetzt
- der Bruch in 14/20.0 muss so geschrieben werden, weil 14/20 als Intergerdivision interpretiert würde, mit dem Ergebnis 0. Das "20.0" forciert Fließkommaberechnung. Alternativ geht auch double(14)/20, aber nicht double(14/20)
=> dirac_skaliert.png

4) Filtern
Jetzt kann man filtern
:filter #14 lowpass 2500 {Butterworth 4}
:filter #14 highpass 500 {Butterworth 3}
Butterworth ist die Charakteristik, 4 bzw 3 die Ordnung, der Rest dürfte klar sein
=> zielkurve.png

5) Umbenennen und Färben
:rename #14 "Ziel_MT" (Alternativ: Kurve anwählen, F2 drücken)
:color #14 lightgreen (Alternativ: Kurve anwählen, "c" drücken)

Jetzt ist das natürlich blöd, sowas immer von Hand eingeben zu müssen, deshalb habe ich ein Macro geschrieben, dass die Arbeit zum Teil abnimmt. Datei heißt "target.frm" und ist im Zip enthalten (Unterordner "macros"). Test:
:macro target lowpass 2500 Butterworth 4
(ja, die geschweiften Klammern fehlen mit Absicht)

* streng genommen ist es, weil zeitdiskret, ein Kronecker-Delta, damit kann aber außerhalb akademischer Kreise niemand was anfangen
Angehängte Grafiken
Dateityp: jpg Messung.jpg (101,9 KB, 45x aufgerufen)
Dateityp: jpg dirac.jpg (102,8 KB, 39x aufgerufen)
Dateityp: jpg dirac_skaliert.jpg (102,2 KB, 40x aufgerufen)
Dateityp: jpg zielkurve.jpg (104,0 KB, 45x aufgerufen)
JFA ist offline   Mit Zitat antworten
Alt 15.12.2016, 11:14   #12
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Ein paar Bugfixes (und vermutlich ein paar Bugadds...)
Angehängte Dateien
Dateityp: zip FR.zip (621,9 KB, 7x aufgerufen)
JFA ist offline   Mit Zitat antworten
Alt 17.12.2016, 19:01   #13
JFA
Erfahrener Benutzer
 
Registriert seit: 10.12.2012
Ort: OWL
Beiträge: 995
Standard

Danke an Armin, der sich die Mühe gemacht hat: es scheint ein Problem der DLLs mit der 64 Bit Version von ActiveTcl zu geben. Im Moment müsst ihr die 32 Bit Version nehmen. Die läuft auch unter Win 64 Bit

Fehlermeldung: http://www.diy-hifi-forum.eu/forum/p...ictureid=29358

Weitere Informationen: http://stackoverflow.com/questions/1...ript-activetcl
JFA ist offline   Mit Zitat antworten
Antwort

Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Powered by vBadvanced CMPS v3.2.2
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.