refactor: restwelligkeit

This commit is contained in:
Matthias Jung
2026-05-17 11:14:43 +02:00
parent 3ca411c980
commit 8fa5795450
5 changed files with 188 additions and 21 deletions
+168
View File
@@ -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.
+15 -13
View File
@@ -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]
+5
View File
@@ -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}$.