refactor: restwelligkeit
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
<b>50 Hz / 100 Hz Brummton</b>
|
||||
<p>
|
||||
Hier kannst du Brummtöne mit den Frequenzen $\qty{50}{\hertz}$ und $\qty{100}{\hertz}$ anhören.
|
||||
</p>
|
||||
|
||||
<div class="d-flex gap-2 flex-wrap">
|
||||
<button type="button" class="btn btn-primary" onclick="playRippleTone(50)">
|
||||
Play 50 Hz
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-primary" onclick="playRippleTone(100)">
|
||||
Play 100 Hz
|
||||
</button>
|
||||
|
||||
<button type="button" class="btn btn-secondary" onclick="stopTone()">
|
||||
Stopp
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<p id="toneStatus" class="mt-3 mb-0 text-muted">
|
||||
Kein Ton aktiv.
|
||||
</p>
|
||||
|
||||
<script>
|
||||
let audioContext = null;
|
||||
let sourceNode = null;
|
||||
let gainNode = null;
|
||||
|
||||
function ensureAudioContext() {
|
||||
if (!audioContext) {
|
||||
audioContext = new (window.AudioContext || window.webkitAudioContext)();
|
||||
}
|
||||
|
||||
if (audioContext.state === "suspended") {
|
||||
audioContext.resume();
|
||||
}
|
||||
}
|
||||
|
||||
function smoothstep(x) {
|
||||
x = Math.max(0, Math.min(1, x));
|
||||
return x * x * (3 - 2 * x);
|
||||
}
|
||||
|
||||
function rippleShape(phase) {
|
||||
/*
|
||||
phase: 0 ... 1
|
||||
|
||||
Modell:
|
||||
- Start unten
|
||||
- relativ schneller, weicher Anstieg
|
||||
- abgerundeter Scheitel
|
||||
- langsamer, nahezu linearer Abfall
|
||||
|
||||
Das ist keine exakte Netzteil-Simulation, sondern eine gut hörbare
|
||||
Näherung an die im Bild gezeigte Restwelligkeit.
|
||||
*/
|
||||
|
||||
const chargePart = 0.36; // Anteil der Periode für den Anstieg
|
||||
|
||||
if (phase < chargePart) {
|
||||
const x = phase / chargePart;
|
||||
|
||||
// schneller Anstieg mit weicher Rundung
|
||||
return -1 + 2 * smoothstep(x);
|
||||
} else {
|
||||
const x = (phase - chargePart) / (1 - chargePart);
|
||||
|
||||
// langsamer Abfall, leicht geglättet
|
||||
return 1 - 2 * x;
|
||||
}
|
||||
}
|
||||
|
||||
function createRippleBuffer(frequency) {
|
||||
const sampleRate = audioContext.sampleRate;
|
||||
|
||||
/*
|
||||
1 Sekunde Buffer:
|
||||
Bei 50 Hz enthält er 50 Perioden,
|
||||
bei 100 Hz enthält er 100 Perioden.
|
||||
Dadurch läuft der Loop sauber.
|
||||
*/
|
||||
const duration = 1.0;
|
||||
const length = Math.round(sampleRate * duration);
|
||||
const buffer = audioContext.createBuffer(1, length, sampleRate);
|
||||
const data = buffer.getChannelData(0);
|
||||
|
||||
let sum = 0;
|
||||
|
||||
for (let i = 0; i < length; i++) {
|
||||
const t = i / sampleRate;
|
||||
const phase = (t * frequency) % 1;
|
||||
const value = rippleShape(phase);
|
||||
|
||||
data[i] = value;
|
||||
sum += value;
|
||||
}
|
||||
|
||||
/*
|
||||
Gleichanteil entfernen.
|
||||
Eine echte Ausgangsspannung hätte z. B. 12 V DC plus kleine Welligkeit.
|
||||
Lautsprecher sollen aber nur den hörbaren Wechselanteil bekommen.
|
||||
*/
|
||||
const mean = sum / length;
|
||||
|
||||
let maxAbs = 0;
|
||||
|
||||
for (let i = 0; i < length; i++) {
|
||||
data[i] -= mean;
|
||||
maxAbs = Math.max(maxAbs, Math.abs(data[i]));
|
||||
}
|
||||
|
||||
// Normalisieren
|
||||
if (maxAbs > 0) {
|
||||
for (let i = 0; i < length; i++) {
|
||||
data[i] /= maxAbs;
|
||||
}
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
function playRippleTone(frequency) {
|
||||
ensureAudioContext();
|
||||
stopTone(false);
|
||||
|
||||
const buffer = createRippleBuffer(frequency);
|
||||
|
||||
sourceNode = audioContext.createBufferSource();
|
||||
gainNode = audioContext.createGain();
|
||||
|
||||
sourceNode.buffer = buffer;
|
||||
sourceNode.loop = true;
|
||||
|
||||
// moderate Lautstärke mit kurzem Fade-in gegen Knackser
|
||||
gainNode.gain.setValueAtTime(0.0, audioContext.currentTime);
|
||||
gainNode.gain.linearRampToValueAtTime(0.2, audioContext.currentTime + 0.03);
|
||||
|
||||
sourceNode.connect(gainNode);
|
||||
gainNode.connect(audioContext.destination);
|
||||
|
||||
sourceNode.start();
|
||||
|
||||
document.getElementById("toneStatus").textContent =
|
||||
frequency + " Hz geformter Brummton aktiv.";
|
||||
}
|
||||
|
||||
function stopTone(updateStatus = true) {
|
||||
if (sourceNode && gainNode && audioContext) {
|
||||
const now = audioContext.currentTime;
|
||||
|
||||
try {
|
||||
gainNode.gain.cancelScheduledValues(now);
|
||||
gainNode.gain.setValueAtTime(gainNode.gain.value, now);
|
||||
gainNode.gain.linearRampToValueAtTime(0.0, now + 0.03);
|
||||
sourceNode.stop(now + 0.04);
|
||||
} catch (e) {
|
||||
// Falls bereits gestoppt
|
||||
}
|
||||
|
||||
sourceNode = null;
|
||||
gainNode = null;
|
||||
}
|
||||
|
||||
if (updateStatus) {
|
||||
document.getElementById("toneStatus").textContent = "Kein Ton aktiv.";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -16,8 +16,6 @@ In dem nebenstehenden Applet ist ein solcher Brückengleichrichter dargestellt.
|
||||
</margin>
|
||||
</webonly>
|
||||
|
||||
Am Lastwiderstand $R_L$ liegt eine pulsierende Gleichspannung (DC) an, die aus aufeinanderfolgenden positiven sinusförmigen Halbwellen besteht. Ihre Frequenz beträgt $f=\qty{100}{\hertz}$, da beim Brückengleichrichter auch die negative Halbwelle in den positiven Bereich gespiegelt wird und sich so die Netzfrequenz von $\qty{50}{\hertz}$ verdoppelt.
|
||||
|
||||
<tip>
|
||||
[picture:67:a_brueckenlgeichrichter_2:Anordnung der Dioden im Brückengleichrichter]
|
||||
Beim Brückengleichrichter zeigen die Dioden mit ihren Kathoden zum Pluspol hin und die Anoden zum Minuspol. Man kann sich also merken: Die "Striche" der Dioden treffen sich am Plusausgang. Diese Anordnung darf nicht mit einem Diodenringmischer verwechselt werden, welchen wir noch später kennenlernen werden.
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
Da keine Schaltung ideal arbeitet, entsteht in jeder Gleichrichterschaltung am Ausgang eine Gleichspannung mit einer überlagerten Wechselspannung. Diesen Restwechselspannungsanteil nennt man auch Restwelligkeit.
|
||||
Diese Spannung kann mit einem Oszilloskop betrachtet werden, indem man nur den Wechselspannungsanteil oszilloskopiert (siehe Abbildung [ref:a_AC-Kopplung]: AC-Kopplung des Eingangs).
|
||||
Da keine Schaltung ideal arbeitet, liegt am Lastwiderstand $R_L$ eines Gleichrichters keine vollkommen konstante Gleichspannung an, sondern eine pulsierende Spannung. Sie entsteht aus den aufeinanderfolgenden positiven sinusförmigen Halbwellen und der Glättungswirkung der Kondensatoren. Diesen verbleibenden Wechselspannungsanteil bezeichnet man als Restwelligkeit.
|
||||
Ihre Frequenz beträgt $f=\qty{100}{\hertz}$, da auch die negative Halbwelle in den positiven Bereich gespiegelt wird und sich so die Netzfrequenz von $\qty{50}{\hertz}$ verdoppelt. Würde man diese pulsierende Gleichspannung über einen Spannungsteiler in einen Verstärker mit Lautsprecher einspeisen, dann könnte man einen $\qty{100}{\hertz}$ Brummton hören.
|
||||
|
||||
<webonly>
|
||||
<margin>
|
||||
[include:applet_brumm]
|
||||
</margin>
|
||||
</webonly>
|
||||
|
||||
[question:AD310]
|
||||
|
||||
Diese Spannung kann mit einem Oszilloskop betrachtet werden, indem man nur den Wechselspannungsanteil oszilloskopiert (siehe Abbildung [ref:a_AC-Kopplung]: AC-Kopplung des Eingangs).
|
||||
|
||||
<indepth>
|
||||
[photo:306:a_AC-Kopplung:AC - DC Kopplung des Oszilloskopeingangs]
|
||||
Mit der Taste "GD" wird der Eingang des Oszilloskops auf Null Volt geschaltet.
|
||||
Bei nicht gedrückter Taste AC/DC erfolgt eine kapazitive Kopplung des Oszilloskopeingangs und es wird nur der Wechselspannungsanteil des Eingangssignals angezeigt.
|
||||
Bei gedrückter Taste AC/DC erfolgt eine galvanische Kopplung des Oszilloskopeingangs und der Gleichspannungsanteil einer Wechselspannung wird auch angezeigt.
|
||||
% todo Oszi-Bild der Restwelligkeit
|
||||
</indepth>
|
||||
|
||||
Die Periodendauer des Brummanteils beträgt 10 ms. Daraus lässt sich die Brummfrequenz berechnen.
|
||||
%todo Formel f=1/T
|
||||
$f = \frac{1}{T}$
|
||||
Die Amplitude der Brummspannung beträgt genau ein Kästchen bei einem Maßstab von $\qty{3}{\volt\per\oszidiv}$.
|
||||
In der Folgenden Frage muss Frequenz als auch die Amplitude der Restwelligkeit bestimmt werden.
|
||||
|
||||
---
|
||||
[question:AD309]
|
||||
<margin>
|
||||
Lösungshilfe
|
||||
AD 309: $\qty{3}{\volt}$; $\qty{100}{\hertz}$
|
||||
</margin>
|
||||
[question:AD309]
|
||||
@@ -31,9 +31,3 @@ Gleiche Eselsbrücke wie beim Brückengleichrichter: Die beiden Kathoden der Dio
|
||||
Wenn zwei Anoden gemeinsam an einem Ausgangspol angeschlossen sind, dann wird dort die pulsierende Gleichspannung negativ gegenüber der Mittelanzapfung des Trafos sein. Beide Halbwellen befinden sich unterhalb der Nulllinie.
|
||||
|
||||
[question:AD308]
|
||||
|
||||
Wie schon beim Brückengleichrichter, liegt beim Vollweggleichrichter am Lastwiderstand $R_L$ eine pulsierende Gleichspannung (DC) an, die aus aufeinanderfolgenden positiven sinusförmigen Halbwellen besteht. Ihre Frequenz beträgt $f=\qty{100}{\hertz}$, da auch die negative Halbwelle in den positiven Bereich gespiegelt wird und sich so die Netzfrequenz von $\qty{50}{\hertz}$ verdoppelt. Würde man diese pulsierende Gleichspannung über einen Spannungsteiler in einen Verstärker mit Lautsprecher einspeisen, dann könnte man einen $\qty{100}{\hertz}$ Brummton hören.
|
||||
|
||||
%TODO $\qty{50}{\hertz}$ und $\qty{100}{\hertz}$ durch anklicken hörbar
|
||||
|
||||
[question:AD310]
|
||||
@@ -0,0 +1,5 @@
|
||||
Die Periodendauer des Brummanteils beträgt $\qty{10}{\milli\second}$. Daraus lässt sich die Brummfrequenz berechnen:
|
||||
|
||||
$f = \frac{1}{T} = \frac{1}{\qty{10}{\milli\second}} = \qty{100}{\hertz}$
|
||||
|
||||
Die Amplitude der Brummspannung beträgt genau ein Kästchen bei einem Maßstab von $\qty{3}{\volt\per\oszidiv}$.
|
||||
Reference in New Issue
Block a user