refactor: dämpfungsglied
This commit is contained in:
@@ -0,0 +1,263 @@
|
||||
<html>
|
||||
<div class="text-start" id="attenuator-calculator">
|
||||
<p>Mit diesem Applet können symmetrische T- und Pi-Dämpfungsglieder für ein 50-Ω-System berechnet werden.</p>
|
||||
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="attenuator-db">Dämpfung in dB</label>
|
||||
<input class="form-control" id="attenuator-db" type="number" min="0.1" max="100" step="0.1" value="6" inputmode="decimal">
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="attenuator-impedance">Systemimpedanz</label>
|
||||
<input class="form-control" id="attenuator-impedance" type="text" value="50 Ω" readonly>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<span class="form-label d-block">Schaltungsform</span>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" id="attenuator-pi" type="radio" name="attenuator-topology" value="pi" checked>
|
||||
<label class="form-check-label" for="attenuator-pi">Pi</label>
|
||||
</div>
|
||||
<div class="form-check form-check-inline">
|
||||
<input class="form-check-input" id="attenuator-t" type="radio" name="attenuator-topology" value="t">
|
||||
<label class="form-check-label" for="attenuator-t">T</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12 col-sm-6">
|
||||
<label class="form-label" for="attenuator-series">Normreihe</label>
|
||||
<select class="form-select" id="attenuator-series">
|
||||
<option value="E12">E12</option>
|
||||
<option value="E24" selected>E24</option>
|
||||
<option value="E48">E48</option>
|
||||
<option value="E96">E96</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p class="text-danger mt-3" id="attenuator-error" role="alert" hidden></p>
|
||||
|
||||
<div class="mt-4" id="attenuator-output">
|
||||
<p class="mb-1">Die idealen Widerstandswerte betragen:</p>
|
||||
<div id="attenuator-ideal-result"></div>
|
||||
|
||||
<p class="mb-1">Die nächsten Widerstandswerte aus der <span id="attenuator-series-name">E24</span>-Reihe betragen:</p>
|
||||
<div id="attenuator-standard-result"></div>
|
||||
|
||||
<p class="mb-1">Mit diesen Normwerten wird folgende Dämpfung erreicht:</p>
|
||||
<div id="attenuator-achieved-result"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
|
||||
const impedance = 50;
|
||||
const preferredValues = {
|
||||
E12: [1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2],
|
||||
E24: [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1],
|
||||
E48: [1.00, 1.05, 1.10, 1.15, 1.21, 1.27, 1.33, 1.40, 1.47, 1.54, 1.62, 1.69, 1.78, 1.87, 1.96, 2.05, 2.15, 2.26, 2.37, 2.49, 2.61, 2.74, 2.87, 3.01, 3.16, 3.32, 3.48, 3.65, 3.83, 4.02, 4.22, 4.42, 4.64, 4.87, 5.11, 5.36, 5.62, 5.90, 6.19, 6.49, 6.81, 7.15, 7.50, 7.87, 8.25, 8.66, 9.09, 9.53],
|
||||
E96: [1.00, 1.02, 1.05, 1.07, 1.10, 1.13, 1.15, 1.18, 1.21, 1.24, 1.27, 1.30, 1.33, 1.37, 1.40, 1.43, 1.47, 1.50, 1.54, 1.58, 1.62, 1.65, 1.69, 1.74, 1.78, 1.82, 1.87, 1.91, 1.96, 2.00, 2.05, 2.10, 2.15, 2.21, 2.26, 2.32, 2.37, 2.43, 2.49, 2.55, 2.61, 2.67, 2.74, 2.80, 2.87, 2.94, 3.01, 3.09, 3.16, 3.24, 3.32, 3.40, 3.48, 3.57, 3.65, 3.74, 3.83, 3.92, 4.02, 4.12, 4.22, 4.32, 4.42, 4.53, 4.64, 4.75, 4.87, 4.99, 5.11, 5.23, 5.36, 5.49, 5.62, 5.76, 5.90, 6.04, 6.19, 6.34, 6.49, 6.65, 6.81, 6.98, 7.15, 7.32, 7.50, 7.68, 7.87, 8.06, 8.25, 8.45, 8.66, 8.87, 9.09, 9.31, 9.53, 9.76]
|
||||
};
|
||||
|
||||
const attenuationInput = document.getElementById("attenuator-db");
|
||||
const seriesSelect = document.getElementById("attenuator-series");
|
||||
const output = document.getElementById("attenuator-output");
|
||||
const error = document.getElementById("attenuator-error");
|
||||
const idealResult = document.getElementById("attenuator-ideal-result");
|
||||
const standardResult = document.getElementById("attenuator-standard-result");
|
||||
const achievedResult = document.getElementById("attenuator-achieved-result");
|
||||
const latexResults = [idealResult, standardResult, achievedResult];
|
||||
let katexWaitTimer = null;
|
||||
|
||||
function decimalLatex(value, maximumFractionDigits, minimumFractionDigits = 0) {
|
||||
return value.toLocaleString("de-DE", {
|
||||
maximumFractionDigits: maximumFractionDigits,
|
||||
minimumFractionDigits: minimumFractionDigits,
|
||||
useGrouping: false
|
||||
}).replace(",", "{,}");
|
||||
}
|
||||
|
||||
function resistanceLatex(value) {
|
||||
if (value >= 1e6) {
|
||||
return decimalLatex(value / 1e6, 3) + "\\,\\mathrm{M}\\Omega";
|
||||
}
|
||||
if (value >= 1e3) {
|
||||
return decimalLatex(value / 1e3, 3) + "\\,\\mathrm{k}\\Omega";
|
||||
}
|
||||
return decimalLatex(value, 2) + "\\,\\Omega";
|
||||
}
|
||||
|
||||
function nearestPreferredValue(value, seriesName) {
|
||||
const values = preferredValues[seriesName];
|
||||
const decade = Math.floor(Math.log10(value));
|
||||
const candidates = [];
|
||||
|
||||
for (let exponent = decade - 1; exponent <= decade + 1; exponent += 1) {
|
||||
values.forEach(function(baseValue) {
|
||||
candidates.push(baseValue * Math.pow(10, exponent));
|
||||
});
|
||||
}
|
||||
|
||||
return candidates.reduce(function(nearest, candidate) {
|
||||
return Math.abs(candidate - value) < Math.abs(nearest - value) ? candidate : nearest;
|
||||
});
|
||||
}
|
||||
|
||||
function multiplyMatrices(left, right) {
|
||||
return [
|
||||
[
|
||||
left[0][0] * right[0][0] + left[0][1] * right[1][0],
|
||||
left[0][0] * right[0][1] + left[0][1] * right[1][1]
|
||||
],
|
||||
[
|
||||
left[1][0] * right[0][0] + left[1][1] * right[1][0],
|
||||
left[1][0] * right[0][1] + left[1][1] * right[1][1]
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
function achievedAttenuation(topology, symmetricResistance, middleResistance) {
|
||||
const seriesMatrix = function(resistance) {
|
||||
return [[1, resistance], [0, 1]];
|
||||
};
|
||||
const shuntMatrix = function(resistance) {
|
||||
return [[1, 0], [1 / resistance, 1]];
|
||||
};
|
||||
let matrix;
|
||||
|
||||
if (topology === "pi") {
|
||||
matrix = multiplyMatrices(
|
||||
multiplyMatrices(shuntMatrix(symmetricResistance), seriesMatrix(middleResistance)),
|
||||
shuntMatrix(symmetricResistance)
|
||||
);
|
||||
} else {
|
||||
matrix = multiplyMatrices(
|
||||
multiplyMatrices(seriesMatrix(symmetricResistance), shuntMatrix(middleResistance)),
|
||||
seriesMatrix(symmetricResistance)
|
||||
);
|
||||
}
|
||||
|
||||
const denominator = matrix[0][0]
|
||||
+ matrix[0][1] / impedance
|
||||
+ matrix[1][0] * impedance
|
||||
+ matrix[1][1];
|
||||
const transmission = 2 / denominator;
|
||||
return -20 * Math.log10(Math.abs(transmission));
|
||||
}
|
||||
|
||||
function katexIsReady() {
|
||||
return window.katex && typeof window.katex.render === "function";
|
||||
}
|
||||
|
||||
function setLatex(element, latex) {
|
||||
element.attenuatorLatex = latex;
|
||||
|
||||
if (katexIsReady()) {
|
||||
window.katex.render(latex, element, {
|
||||
displayMode: true,
|
||||
throwOnError: false,
|
||||
strict: false
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
element.textContent = "";
|
||||
}
|
||||
|
||||
function renderResultsWhenKatexIsReady() {
|
||||
if (katexIsReady()) {
|
||||
katexWaitTimer = null;
|
||||
latexResults.forEach(function(element) {
|
||||
setLatex(element, element.attenuatorLatex);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (katexWaitTimer === null) {
|
||||
katexWaitTimer = window.setTimeout(function() {
|
||||
katexWaitTimer = null;
|
||||
renderResultsWhenKatexIsReady();
|
||||
}, 50);
|
||||
}
|
||||
}
|
||||
|
||||
function networkValuesLatex(topology, symmetricResistance, middleResistance) {
|
||||
if (topology === "pi") {
|
||||
return "\\begin{aligned}"
|
||||
+ "R_1=R_3&=" + resistanceLatex(symmetricResistance) + "\\\\"
|
||||
+ "R_2&=" + resistanceLatex(middleResistance)
|
||||
+ "\\end{aligned}";
|
||||
}
|
||||
|
||||
return "\\begin{aligned}"
|
||||
+ "R_1=R_2&=" + resistanceLatex(symmetricResistance) + "\\\\"
|
||||
+ "R_3&=" + resistanceLatex(middleResistance)
|
||||
+ "\\end{aligned}";
|
||||
}
|
||||
|
||||
function calculate() {
|
||||
const attenuation = attenuationInput.valueAsNumber;
|
||||
const topology = document.querySelector('input[name="attenuator-topology"]:checked').value;
|
||||
const seriesName = seriesSelect.value;
|
||||
|
||||
if (!Number.isFinite(attenuation) || attenuation <= 0 || attenuation > 100) {
|
||||
error.textContent = "Bitte eine Dämpfung zwischen 0,1 dB und 100 dB eingeben.";
|
||||
error.hidden = false;
|
||||
output.hidden = true;
|
||||
return;
|
||||
}
|
||||
|
||||
error.hidden = true;
|
||||
output.hidden = false;
|
||||
|
||||
const voltageRatio = Math.pow(10, attenuation / 20);
|
||||
let symmetricResistance;
|
||||
let middleResistance;
|
||||
|
||||
if (topology === "pi") {
|
||||
symmetricResistance = impedance * (voltageRatio + 1) / (voltageRatio - 1);
|
||||
middleResistance = impedance * (voltageRatio * voltageRatio - 1) / (2 * voltageRatio);
|
||||
} else {
|
||||
symmetricResistance = impedance * (voltageRatio - 1) / (voltageRatio + 1);
|
||||
middleResistance = 2 * impedance * voltageRatio / (voltageRatio * voltageRatio - 1);
|
||||
}
|
||||
|
||||
const preferredSymmetricResistance = nearestPreferredValue(symmetricResistance, seriesName);
|
||||
const preferredMiddleResistance = nearestPreferredValue(middleResistance, seriesName);
|
||||
const actualAttenuation = achievedAttenuation(
|
||||
topology,
|
||||
preferredSymmetricResistance,
|
||||
preferredMiddleResistance
|
||||
);
|
||||
|
||||
setLatex(
|
||||
idealResult,
|
||||
networkValuesLatex(topology, symmetricResistance, middleResistance)
|
||||
);
|
||||
setLatex(
|
||||
standardResult,
|
||||
networkValuesLatex(topology, preferredSymmetricResistance, preferredMiddleResistance)
|
||||
);
|
||||
setLatex(
|
||||
achievedResult,
|
||||
"a_\\mathrm{erreicht}=" + decimalLatex(actualAttenuation, 2, 2) + "\\,\\mathrm{dB}"
|
||||
);
|
||||
document.getElementById("attenuator-series-name").textContent = seriesName;
|
||||
if (!katexIsReady()) {
|
||||
renderResultsWhenKatexIsReady();
|
||||
}
|
||||
}
|
||||
|
||||
attenuationInput.addEventListener("input", calculate);
|
||||
seriesSelect.addEventListener("change", calculate);
|
||||
document.querySelectorAll('input[name="attenuator-topology"]').forEach(function(input) {
|
||||
input.addEventListener("change", calculate);
|
||||
});
|
||||
|
||||
calculate();
|
||||
}());
|
||||
</script>
|
||||
</html>
|
||||
@@ -1,6 +1,23 @@
|
||||
Dämpfungsglieder werden in der HF-Technik oft benötigt, um Signalpegel definiert abzuschwächen. Hierbei kann z.B. durch ein Leistungsdämpfungsglied die Ausgangsleistung eines Senders soweit reduziert werden, dass dessen Ausgangssignal die angeschlossenen Messgeräte nicht beschädigt oder übersteuert. Man verwendet Dämpfungsglieder auch um Eingangspegel für Verstärker und Empfänger auf ein definiertes Maß zu reduzieren.
|
||||
|
||||
Ein Dämpfungsglied muss hierbei immer für eine definierte Systemimpedanz bzgl. Ein- und Ausgang ausgelegt werden. Bei symmetrisch aufgebauten Dämpfungsgliedern sind die Ein- und Ausgangsimpedanzen identisch. Oft sind dies die in der HF-Technik üblichen $\qty{50}{\ohm}$. Damit ein Dämpfungsglied die geforderten Impedanzen an dessen Ein- und Ausgang zeigt ist ein impedanzrichtiger Abschluss auf beiden Seiten erforderlich. Dies wird durch ein geeignetes Widerstandsnetzwerk erreicht. Die Dämpfung wird hierbei in dB (Dezibel) angegeben und bezieht sich auf die Leistung; so bedeutet z.B. $\qty{20}{\dB}$ eine Dämpfung der Eingangsleistung um den Faktor $\num{100}$. Die Ausgangsleistung nach diesem Dämpfungsglied beträgt somit nur noch $\frac{1}{100}$ der Eingangsleistung was im Falle von $\qty{100}{\watt}$ Eingangsleistung einer Ausgangsleistung von $\qty{1}{\watt}$ entspricht.
|
||||
Ein Dämpfungsglied muss hierbei immer für eine definierte Systemimpedanz bzgl. Ein- und Ausgang ausgelegt werden. Bei symmetrisch aufgebauten Dämpfungsgliedern sind die Ein- und Ausgangsimpedanzen identisch. Oft sind dies die in der HF-Technik üblichen $\qty{50}{\ohm}$. Damit ein Dämpfungsglied die geforderten Impedanzen an dessen Ein- und Ausgang zeigt ist ein impedanzrichtiger Abschluss auf beiden Seiten erforderlich. Dies wird durch ein geeignetes Widerstandsnetzwerk erreicht.
|
||||
|
||||
Es gibt hierbei verschiedene Schaltungsvarianten, die sich in der Anordnung der Widerstände unterscheiden. Die beiden gängigsten Varianten sind das T- (vgl. Abbildung [ref:a_daempfungsglied_t]) und das $\pi$-Dämpfungsglied (vgl. Abbildung [ref:a_daempfungsglied_pi]). Bei beiden Varianten wird die Dämpfung durch ein Widerstandsnetzwerk erreicht, welches die eingespeiste Leistung in Wärme umwandelt.
|
||||
|
||||
<margin>
|
||||
[picture:342:a_daempfungsglied_pi:Dämpfungsglied in PI-Konfiguration mit Quelle und Lastwiderstand]
|
||||
</margin>
|
||||
|
||||
<margin>
|
||||
[picture:341:a_daempfungsglied_t:Dämpfungsglied in T-Konfiguration mit Quelle und Lastwiderstand]
|
||||
</margin>
|
||||
|
||||
[question:AD801]
|
||||
[question:AD802]
|
||||
|
||||
---
|
||||
|
||||
Die Dämpfung eines Dämpfungsglieds wird üblicherweise in dB (Dezibel) angegeben und bezieht sich auf die Leistung. So bedeutet z. B. $\qty{20}{\dB}$ eine Dämpfung der Eingangsleistung um den Faktor $\num{100}$. Die Ausgangsleistung nach diesem Dämpfungsglied beträgt somit nur noch $\frac{1}{100}$ der Eingangsleistung was im Falle von $\qty{100}{\watt}$ Eingangsleistung einer Ausgangsleistung von $\qty{1}{\watt}$ entspricht.
|
||||
|
||||
Bei ohmschen Dämpfungsgliedern erfolgt die Dämpfung durch Umwandlung der eingespeisten Leistung in Wärme. Wird z.B. ein $\qty{100}{\watt}$-Signal wie vorher beschrieben um $\qty{20}{\dB}$ gedämpft so werden $\qty{99}{\watt}$ im Dämpfungsglied in Wärme umgesetzt. Die verbleibende Leistung von $\qty{1}{\watt}$ steht dann noch am Ausgang des Dämpfungsglieds zur Verfügung.
|
||||
|
||||
@@ -9,20 +26,27 @@ Bei ohmschen Dämpfungsgliedern erfolgt die Dämpfung durch Umwandlung der einge
|
||||
[question:AD804]
|
||||
[question:AD805]
|
||||
|
||||
Ein symmetrisches Dämpfungsglied kann z.B. als T oder Pi-Netzwerk aus Widerständen aufgebaut werden. Die Namensgebung resultiert hierbei aus dem Erscheinungsbild der Widerstandsanordnung in der Schaltung.
|
||||
Ein symmetrisches Dämpfungsglied kann z.B. als T oder $\pi$-Netzwerk aus Widerständen aufgebaut werden. Die Namensgebung resultiert hierbei aus dem Erscheinungsbild der Widerstandsanordnung in der Schaltung.
|
||||
|
||||
<margin>
|
||||
[picture:342:daempfungsglied_pi:Dämpfungsglied in PI-Konfiguration mit Quelle und Lastwiderstand]
|
||||
</margin>
|
||||
<indepth>
|
||||
Die Widerstandswerte für ein $\pi$-Dämpfungsglied für eine Impedanz von $\qty{50}{\ohm}$ können mit den folgenden Formeln berechnet werden:
|
||||
|
||||
<margin>
|
||||
[picture:341:daempfungsglied_t:Dämpfungsglied in T-Konfiguration mit Quelle und Lastwiderstand]
|
||||
</margin>
|
||||
$R_1 = R_3 = \qty{50}{\ohm} \cdot \left( \frac{10^{\frac{a}{20}}+1}{10^{\frac{a}{20}}-1}\right)$
|
||||
|
||||
%TODO: EVTL. PI ALS SONDERZEICHEN EINFÜGEN
|
||||
|
||||
[question:AD801]
|
||||
[question:AD802]
|
||||
Dabei ist $a$ die gewünschte Dämpfung in $\unit{\dB}$.
|
||||
|
||||
$R_2 = \frac{\qty{50}{\ohm}}{2} \cdot \left( 10^{\frac{a}{20}} - \frac{1}{10^{\frac{a}{20}}}\right)$
|
||||
|
||||
Die Widerstandswerte für ein T-Dämpfungsglied für eine Impedanz von $\qty{50}{\ohm}$ können mit den folgenden Formeln berechnet werden:
|
||||
|
||||
$R_1 = R_2 = \qty{50}{\ohm} \cdot \left( \frac{10^{\frac{a}{20}}-1}{10^{\frac{a}{20}}+1} \right)$
|
||||
|
||||
$R_3 = 2\cdot \qty{50}{\ohm} \cdot \left( \frac{10^{\frac{a}{20}}}{10^{\frac{a}{10}}-1} \right)$
|
||||
|
||||
<webonly>
|
||||
[include:applet_daempfungsglied]
|
||||
</webonly>
|
||||
|
||||
</indepth>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
Ein Dämpfungsglied mit $\qty{20}{\decibel}$ Dämpfung verringert die Leistung um den Faktor $\num{100}$.
|
||||
|
||||
Das Leistungsverhältnis ergibt sich aus:
|
||||
|
||||
$\qty{20}{\decibel} = 10 \cdot \log_{10}\left(\frac{P_\mathrm{IN}}{P_\mathrm{RL}}\right)$
|
||||
|
||||
Daraus folgt:
|
||||
|
||||
$\frac{P_\mathrm{IN}}{P_\mathrm{RL}} = 10^{\frac{20}{10}} = 10^2 = 100$
|
||||
|
||||
Das Leistungsverhältnis zwischen Eingangsleistung und der Leistung am Lastwiderstand beträgt somit $\num{100}$.
|
||||
@@ -0,0 +1,11 @@
|
||||
Ein Dämpfungsglied mit $\qty{6}{\decibel}$ Dämpfung verringert die Leistung ungefähr um den Faktor $\num{4}$.
|
||||
|
||||
Das Leistungsverhältnis ergibt sich aus:
|
||||
|
||||
$\qty{6}{\decibel} = 10 \cdot \log_{10}\left(\frac{P_\mathrm{IN}}{P_\mathrm{RL}}\right)$
|
||||
|
||||
Daraus folgt:
|
||||
|
||||
$\frac{P_\mathrm{IN}}{P_\mathrm{RL}} = 10^{\frac{6}{10}} \approx \num{3,98} \approx \num{4}$
|
||||
|
||||
Das Leistungsverhältnis zwischen Eingangsleistung und der Leistung am Lastwiderstand beträgt somit ungefähr $\num{4}$.
|
||||
@@ -0,0 +1,13 @@
|
||||
Ein symmetrisches $\qty{50}{\ohm}$-Dämpfungsglied ist so dimensioniert, dass es bei einem Abschluss mit $\qty{50}{\ohm}$ auch an seinem Eingang wieder eine Impedanz von $\qty{50}{\ohm}$ zeigt.
|
||||
|
||||
Da der Lastwiderstand mit
|
||||
|
||||
$R_L = \qty{50}{\ohm}$
|
||||
|
||||
angepasst ist, ist daher zwischen den Punkten $a$ und $b$ ebenfalls eine Impedanz von
|
||||
|
||||
$Z_\mathrm{in} = \qty{50}{\ohm}$
|
||||
|
||||
messbar.
|
||||
|
||||
Die gesuchte Impedanz beträgt somit $\qty{50}{\ohm}$.
|
||||
@@ -0,0 +1,13 @@
|
||||
Ein Dämpfungsglied mit $\qty{20}{\decibel}$ Dämpfung verringert die Leistung um den Faktor $\num{100}$.
|
||||
|
||||
Bei einer eingespeisten Leistung von $\qty{100}{\watt}$ gelangen daher nur
|
||||
|
||||
$P_\mathrm{Aus} = \frac{\qty{100}{\watt}}{100} = \qty{1}{\watt}$
|
||||
|
||||
zum angepassten Lastwiderstand $R_L$.
|
||||
|
||||
Die restliche Leistung wird im Dämpfungsglied in Wärme umgesetzt:
|
||||
|
||||
$P_\mathrm{V} = \qty{100}{\watt} - \qty{1}{\watt} = \qty{99}{\watt}$
|
||||
|
||||
Im Dämpfungsglied werden somit insgesamt $\qty{99}{\watt}$ in Wärme umgesetzt.
|
||||
Reference in New Issue
Block a user