© DrHitch/Shutterstock.com
Shortcuts
F#

4 Praxis: Ein Programm zur Lautsprecherberechnung

Um diesem shortcut eine praktische Note zu geben, soll nun ein Beispielprogramm zur Berechnung von Lautsprecherboxen vorgestellt werden. Diese leicht wissenschaftlich angehauchte Thematik erschließt sich relativ leicht - unter der Voraussetzung, dass Sie schon einmal einen Lautsprecher gesehen haben. Sie sollen immerhin Ihre Zeit beim Lesen nicht damit verbringen, komplexe technische Sachverhalte zu verstehen. Andererseits ist die Idee gerade interessant genug, um ein wenig über die übliche langweilige Datenspeicherung und -bearbeitung hinauszuwachsen, mit der viele Programmierer sich im Rahmen ihrer Arbeit an typischen Geschäftsanwendungen konfrontiert sehen. Keine Sorge, zu schwierig wird es nicht!

Shortcut Autorenteam


An diesem Punkt soll ein erster Einstieg in das Praxisbeispiel gegeben werden: die Implementierung einiger einfacher Funktionen zur Berechnung von Werten, die beim Bau der Weiche in einem Zwei-Wege-Lautsprecher für die Dimensionierung technischer Bauteile benötigt werden. Für die Neugierigen: es wird hier ein einfaches Butterworth-Design der ersten und zweiten Ordnung berechnet. Hier ist das Modul dazu, mit vier Funktionen:module SpeakersFS.Butterworthlet firstOrderCapacitance crossoverFrequency impedance = (0.159 / (crossoverFrequency * impedance)) * 1000000.0let firstOrderInductance crossoverFrequency impedance = (impedance / (6.28 * crossoverFrequency)) * 1000.0let secondOrderCapacitance crossoverFrequence impedance = (0.1125 / (crossoverFrequence * impedance)) * 1000000.0let secondOrderInductance crossoverFrequency impedance = ((impedance * 0.2251) / crossoverFrequency) * 1000.0Sie sehen, es war nicht übertrieben, dass dieses Beispiel recht einfach gehalten ist. Jeder der vier Funktionen werden zwei Parameter übergeben, die crossoverFrequency und die impedance. Der erste Wert ist die gewünschte Übergangsfrequenz für die Weiche, der zweite die Impedanz (auch oft vereinfacht „der Widerstand“ genannt) der einzelnen Lautsprecher. Nach verschiedenen Formeln, die Sie in jedem Buch für den Heimwerker-Lautsprecherbauer finden können, werden nun Werte für die Kapazität (Capacitance) eines Kondensators und die Induktivität einer Spule berechnet, die in den elektrischen Kreislauf der Weiche eingebaut werden.Natürlich sollten auch solch einfache Berechnungen getestet werden, und in diesem Fall ist es recht einfach, da einschlägige Bücher oder Onlinequellen für Lautsprecherfans oft Tabellen mit Werten enthalten, mit deren Hilfe Sie die Werte testen können, die von den Funktionen ausgegeben werden. Hier ist eine Implementierung einiger Tests, für den Druck ein wenig gekürzt: module SpeakersFS.ButterworthTestsopen Systemopen SpeakersFSopen Xunitlet check (expected: float) (actual: float) = Assert.Equal(expected, Math.Round(actual, 2))module FirstOrder = [] let firstOrderCapacitance_100Hz_8Ohm() = check 198.75 (Butterworth.firstOrderCapacitance 100.0 8.0) [] let firstOrderCapacitance_400Hz_8Ohm() = check 49.69 (Butterworth.firstOrderCapacitance 400.0 8.0) [] let firstOrderCapacitance_2000Hz_8Ohm() = check 9.94 (Butterworth.firstOrderCapacitance 2000.0 8.0) [] let firstOrderCapacitance_100Hz_4Ohm() = check 397....

Shortcuts
F#

4 Praxis: Ein Programm zur Lautsprecherberechnung

Um diesem shortcut eine praktische Note zu geben, soll nun ein Beispielprogramm zur Berechnung von Lautsprecherboxen vorgestellt werden. Diese leicht wissenschaftlich angehauchte Thematik erschließt sich relativ leicht - unter der Voraussetzung, dass Sie schon einmal einen Lautsprecher gesehen haben. Sie sollen immerhin Ihre Zeit beim Lesen nicht damit verbringen, komplexe technische Sachverhalte zu verstehen. Andererseits ist die Idee gerade interessant genug, um ein wenig über die übliche langweilige Datenspeicherung und -bearbeitung hinauszuwachsen, mit der viele Programmierer sich im Rahmen ihrer Arbeit an typischen Geschäftsanwendungen konfrontiert sehen. Keine Sorge, zu schwierig wird es nicht!

Shortcut Autorenteam


An diesem Punkt soll ein erster Einstieg in das Praxisbeispiel gegeben werden: die Implementierung einiger einfacher Funktionen zur Berechnung von Werten, die beim Bau der Weiche in einem Zwei-Wege-Lautsprecher für die Dimensionierung technischer Bauteile benötigt werden. Für die Neugierigen: es wird hier ein einfaches Butterworth-Design der ersten und zweiten Ordnung berechnet. Hier ist das Modul dazu, mit vier Funktionen:module SpeakersFS.Butterworthlet firstOrderCapacitance crossoverFrequency impedance = (0.159 / (crossoverFrequency * impedance)) * 1000000.0let firstOrderInductance crossoverFrequency impedance = (impedance / (6.28 * crossoverFrequency)) * 1000.0let secondOrderCapacitance crossoverFrequence impedance = (0.1125 / (crossoverFrequence * impedance)) * 1000000.0let secondOrderInductance crossoverFrequency impedance = ((impedance * 0.2251) / crossoverFrequency) * 1000.0Sie sehen, es war nicht übertrieben, dass dieses Beispiel recht einfach gehalten ist. Jeder der vier Funktionen werden zwei Parameter übergeben, die crossoverFrequency und die impedance. Der erste Wert ist die gewünschte Übergangsfrequenz für die Weiche, der zweite die Impedanz (auch oft vereinfacht „der Widerstand“ genannt) der einzelnen Lautsprecher. Nach verschiedenen Formeln, die Sie in jedem Buch für den Heimwerker-Lautsprecherbauer finden können, werden nun Werte für die Kapazität (Capacitance) eines Kondensators und die Induktivität einer Spule berechnet, die in den elektrischen Kreislauf der Weiche eingebaut werden.Natürlich sollten auch solch einfache Berechnungen getestet werden, und in diesem Fall ist es recht einfach, da einschlägige Bücher oder Onlinequellen für Lautsprecherfans oft Tabellen mit Werten enthalten, mit deren Hilfe Sie die Werte testen können, die von den Funktionen ausgegeben werden. Hier ist eine Implementierung einiger Tests, für den Druck ein wenig gekürzt: module SpeakersFS.ButterworthTestsopen Systemopen SpeakersFSopen Xunitlet check (expected: float) (actual: float) = Assert.Equal(expected, Math.Round(actual, 2))module FirstOrder = [] let firstOrderCapacitance_100Hz_8Ohm() = check 198.75 (Butterworth.firstOrderCapacitance 100.0 8.0) [] let firstOrderCapacitance_400Hz_8Ohm() = check 49.69 (Butterworth.firstOrderCapacitance 400.0 8.0) [] let firstOrderCapacitance_2000Hz_8Ohm() = check 9.94 (Butterworth.firstOrderCapacitance 2000.0 8.0) [] let firstOrderCapacitance_100Hz_4Ohm() = check 397....

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang