22  Leitungen, Reflexion und Anpassung

Kapitel 18 hat eine Frage absichtlich offen gelassen. Eine Batterie, ein Schalter, eine Lampe — aber das Kabel dazwischen ist ein Ungetüm: Es läuft erst einen halben Kilometer nach rechts, dann einen halben Kilometer zurück. Lampe und Batterie stehen dabei direkt nebeneinander auf demselben Tisch. Du legst den Schalter um. Wann leuchtet die Lampe — nach der Laufzeit durchs lange Kabel? Sofort? Oder irgendetwas dazwischen? Die Frage hat 2021 als Veritasium-Video Millionen Zuschauer gespalten, und die ehrliche Antwort ist keine der griffigen Parolen, sondern eine Kurve: die Spannung an der Lampe als Funktion der Zeit. Am Ende dieses Kapitels rechnest du diese Kurve selbst — mit einem Simulator aus zwanzig Zeilen NumPy — und sie wird verblüffender aussehen, als beide Lager es sich vorgestellt haben.

Unterwegs sammelt das Kapitel ein, was seit Teil II überall angeschrieben steht und nie erklärt wurde: 50 Ω. Die Zahl steht auf jedem Funkgerät, jedem Oszilloskop-Eingang, jedem Antennenkabel — und die Yagi aus Kapitel 11 hatte ausgerechnet 19 Ω am Speisepunkt, was der Bauplan mit einem „Anpassglied” kurierte, dessen Theorie wir schuldig blieben. Dieses Kapitel zahlt die Schuld: Es verbindet die Schaltkreis-Sprache aus Kapitel 19 (Spannung, Strom, Widerstand) mit der Feld-Sprache aus Kapitel 4 und 6 (Welle, Wellenwiderstand, Reflexion) — und zeigt, dass die Spiegelformel aus Kapitel 6 wortwörtlich auch für Kabel gilt.

Lernziele

Nach diesem Kapitel kannst du …

  1. … erklären, warum ein Kabel eine Leitung ist: Die Telegrafengleichungen sind das 1D-Maxwell aus Kapitel 5 in Schaltkreis-Kleidern, mit Wellenwiderstand \(Z_0 = \sqrt{L'/C'}\) und Tempo \(v = 1/\sqrt{L'C'}\) — und du kannst \(Z_0\) eines Koaxkabels aus seiner Geometrie ausrechnen,
  2. … die Reflexion am Leitungsende mit der Spiegelformel \(r = (R_L - Z_0)/(R_L + Z_0)\) vorhersagen und die drei Grenzfälle (offen, kurzgeschlossen, angepasst) im Zeitbereich deuten,
  3. … mit einem Puls und einer Uhr Kabelfehler orten (Zeitbereichs-Reflektometrie) und aus dem Stehwellenmuster das SWR ablesen,
  4. … einen \(\lambda/4\)-Transformator dimensionieren (\(Z = \sqrt{Z_0 R_L}\)), seine Schmalbandigkeit erklären und die 19-Ω-Yagi ans 50-Ω-Kabel anpassen,
  5. … die Lampenfrage quantitativ beantworten: Die Spannung an der Last wächst als Reflexions-Treppe, und der Kirchhoff-Stromkreis ist ihr Grenzwert.
import numpy as np
import matplotlib.pyplot as plt

22.1 Die Leitung: ein Feld in Schaltkreis-Kleidern

Was ist ein Kabel, physikalisch? Kapitel 18 hat es mit der \(\vec S\)-Karte beantwortet: Bei einer Zweidraht- oder Koaxialleitung fließt die Energie im Feld zwischen den Leitern, nicht im Metall — das Metall führt das Feld nur, wie ein Flussbett das Wasser. Zwischen den Leitern steht ein E-Feld (quer) und um die Leiter ein B-Feld (ringsum), und beide wandern als Welle die Leitung entlang.

Nun könnte man jede Leitung als 3D-Feldproblem rechnen — aber für eine Welle, die brav längs läuft, ist das Verschwendung. Quer zur Leitung sieht das Feld an jeder Stelle \(x\) gleich geformt aus, nur seine Stärke ändert sich mit \(x\) und \(t\). Also genügen zwei Zahlen pro Querschnitt, und es sind alte Bekannte aus Kapitel 19:

  • die Spannung \(U(x,t)\) — das E-Feld quer integriert (welchen Schubs pro Ladung das Querfeld liefert),
  • der Strom \(I(x,t)\) — das B-Feld einmal um den Innenleiter herum aufgelaufen (Durchflutungssatz, Kapitel 3).

Die Maxwell-Gleichungen für das geführte Feld werden dann zu zwei Gleichungen für \(U\) und \(I\), den Telegrafengleichungen:

\[\frac{\partial U}{\partial x} = -L'\,\frac{\partial I}{\partial t}, \qquad \frac{\partial I}{\partial x} = -C'\,\frac{\partial U}{\partial t}.\]

Dabei ist \(C'\) die Kapazität pro Meter (wie viel Ladung die Leiter pro Volt Querspannung speichern) und \(L'\) die Induktivität pro Meter (wie viel Fluss der Strom um sich wickelt). Und jetzt schau genau hin — diese Struktur kennst du Zeichen für Zeichen aus Kapitel 4 und 5:

1D-Maxwell (Kap. 4/5) Leitung Bedeutung
\(E\) \(U\) die „elektrische” Größe
\(B\) \(I\) die „magnetische” Größe
\(\mu_0\) \(L'\) Trägheit der magnetischen Seite
\(\varepsilon_0\) \(C'\) Speicherfähigkeit der elektrischen Seite
\(c = 1/\sqrt{\mu_0\varepsilon_0}\) \(v = 1/\sqrt{L'C'}\) Wellentempo
\(Z_0 = \sqrt{\mu_0/\varepsilon_0} = 377\ \Omega\) \(Z_0 = \sqrt{L'/C'}\) Wellenwiderstand

Alles, was wir seit Kapitel 5 über 1D-Wellen wissen, gilt deshalb wortwörtlich für Kabel: Es laufen Wellen mit dem Tempo \(v\) in beide Richtungen, auf einer laufenden Welle sind beide Größen fest verkoppelt (\(U = Z_0 I\), das Gegenstück zu \(E = cB\)), und an jeder Stoßstelle zweier Wellenwiderstände wird mit der Spiegelformel aus Kapitel 6 reflektiert. Der Wellenwiderstand des Vakuums, der uns seit Kapitel 6 begleitet, war nie eine Exotin der Feldtheorie — er ist dasselbe Konzept, das auf jedem Kabel als Aufdruck steht.

22.1.1 Warum ausgerechnet 50 Ω? Eine Handrechnung

Für ein Koaxkabel (Innenleiter-Durchmesser \(d\), Schirm-Innendurchmesser \(D\), dazwischen Kunststoff mit \(\varepsilon_r\)) liefern die Feldbilder aus Teil I die beiden Beläge: Das radiale E-Feld einer Linienladung und das Ring-B-Feld eines Stroms, jeweils integriert, ergeben

\[C' = \frac{2\pi\varepsilon_0\varepsilon_r}{\ln(D/d)}, \qquad L' = \frac{\mu_0}{2\pi}\,\ln(D/d) \quad\Longrightarrow\quad Z_0 = \frac{377\ \Omega}{2\pi\sqrt{\varepsilon_r}}\,\ln\frac{D}{d} \approx \frac{60\ \Omega}{\sqrt{\varepsilon_r}}\,\ln\frac{D}{d}.\]

Die Zahlen fürs Standard-Laborkabel RG-58: Innenleiter \(d = 0{,}9\) mm, Schirm innen \(D = 2{,}95\) mm, Polyethylen mit \(\varepsilon_r = 2{,}25\). Erst der Logarithmus: \(\ln(2{,}95/0{,}9) = \ln(3{,}28) = 1{,}19\). Dann der Vorfaktor: \(60/\sqrt{2{,}25} = 60/1{,}5 = 40\ \Omega\). Zusammen \(Z_0 = 40 \cdot 1{,}19 = 47{,}5\ \Omega\) — das ist die 50 mit Fertigungstoleranz. Und das Tempo? \(v = c/\sqrt{\varepsilon_r} = c/1{,}5 = 2 \cdot 10^8\) m/s — auf Datenblättern steht das als „Verkürzungsfaktor 0,66”. Eine Welle braucht für 100 m Kabel also 500 ns. Diese zwei Zahlen — \(Z_0 = 50\ \Omega\), \(v = 2\cdot 10^8\) m/s — sind die Bühne des ganzen Kapitels. (Warum die Industrie gerade bei 50 gelandet ist und das Fernsehen bei 75, erzählt das Kleingedruckte.)

Bevor wir bauen, die Fehlvorstellung, um die sich alles dreht:

WarnungNaheliegende Vermutung

„Ein Kabel ist ein Verbindungsstrich im Schaltplan. Sobald der Stromkreis geschlossen ist, gelten Ohm und Kirchhoff — überall und sofort.”

Warum sie naheliegt: Im Alltag stimmt sie immer. Jede Schaltung, die du je gesteckt hast, gehorchte den Kirchhoff-Regeln, und der Schaltplan kennt für ein Kabel kein Symbol — es ist der Strich zwischen den Bauteilen.

Was stattdessen stimmt: Der Strich ist eine Leitung mit Laufzeit. Was du an einem Ende tust, erfährt das andere Ende frühestens nach \(l/v\) — bis dahin kann dort kein Ohmsches Gesetz „wissen”, was passiert ist. Kirchhoff gilt erst, wenn die Leitung kürzer ist als alles, was sich währenddessen ändert: \(l \ll \lambda\) — wieder das Leitmotiv des Buchs, dass nur Verhältnisse zur Wellenlänge zählen. Bei 50 Hz ist \(\lambda = 6000\) km, da ist jedes Hauskabel ein Strich. Bei einer 1-ns-Signalflanke ist die „Wellenlänge” 20 cm — da ist schon das USB-Kabel eine Leitung. Dieses Kapitel lebt in der Welt, in der der Strich Laufzeit hat; am Ende sehen wir zu, wie Kirchhoff aus ihr herauswächst.

22.2 Das Leitungs-Labor

Wir bauen den Simulator — und weil die Telegrafengleichungen das 1D-Maxwell in neuen Kleidern sind, ist er ein alter Bekannter: das Wellenlabor aus Kapitel 6, mit \(U\) statt \(E\) und \(I\) statt \(B\). Neu sind allein die Enden. In Kapitel 6 endete die Welt an Spiegeln oder im Mur-Nichts; eine Leitung endet in Bauteilen — links eine Quelle mit Innenwiderstand, rechts eine Last.

Frage: Reproduziert der Simulator die Spiegelformel an einer ohmschen Last? Bühne: 100 m RG-58 (\(Z_0 = 50\ \Omega\), \(v = 2\cdot10^8\) m/s), aufgeteilt in 1001 \(U\)-Punkte im Abstand \(\Delta x = 10\) cm, dazwischen 1000 \(I\)-Punkte (der Yee-Versatz aus Kapitel 5); Zeitschritt am magischen Punkt \(S = 1\), also \(\Delta t = \Delta x / v = 0{,}5\) ns. Quelle: links eine Thevenin-Quelle — ideale Spannungsquelle \(U_q(t)\) hinter \(R_q = 50\ \Omega\) (so sieht jeder Laborgenerator aus; und weil \(R_q = Z_0\), schluckt sie zurücklaufende Echos, statt sie wieder loszuschicken). Last: rechts ein Widerstand \(R_L\), den wir durchprobieren. Messgrößen: \(U(t)\) an einer Sonde bei \(x = 30\) m — erst läuft der Hinpuls vorbei, später das Echo; das Amplitudenverhältnis (mit Vorzeichen) ist \(r\). Erfolgskriterium: \(r = (R_L - Z_0)/(R_L + Z_0)\) für alle Lasten.

Vorher der Vorhersage-Punkt zu den zwei Extremfällen:

WichtigVorhersage-Punkt

Am offenen Ende kann kein Strom fließen, am kurzgeschlossenen Ende keine Spannung anliegen. Welche Vorzeichen haben die beiden Echos eines positiven Spannungspulses? Und welche Bauteile aus Kapitel 6 spielten exakt dieselben Rollen — für das E-Feld?

Der Kern des Simulators in zwei Zeilen plus zwei Rändern:

N = 1001                 # U-Punkte; I lebt auf den 1000 Lücken
DX = 0.1                 # m  → 100 m Leitung
V_TEMPO = 2.0e8          # m/s (Koax: Verkürzungsfaktor 0,66)
DT = DX / V_TEMPO        # S = 1: der magische Zeitschritt (Kap. 5/8)
Z0 = 50.0                # Ohm
X = np.arange(N) * DX

def leitung(schritte, signal, r_quelle, r_last, z_profil=None,
            sonden=(), merke=(), huelle_ab=None):
    """Telegrafen-FDTD: U auf ganzen, I auf halben Gitterpunkten."""
    # np.full(n, wert): Array voller gleicher Werte — überall Z0,
    # außer ein eigenes Profil ist gegeben (für Stoßstellen später)
    z = np.full(N, Z0) if z_profil is None else z_profil
    c_strich = 1.0 / (z * V_TEMPO)         # C' auf den U-Punkten
    l_strich = 0.5 * (z[1:] + z[:-1]) / V_TEMPO   # L' auf den I-Punkten
    U, I = np.zeros(N), np.zeros(N - 1)
    a_q = 2 * DT / (c_strich[0] * DX)      # Randfaktoren: dazu gleich
    a_l = 2 * DT / (c_strich[-1] * DX)     # mehr im Text
    pegel = {s: [] for s in sonden}
    bilder, huelle = {}, np.zeros(N)
    for n in range(1, schritte + 1):
        # innen: wortwörtlich der Kapitel-5-Kern (E→U, B→I)
        I -= DT / (l_strich * DX) * np.diff(U)
        U[1:-1] -= DT / (c_strich[1:-1] * DX) * np.diff(I)
        # links: Thevenin-Quelle (halbe Zelle, semi-implizit)
        u_q = signal(n * DT)
        U[0] = ((1 - a_q / (2 * r_quelle)) * U[0]
                + a_q * (u_q / r_quelle - I[0])) / (1 + a_q / (2 * r_quelle))
        # rechts: ohmsche Last (halbe Zelle, semi-implizit)
        if r_last == np.inf:               # offenes Ende: R → ∞
            U[-1] = U[-1] + a_l * I[-1]
        else:
            U[-1] = ((1 - a_l / (2 * r_last)) * U[-1]
                     + a_l * I[-1]) / (1 + a_l / (2 * r_last))
        for s in sonden:
            pegel[s].append(U[s])
        if n in merke:
            bilder[n] = U.copy()
        if huelle_ab is not None and n >= huelle_ab:
            huelle = np.maximum(huelle, np.abs(U))
    return U, I, pegel, bilder, huelle

print(f"Labor bereit: {N*DX:.0f} m, Δt = {DT*1e9:.1f} ns, "
      f"Laufzeit einfach = {N*DX/V_TEMPO*1e9:.0f} ns")
Labor bereit: 100 m, Δt = 0.5 ns, Laufzeit einfach = 500 ns

Die zwei Innen-Zeilen sind der Kapitel-5-Leapfrog mit neuen Namen — die brauchen keine neue Anatomie. Die Ränder schon, denn dort steckt die neue Physik. Auseinandergefaltet für die Last (die Quelle funktioniert spiegelbildlich): Der letzte \(U\)-Punkt vertritt nur eine halbe Gitterzelle — rechts von ihm ist keine Leitung mehr, sondern das Bauteil. Diese halbe Zelle ist ein kleiner Kondensator mit der Ladungsbilanz

\[\underbrace{C'\,\tfrac{\Delta x}{2}\,\frac{dU_{\text{Ende}}}{dt}}_{\text{halbe Zelle lädt sich}} \;=\; \underbrace{I_{\text{letzte}}}_{\text{was die Leitung anliefert}} \;-\; \underbrace{U_{\text{Ende}}/R_L}_{\text{was die Last abzweigt}},\]

nichts als Knotenregel plus Ohm. Daraus wird die Code-Zeile, indem man \(dU/dt\) als Differenzenquotient schreibt und — der Trick aus der Wärmebilanz von Kapitel 19 — \(U_{\text{Ende}}\) im Ohm-Term zeitzentriert mittelt (halb alter, halb neuer Wert): Das sortiert sich zu dem Bruch mit den \((1 \mp a/2R)\)-Faktoren im Code und bleibt auch für sehr kleine \(R_L\) stabil. Der Faktor \(a = 2\Delta t/(C'\Delta x)\) ist dabei nur die Abkürzung für „Zeitschritt geteilt durch halbe Zellkapazität”.

Jetzt die Eichung — fünf Lasten, eine Formel:

# von oben: leitung(), DT, Z0 (Leitungs-Labor)
T_PULS = 60e-9
puls = lambda t: np.exp(-((t - T_PULS) / 12e-9)**2)
SONDE = 300                                # Sonde bei x = 30 m

print("Last            r gemessen   Spiegelformel")
for name, r_l in (("angepasst (50)", 50.0), ("offen      ", np.inf),
                  ("kurz       ", 1e-9), ("200 Ω      ", 200.0),
                  ("19 Ω (Yagi)", 19.0)):
    _, _, pegel, _, _ = leitung(13000, puls, 50.0, r_l, sonden=(SONDE,))
    u = np.array(pegel[SONDE])
    t = np.arange(1, 13001) * DT
    hin = u[t < 400e-9]                    # Hinlauf passiert die Sonde
    echo = u[(t > 700e-9) & (t < 1500e-9)] # das Echo (hin + zurück)
    r_mess = echo[np.argmax(np.abs(echo))] / hin[np.argmax(np.abs(hin))]
    r_theo = (0.0 if r_l == 50 else
              1.0 if r_l == np.inf else (r_l - Z0) / (r_l + Z0))
    print(f"{name}      {r_mess:+.5f}      {r_theo:+.5f}")
Last            r gemessen   Spiegelformel
angepasst (50)      -0.00000      +0.00000
offen            +1.00000      +1.00000
kurz             -1.00000      -1.00000
200 Ω            +0.60000      +0.60000
19 Ω (Yagi)      -0.44928      -0.44928

Alle fünf exakt, auf fünf Nachkommastellen. Die Vorhersage: Das offene Ende wirft den Puls mit \(+1\) zurück (die Ladung staut sich, die Spannung verdoppelt sich kurzzeitig am Ende) — für die Spannung ist es das, was die PEC-Wand in Kapitel 6 fürs E-Feld nicht war: Dort erzwang der Spiegel \(E = 0\) und warf mit \(-1\) zurück. Genau andersherum der Kurzschluss: Er erzwingt \(U = 0\) und spiegelt mit \(-1\) — der Kurzschluss ist die „PEC-Wand der Spannungswelt”. Und die 19-Ω-Yagi am 50-Ω-Kabel wirft \(r = -0{,}449\) zurück: fast die Hälfte der Spannungsamplitude läuft rückwärts. Was das für die Leistung heißt, klärt der übernächste Abschnitt — erst machen wir aus dem Echo ein Werkzeug.

22.3 Mit der Uhr Fehler orten: TDR

Dreh die Logik um: Wenn jede Störstelle ein Echo wirft, dann verrät das Echo die Störstelle. Puls hineinschicken, auf die Uhr schauen — aus der Echo-Verzögerung \(t_E\) folgt der Ort \(x = v\,(t_E - t_0)/2\) (hin und zurück!), aus dem Vorzeichen die Art des Fehlers. Das heißt Zeitbereichs-Reflektometrie (TDR), und es ist Alltagstechnik: Jeder Ethernet-Chip ortet so Kabelbrüche, Energieversorger finden damit Fehler in kilometerlangen Erdkabeln, ohne zu graben.

Frage: Finden wir einen Kabelbruch auf 100 m blind auf den Meter genau? Bühne: das Labor von oben, aber das Kabel ist bei \(x = 62\) m gebrochen — Leiter durchtrennt, dahinter kommt nichts mehr an; wir modellieren den Bruch als Sprung auf ein extrem hochohmiges Reststück (50 kΩ — praktisch offen). Messgröße: \(U(t)\) an einer Sonde direkt am Anfang. Erfolgskriterium: Echo-Vorzeichen positiv (offenes Ende!), Ort aus der Laufzeit stimmt.

# von oben: leitung(), puls, T_PULS, DT, V_TEMPO, N, Z0, X
z_bruch = np.full(N, Z0)
z_bruch[620:] = 50000.0          # Bruch bei x = 62 m: dahinter „offen"
_, _, pegel_tdr, _, _ = leitung(13000, puls, 50.0, 50000.0,
                                z_profil=z_bruch, sonden=(5,))
u_tdr = np.array(pegel_tdr[5])
t = np.arange(1, 13001) * DT

i_echo = np.argmax(np.abs(u_tdr[t > 300e-9]))
t_echo = t[t > 300e-9][i_echo]
ort = V_TEMPO * (t_echo - T_PULS) / 2

fig, ax = plt.subplots(figsize=(7.0, 3.4))
ax.plot(t * 1e9, u_tdr, "b-", lw=1.3)
ax.axvline(T_PULS * 1e9, color="gray", ls=":", lw=0.9)
ax.axvline(t_echo * 1e9, color="r", ls="--", lw=1)
ax.set_xlim(0, 1500)
ax.set_xlabel("t (ns)"); ax.set_ylabel("U am Kabelanfang (V)")
ax.set_title(f"Echo nach {1e9*(t_echo - T_PULS):.0f} ns "
             f"→ Bruch bei x = {ort:.1f} m")
ax.grid(alpha=0.3)
plt.show()
Abbildung 22.1: TDR in der Praxis: Bei t = 60 ns geht der Puls hinein (grau gepunktet), bei t = 680 ns kommt sein Echo zurück (rot gestrichelt) — positiv, also ein offenes Ende. Die Laufzeit-Rechnung v·(t_E − t_0)/2 ortet den Bruch bei 62 m, auf die Gitterzelle genau. Ein intaktes, angepasst abgeschlossenes Kabel hätte gar kein Echo geliefert.

Das positive Echo nach 620 ns sagt: offenes Ende bei \(2\cdot10^8 \cdot 620\,\text{ns}/2 = 62\) m. Kein Aufschrauben, kein Graben — ein Puls und eine Uhr.

Im Film sieht man das Werkzeug bei der Arbeit — der Puls läuft, am Bruch dreht er um, und der Titel führt die Ortungs-Rechnung live mit. Sieh beim Aufprall genau hin: Für einen Moment verdoppelt sich die Spannung am Bruch — das ist die \(+1\)-Reflexion in Aktion (einlaufende plus reflektierte Welle, beide in voller Höhe übereinander):

Code der Animation (nur in der HTML-Fassung)
# von oben: leitung(), puls, z_bruch, X, DT, V_TEMPO, T_PULS
from matplotlib import animation
from IPython.display import HTML

# bis Schritt 1500 (= 750 ns): das Echo ist bei 680 ns zurück und
# absorbiert — länger zu filmen hieße leere Leitung zeigen
TAKTE = tuple(range(50, 1501, 50))
_, _, _, bilder_tdr, _ = leitung(1500, puls, 50.0, 50000.0,
                                 z_profil=z_bruch, merke=TAKTE)

fig_a, ax_a = plt.subplots(figsize=(7.0, 3.2))

def film_tdr(j):
    n = TAKTE[j]
    ax_a.clear()
    # gezeigt wird nur die reale Welt bis zum Bruch — dahinter ist
    # beim echten Kabel nichts (unser 50-kΩ-Modellstück bleibt Kulisse)
    ax_a.plot(X[X <= 62.0], bilder_tdr[n][X <= 62.0], "b-", lw=1.3)
    ax_a.axvline(62.0, color="r", ls="--", lw=1)
    ax_a.text(57.5, 0.9, "Bruch", color="r")
    ax_a.set_xlim(0, 66); ax_a.set_ylim(-0.3, 1.1)
    ax_a.set_xlabel("x (m)"); ax_a.set_ylabel("U (V)")
    t_ns = n * DT * 1e9
    ax_a.set_title(f"t = {t_ns:5.0f} ns — Echo erwartet bei "
                   f"t = {T_PULS*1e9 + 2*62/V_TEMPO*1e9:.0f} ns")

anim = animation.FuncAnimation(fig_a, film_tdr, frames=len(TAKTE),
                               interval=110)
plt.close(fig_a)
HTML(anim.to_jshtml(default_mode="loop"))

Und weil TDR ein Rätselspiel ist, hier die Spielwiese dazu: Unten ist ein Kabel mit verstecktem Zustand simuliert — Stellschrauben sind Fehlerort und Lastart. Stell etwas ein, sage das Echobild vorher (Wann? Welches Vorzeichen? Wie groß?), und prüfe dich. Schaffst du es, aus R_LAST = 50 und einem Bruch kein zweites Echo zu bekommen? (Warum nicht?)

22.4 Stehwellen und das SWR

Der Puls war die Diagnose — jetzt der Normalbetrieb: ein Sender, der dauerhaft sendet, auf ein Kabel mit fehlangepasster Last. Hinlaufende und reflektierte Welle überlagern sich dann permanent, und das gibt das Muster aus Kapitel 6: eine teilstehende Welle. Ihre Hüllkurve wogt zwischen \(U_{\max} = (1 + |r|)\,U_{\text{hin}}\) (wo sich beide addieren) und \(U_{\min} = (1 - |r|)\,U_{\text{hin}}\) (wo sie gegeneinander arbeiten). Das Verhältnis

\[\text{SWR} \;=\; \frac{U_{\max}}{U_{\min}} \;=\; \frac{1 + |r|}{1 - |r|}\]

heißt Stehwellenverhältnis und ist die Kennzahl der Funkpraxis: Sie ist mit einer simplen Spannungsmessung längs der Leitung bestimmbar, ohne Phasen, ohne Oszilloskop — deshalb zeigt jedes Antennenmessgerät SWR an. Perfekte Anpassung: SWR = 1. Totalreflexion: SWR = ∞.

Frage: Welches SWR macht die 19-Ω-Yagi auf dem 50-Ω-Kabel — und stimmt die Bauplan-Zahl? Bühne: das Labor, Dauerstrich mit \(f_0 = 20\) MHz (Wellenlänge auf dem Kabel: \(v/f_0 = 10\) m — zehn Bäuche auf 100 m), sanft angefahren; Last 19 Ω. Messgröße: die \(|U|\)-Hüllkurve über die letzte Periode, daraus \(U_{\max}/U_{\min}\) (Ränder ausgenommen). Erfolgskriterium: Für ohmsche Lasten \(R_L < Z_0\) ist \(|r| = (Z_0 - R_L)/(Z_0 + R_L)\) und damit SWR \(= Z_0/R_L = 50/19 = 2{,}63\).

# von oben: leitung(), DT, Z0, X, N
F0 = 20e6
def sinus(t):
    return min(t / 100e-9, 1.0) * np.sin(2 * np.pi * F0 * t)

_, _, _, _, huelle = leitung(24000, sinus, 50.0, 19.0, huelle_ab=23500)
innen = slice(100, 900)
swr = huelle[innen].max() / huelle[innen].min()

fig, ax = plt.subplots(figsize=(7.0, 3.4))
ax.plot(X, huelle, "b-", lw=1.4)
ax.axhline(huelle[innen].max(), color="r", ls="--", lw=0.9)
ax.axhline(huelle[innen].min(), color="r", ls="--", lw=0.9)
ax.set_xlabel("x (m)"); ax.set_ylabel("|U|-Hüllkurve (V)")
ax.set_title(f"SWR gemessen: {swr:.3f}   (Theorie 50/19 = {50/19:.3f})")
ax.grid(alpha=0.3)
plt.show()

r19 = (19 - Z0) / (19 + Z0)
print(f"|r| = {abs(r19):.3f} → Wirkleistung in die Last: "
      f"1 − |r|² = {1 - r19**2:.3f}")
Abbildung 22.2: Die Hüllkurve der Spannung auf dem Kabel mit 19-Ω-Last im Dauerstrich: eine teilstehende Welle mit Bäuchen und flachen Tälern im λ/2-Abstand von 5 m. Das Verhältnis der gestrichelten Linien ist das SWR = 2,63 = exakt 50/19 — die Zahl, die der Yagi-Bauplan aus Kapitel 11 für den Direktanschluss nennt. Direkt an der Last (x = 100 m) liegt ein Spannungs-Tal: Die 19 Ω sind kleiner als Z₀, die Last drückt die Spannung.
|r| = 0.449 → Wirkleistung in die Last: 1 − |r|² = 0.798

Zwei Lesarten dieser Zahl. Erstens die Leistungsbilanz: Reflektiert wird der Anteil \(|r|^2 = 0{,}20\) der Leistung — 80 % kommen trotzdem an. Genau deshalb sagt der Yagi-Bauplan, der Direktanschluss „funktioniert zum Experimentieren”: Ein SWR von 2,6 klingt dramatisch, kostet aber nur ein Fünftel der Leistung (etwa 1 dB). Wofür sich die Anpass-Mühe wirklich lohnt: Senderendstufen mögen die rücklaufende Welle nicht (sie heizt die Endtransistoren), und auf langen Kabeln läuft das Echo doppelt durch die Kabeldämpfung. Zweitens die Topologie: An der Last selbst sitzt ein Spannungs-Tal, denn \(R_L < Z_0\) zieht viel Strom bei wenig Spannung — eine Last mit \(R_L > Z_0\) hätte dort einen Bauch. Auch das Stehwellenmuster trägt also Information über die Last, nicht nur ihre Stärke.

22.5 Anpassen: der λ/4-Transformator

Wie wird man die Reflexion los, ohne die Last zu ändern? Die elegante Antwort ist ein Stück Leitung mit einem dritten Wellenwiderstand — und die Idee dahinter kennst du aus Kapitel 14: Interferenz. Schaltet man zwischen das 50-Ω-Kabel und die 19-Ω-Last ein Zwischenstück, gibt es zwei Stoßstellen und damit zwei Echos. Ist das Zwischenstück genau \(\lambda/4\) lang, sammelt das zweite Echo auf seinem Umweg (hin und zurück durchs Stück) einen Gangunterschied von \(\lambda/2\) — es kommt gegenphasig zum ersten zurück. Und sorgt man zusätzlich dafür, dass beide Echos gleich stark sind, löschen sie sich vollständig: Dafür müssen die Sprungverhältnisse an beiden Stößen gleich sein, \(Z_T/Z_0 = R_L/Z_T\), also

\[Z_T \;=\; \sqrt{Z_0 \, R_L} \;=\; \sqrt{50 \cdot 19}\ \Omega \;=\; 30{,}8\ \Omega.\]

Das geometrische Mittel — die Anpassung „auf halbem logarithmischem Weg”. Ob es funktioniert, prüfen wir breitbandig mit dem Trick aus Kapitel 10: ein Puls, dessen Spektrum alle Frequenzen um \(f_0\) enthält, dann Hinlauf und Echo getrennt fourier-transformiert — der Quotient ist \(|r|(f)\) für alle Frequenzen aus einem einzigen Lauf.

WichtigVorhersage-Punkt

Die \(\lambda/4\)-Bedingung gilt bei einer Frequenz: Für \(f_0 = 20\) MHz ist das Stück \(\lambda/4 = 2{,}5\) m lang. Was passiert bei 10 MHz, wo dasselbe Stück nur \(\lambda/8\) ist — und bei 40 MHz (\(\lambda/2\))? Skizziere \(|r|(f)\), bevor du weiterliest.

# von oben: leitung(), DT, Z0, X, N, F0, SONDE
LAMBDA = V_TEMPO / F0                        # 10 m auf dem Kabel
z_trafo = np.full(N, Z0)
im_stueck = (X >= 70.0) & (X < 70.0 + LAMBDA / 4)
z_trafo[im_stueck] = np.sqrt(50.0 * 19.0)    # 30,8 Ω, 2,5 m lang
z_trafo[X >= 70.0 + LAMBDA / 4] = 19.0       # dahinter 19-Ω-Welt

def traeger_puls(t):
    return np.exp(-((t - 80e-9) / 15e-9)**2) * np.sin(2 * np.pi * F0 * t)

_, _, pegel_tr, _, _ = leitung(16000, traeger_puls, 50.0, 19.0,
                               z_profil=z_trafo, sonden=(SONDE,))
u_tr = np.array(pegel_tr[SONDE])
t16 = np.arange(1, 16001) * DT
hinlauf = np.where(t16 <= 500e-9, u_tr, 0.0)   # erst kommt der Hinlauf,
ruecklauf = np.where(t16 > 500e-9, u_tr, 0.0)  # ab 500 ns nur noch Echo
freq = np.fft.rfftfreq(len(u_tr), DT)
r_von_f = np.abs(np.fft.rfft(ruecklauf)) / np.abs(np.fft.rfft(hinlauf))

fig, ax = plt.subplots(figsize=(7.0, 3.6))
fenster = (freq > 8e6) & (freq < 32e6)
ax.plot(freq[fenster] / 1e6, r_von_f[fenster], "b-", lw=1.8,
        label="mit λ/4-Transformator")
ax.axhline(abs(r19), color="r", ls="--", lw=1.2,
           label=f"ohne Anpassung: |r| = {abs(r19):.2f}")
ax.axvline(20, color="gray", ls=":", lw=0.9)
ax.set_xlabel("f (MHz)"); ax.set_ylabel("|r|")
ax.set_title("Anpassung perfekt — bei genau einer Frequenz")
ax.legend(); ax.grid(alpha=0.3)
plt.show()

i20 = np.argmin(np.abs(freq - F0))
print(f"|r|(20 MHz) = {r_von_f[i20]:.4f}")
Abbildung 22.3: Der Reflexionsfaktor über der Frequenz, gemessen mit einem einzigen Puls (FFT von Hinlauf und Echo, Kapitel-10-Methode). Ohne Anpassung läge |r| konstant bei 0,45 (rot gestrichelt). Das 30,8-Ω-Stück von 2,5 m Länge drückt die Reflexion bei f₀ = 20 MHz auf exakt null — aber nur dort: Schon ±5 MHz daneben ist die Hälfte des Effekts verloren. Der λ/4-Transformator ist ein Präzisionswerkzeug für eine Frequenz, kein Breitbandheilmittel.
|r|(20 MHz) = 0.0000

Die V-Kurve beantwortet den Vorhersage-Punkt: Bei 20 MHz verschwindet die Reflexion vollständig (\(|r| = 0{,}0000\) — Interferenz ist kein Näherungstrick), zu beiden Seiten wächst sie wieder, und bei 40 MHz (\(\lambda/2\)-Stück: die Echos kommen gleichphasig zurück) wäre die Anpassung komplett wirkungslos. Dieses Muster solltest du wiedererkennen: Es ist die Physik der Antireflex-Beschichtung auf Brillengläsern und Kameraobjektiven — eine \(\lambda/4\)-Schicht mit dem geometrischen Mittel der Brechungsindizes, perfekt im Grünen, schwächer am Rand des Spektrums (deshalb schimmern vergütete Linsen violett: Rot und Blau überleben). Kapitel 27 baut daraus mehrlagige Spiegel und Filter. Und die Querverbindung nach hinten: Die σ-Rampe aus Kapitel 6 — sanft statt schlagartig wechseln — ist die breitbandige Schwester dieser Idee; Übung 22.3 lässt beide gegeneinander antreten.

22.6 Die Lampe: Kirchhoff als Grenzwert

Jetzt die Eingangsfrage. Wir bauen sie im Labor nach, mit einer ehrlichen Vereinfachung: Unser Simulator kennt nur die Leitung selbst (das TEM-Feld zwischen den Leitern — die zusätzliche direkte Funk-Kopplung zwischen Batterie und Lampe über die Luft ist Kapitel-21-Physik und kommt am Ende zu Wort). Bühne: Batterie \(U_q = 1\) V mit Innenwiderstand \(R_q = 25\ \Omega\), Schalter mit sanfter Flanke (20 ns — kein realer Schalter springt unendlich schnell, und ein Ein-Schritt-Sprung würde die Nyquist-Zickzack-Mode des Gitters anregen, Kapitel 8/10), dann 100 m Kabel, am Ende die „Lampe” als 200-Ω-Widerstand. Beachte: Quelle und Last sind beide fehlangepasst (\(25 \ne 50 \ne 200\)) — Echos werden also an beiden Enden weitergereicht. Messgröße: \(U(t)\) an der Lampe. Erfolgskriterium: Kirchhoff am Ende — \(U_\infty = U_q R_L/(R_L + R_q) = 200/225 = 0{,}889\) V.

WichtigVorhersage-Punkt

Drei Kandidaten für die Lampenspannung kurz nach dem ersten Eintreffen der Welle (\(t\) knapp über 500 ns): (a) noch null, (b) schon der Kirchhoff-Wert 0,889 V, (c) etwas anderes — größer? kleiner? Rechne mit, was die Welle mitbringen kann: Sie startet als Spannungsteiler aus \(R_q\) und \(Z_0\) (nicht \(R_L\)! — von der Last weiß sie noch nichts) und wird an der Lampe mit \(1 + r_L\) „empfangen”.

# von oben: leitung(), DT, Z0, N
R_Q, R_LAMPE = 25.0, 200.0
T_AN = 20e-9
def schalter(t):
    # sin²-Rampe: startet exakt bei 0, glatt — dann konstant 1
    return np.sin(np.pi * t / (2 * T_AN))**2 if t < T_AN else 1.0

_, _, pegel_l, _, _ = leitung(30000, schalter, R_Q, R_LAMPE,
                              sonden=(N - 1,))
u_lampe = np.array(pegel_l[N - 1])
t30 = np.arange(1, 30001) * DT

# die Reflexions-Treppe von Hand: Startwelle = Spannungsteiler aus
# R_q und Z0; jeder Umlauf multipliziert mit r_Lampe·r_Quelle
r_q = (R_Q - Z0) / (R_Q + Z0)          # = −1/3
r_l = (R_LAMPE - Z0) / (R_LAMPE + Z0)  # = +0,6
u_start = Z0 / (R_Q + Z0)              # = 2/3 V
T_LAUF = N * DX / V_TEMPO              # 500 ns
stufen_t, stufen_u = [T_LAUF], [0.0]
for k in range(8):
    u_k = u_start * (1 + r_l) * sum((r_l * r_q)**j for j in range(k + 1))
    stufen_t += [(2 * k + 1) * T_LAUF, (2 * k + 3) * T_LAUF]
    stufen_u += [u_k, u_k]

fig, ax = plt.subplots(figsize=(7.2, 3.8))
ax.plot(t30 * 1e6, u_lampe, "b-", lw=1.6, label="Simulation: U an der Lampe")
ax.plot(np.array(stufen_t) * 1e6, stufen_u, "r--", lw=1.1,
        label="Reflexions-Treppe (Theorie)")
ax.axhline(R_LAMPE / (R_LAMPE + R_Q), color="gray", ls=":",
           label="Kirchhoff: $R_L/(R_L+R_q)$ = 0,889 V")
ax.set_xlim(0, 8); ax.set_ylim(-0.05, 1.18)
ax.set_xlabel("t (µs)"); ax.set_ylabel("U (V)")
ax.set_title("Die Lampe sieht eine Treppe — Kirchhoff ist ihr Grenzwert")
ax.legend(fontsize=8, loc="center right")
ax.grid(alpha=0.3)
plt.show()

print("Stufe  Simulation  geometrische Reihe")
for k, t_test in enumerate((0.7e-6, 1.7e-6, 2.7e-6, 3.7e-6)):
    theo = u_start * (1 + r_l) * sum((r_l * r_q)**j for j in range(k + 1))
    i = np.argmin(np.abs(t30 - t_test))
    print(f"  {k+1}     {u_lampe[i]:.4f}      {theo:.4f}")
print(f"Endwert {u_lampe[-1]:.4f}   Kirchhoff {R_LAMPE/(R_LAMPE+R_Q):.4f}")
Abbildung 22.4: Die Antwort auf die Lampenfrage: Die Spannung an der Lampe (blau) bleibt exakt eine Laufzeit lang null, springt dann auf 1,07 V — ÜBER den Endwert! — und nähert sich in einer Treppe mit 1 µs Stufenbreite (ein Echo-Umlauf) dem Kirchhoff-Wert 0,889 V (grau gepunktet). Jede Stufe liegt exakt auf der Reflexions-Theorie (rot gestrichelt): die geometrische Reihe der an beiden Enden hin- und herreflektierten Teilwellen. Der vertraute Stromkreis aus Kapitel 19 ist der Grenzwert dieser Treppe.
Stufe  Simulation  geometrische Reihe
  1     1.0667      1.0667
  2     0.8533      0.8533
  3     0.8960      0.8960
  4     0.8875      0.8875
Endwert 0.8889   Kirchhoff 0.8889

Die Auflösung des Vorhersage-Punkts ist Kandidat (c) — und zwar größer: Die erste Stufe ist \(u_{\text{start}}(1 + r_L) = \tfrac{2}{3} \cdot 1{,}6 = 1{,}067\) V, über dem Endwert. Eine Laufzeit lang weiß die Welle nichts von der 200-Ω-Lampe; sie startet mit dem Spannungsteiler aus \(R_q\) und dem Wellenwiderstand — das Kabel verhält sich in der ersten halben Mikrosekunde exakt wie ein 50-Ω-Widerstand, obwohl nirgends einer verbaut ist. Erst die Echos handeln dann schrittweise aus, was Kirchhoff „schon immer wusste”: Stufe um Stufe, jede um den Umlauffaktor \(r_L\,r_q = -0{,}2\) kleiner und abwechselnd über und unter dem Ziel, kollabiert die Wellenlösung auf die Stromkreislösung. Ohm und Kirchhoff sind keine Grundgesetze neben Maxwell — sie sind das, was von Maxwell übrig bleibt, wenn alle Echos verklungen sind. Für die 100-m-Leitung dauert das ein paar Mikrosekunden; für die 30-cm-Strippen auf deinem Steckbrett ein paar Nanosekunden — deshalb merkt der Alltag nichts davon.

Und die Veritasium-Pointe mit der Lampe 1 m neben der Batterie? In unserem Leitungsmodell bleibt die Lampe exakt eine Kabel-Laufzeit dunkel, egal wie nah sie steht. Im realen Experiment kommt hinzu, was Kapitel 21 vermessen hat: Der Stromstoß beim Einschalten ist ein Knick — Batterieschleife und Lampenschleife sind auch zwei winzige Antennen, und ein sehr kleiner Teil der Energie springt nach \(1\,\text{m}/c \approx 3\) ns direkt durch die Luft hinüber. „Die Lampe leuchtet sofort ein bisschen” und „der volle Strom braucht die Leitung” sind beide wahr — es ist dieselbe Treppe, nur mit einem winzigen Funken-Vorboten auf Stufe null.

Der Film zeigt beides synchron — links die Welle auf dem Kabel (sieh zu, wie sie an beiden Enden reflektiert wird), rechts die wachsende Treppe an der Lampe:

Code der Animation (nur in der HTML-Fassung)
# von oben: leitung(), schalter, R_Q, R_LAMPE, X, DT, N,
#           u_lampe, t30, stufen_t, stufen_u
from matplotlib import animation
from IPython.display import HTML

TAKTE_L = tuple(range(150, 12001, 150))
_, _, _, bilder_l, _ = leitung(12000, schalter, R_Q, R_LAMPE,
                               merke=TAKTE_L)

fig_b, (ax_k, ax_t) = plt.subplots(1, 2, figsize=(7.4, 3.2),
                                   gridspec_kw={"width_ratios": [1.2, 1]})
fig_b.subplots_adjust(bottom=0.17, top=0.88, wspace=0.28)

def film_lampe(j):
    n = TAKTE_L[j]
    for ax in (ax_k, ax_t):
        ax.clear()
    ax_k.plot(X, bilder_l[n], "b-", lw=1.4)
    ax_k.axhline(R_LAMPE / (R_LAMPE + R_Q), color="gray", ls=":", lw=0.8)
    ax_k.set_xlim(0, 100); ax_k.set_ylim(-0.05, 1.18)
    ax_k.set_xlabel("x (m)"); ax_k.set_ylabel("U (V)")
    ax_k.set_title(f"Welle auf dem Kabel — t = {n * DT * 1e6:.2f} µs",
                   fontsize=10)
    bis = n
    ax_t.plot(t30[:bis] * 1e6, u_lampe[:bis], "b-", lw=1.4)
    ax_t.plot(np.array(stufen_t) * 1e6, stufen_u, "r--", lw=0.9)
    ax_t.axhline(R_LAMPE / (R_LAMPE + R_Q), color="gray", ls=":", lw=0.8)
    ax_t.set_xlim(0, 6); ax_t.set_ylim(-0.05, 1.18)
    ax_t.set_xlabel("t (µs)")
    ax_t.set_title("U an der Lampe", fontsize=10)

anim = animation.FuncAnimation(fig_b, film_lampe, frames=len(TAKTE_L),
                               interval=120)
plt.close(fig_b)
HTML(anim.to_jshtml(default_mode="loop"))

Zum Selberspielen: Wie ändert sich die Treppe, wenn die Quelle angepasst ist (R_QUELLE = 50 — sage vorher: wie viele Stufen bleiben übrig?), wenn die Lampe fast ein Kurzschluss ist (R_LAMPE = 5), oder wenn beide Widerstände vertauscht sind?

22.7 Das Kapitel-Programm

programme/kap22/kap22_leitungen.py bündelt alle Befunde eigenständig, jeden gegen die Theorie geprüft: die Eichung der Reflexionsfaktoren auf die Spiegelformel (offen \(+1\), kurz \(-1\), angepasst \(0\), 19 Ω \(\to -0{,}449\) wie bei der Yagi), die TDR-Ortung des Kabelbruchs auf die Gitterzelle genau, das Stehwellenverhältnis \(\text{SWR} = 2{,}632 = 50/19\) mit 80 % Wirkleistung, den \(\lambda/4\)-Transformator mit \(|r|(f_0) = 0\) (und seiner schmalbandigen V-Kurve) und die Lampen-Treppe, deren Stufen auf fünf Stellen auf der geometrischen Reihe gegen den Kirchhoff-Endwert \(0{,}889\) laufen — die erste Stufe \(1{,}067\) darüber. Reines NumPy, kein Meep; Laufzeit wenige Sekunden.

TippMerkkasten
  • Jedes Kabel ist eine Leitung: Die Telegrafengleichungen sind 1D-Maxwell in U/I-Sprache, mit \(Z_0 = \sqrt{L'/C'}\) (Koax: \(\approx 60/\sqrt{\varepsilon_r}\cdot\ln(D/d)\) Ω) und \(v = 1/\sqrt{L'C'}\). „Verbindungsstrich” ist der Grenzfall \(l \ll \lambda\).
  • Reflexion am Ende = Spiegelformel: \(r = (R_L - Z_0)/(R_L + Z_0)\); offen \(+1\), kurz \(-1\), angepasst \(0\). Reflektierte Leistung \(|r|^2\), angekommene \(1 - |r|^2\).
  • TDR: Echo-Laufzeit ortet die Störstelle (\(x = v\,\Delta t/2\)), das Vorzeichen nennt ihre Art. SWR \(= (1+|r|)/(1-|r|)\) — für ohmsche Lasten unter \(Z_0\) einfach \(Z_0/R_L\).
  • λ/4-Transformator: \(Z_T = \sqrt{Z_0 R_L}\) löscht die Reflexion durch Interferenz der beiden Stoß-Echos — exakt, aber nur bei \(f_0\) (dieselbe Physik wie die Antireflex-Schicht auf Brillengläsern).
  • Kirchhoff ist der Grenzwert: Nach einem Schaltvorgang nähert sich die Lastspannung dem Stromkreiswert als Reflexions-Treppe (Umlauffaktor \(r_L r_q\)); die erste Stufe sieht nur \(R_q\) und \(Z_0\) — das Kabel wirkt anfangs als Widerstand von \(Z_0\) Ohm.

Roter Faden

Rückwärts: Die Spiegelformel aus Kapitel 6 wurde zur Last-Reflexion (und der Kurzschluss zur PEC-Wand der Spannungswelt), der Kapitel-5-Leapfrog läuft hier wortwörtlich in neuen Variablen, die Interferenz aus Kapitel 14 löscht im λ/4-Stück die Reflexion, die FFT-Methode aus Kapitel 10 misst \(|r|(f)\) aus einem einzigen Puls, die zeitzentrierte Bilanz aus Kapitel 19 stabilisiert die Last-Randbedingung, und die Lampenfrage aus Kapitel 18 hat ihre Kurve bekommen — mit dem Knick aus Kapitel 21 als Erklärung für den winzigen Luftweg-Vorboten. Der Yagi-Bauplan aus Kapitel 11 ist um seine Theorie ergänzt: 19 Ω heißt SWR 2,6, heißt 80 % ohne und 100 % mit λ/4-Anpassung. Nach vorn: Kapitel 23 schaltet viele angepasste Antennen zum schwenkbaren Array, Kapitel 24 baut die Yagi zu Ende (NEC-Maße, Anpassglied, Balun), Kapitel 25 fragt, was passiert, wenn die Antenne selbst viel kleiner als \(\lambda\) ist (ihr Strahlungswiderstand stürzt ab — und 50-Hz-Funk stirbt endgültig), und Kapitel 27 stapelt λ/4-Schichten zu Spiegeln, Filtern und Resonatoren.

Übungen

Ü 22.1 (Verstehen). (a) Fernseh- und Satellitenkabel haben \(Z_0 = 75\ \Omega\) bei \(\varepsilon_r = 1{,}4\) (geschäumtes Dielektrikum). Welches Durchmesserverhältnis \(D/d\) braucht das? (b) Dein USB-Kabel ist 1 m lang, die Signalflanken dauern 0,1 ns. Ist das Kabel ein „Verbindungsstrich” oder eine Leitung? Rechne die Flankenlänge auf dem Kabel aus (\(v \approx 2\cdot10^8\) m/s) und vergleiche.

# (a) Z0 = 60/sqrt(eps_r) · ln(D/d)  →  D/d = exp(Z0·sqrt(eps_r)/60)
verhaeltnis = np.exp(75 * np.sqrt(1.4) / 60)
print(f"(a) D/d = {verhaeltnis:.2f}")
# (b) Flankenlänge = v · Anstiegszeit
flanke = 2e8 * 0.1e-9
print(f"(b) Flankenlänge = {flanke*100:.0f} cm auf 100 cm Kabel")
(a) D/d = 4.39
(b) Flankenlänge = 2 cm auf 100 cm Kabel

(a) \(D/d \approx 4{,}4\) — deshalb sind 75-Ω-Kabel bei gleichem Innenleiter dicker als 50-Ω-Kabel. (b) Die Flanke ist nur 2 cm lang — auf einem 1-m-Kabel ist sie eine Welle, die fünfzigmal hineinpasst. USB ist eine Leitung durch und durch: Ohne durchgehend kontrollierte 90 Ω (differentiell) und Terminierung käme an den Echos kein Bit mehr vorbei. Der „Verbindungsstrich” endet heute nicht bei Funkfrequenzen, sondern bei jeder schnellen Digitalflanke.

Ü 22.2 (Verändern). Ein Kabel liefert zwei Echos: ein schwaches negatives nach 300 ns und ein starkes positives nach 700 ns. Stelle die Situation im TDR-Labor nach (Tipp: eine gequetschte Stelle hat lokal kleineres \(Z_0\)) und erkläre beide Echos. Warum ist das zweite Echo nicht einfach \(r = +1\)?

Negativ nach 300 ns: eine Störstelle mit \(Z < Z_0\) bei \(x = v \cdot (300\,\text{ns} - t_0)/2\)… wir rechnen mit dem Puls bei \(t_0 = 60\) ns: \(x = 2\cdot10^8 \cdot 240\,\text{ns}/2 = 24\) m. Positiv nach 700 ns: offenes Ende bei 64 m.

# von oben: leitung(), puls, T_PULS, DT, V_TEMPO, N, Z0, X
z_doppel = np.full(N, Z0)
z_doppel[235:245] = 30.0        # Quetschung: 1 m mit 30 Ω bei x = 24 m
z_doppel[640:] = 50000.0        # Bruch (offen) bei x = 64 m
_, _, pegel_d, _, _ = leitung(13000, puls, 50.0, 50000.0,
                              z_profil=z_doppel, sonden=(5,))
t = np.arange(1, 13001) * DT
fig, ax = plt.subplots(figsize=(7.0, 3.2))
ax.plot(t * 1e9, pegel_d[5], "b-", lw=1.2)
ax.set_xlim(0, 1200); ax.set_xlabel("t (ns)"); ax.set_ylabel("U (V)")
ax.set_title("Zwei Störstellen, zwei Echos — jede mit eigener Signatur")
ax.grid(alpha=0.3)
plt.show()

Die Quetschung wirft mit \(r = (30-50)/(30+50) = -0{,}25\) ein negatives Teilecho und lässt den Rest durch — der dann am Bruch mit \(+1\) reflektiert wird. Das zweite Echo ist trotzdem kleiner als der volle Puls, denn es musste zweimal durch die Quetschung: hinein mit der Spannungstransmission \(1 + r\), heraus mit \(1 - r\), zusammen \(1 - r^2 \approx 0{,}94\) — und an jedem Quetschungsrand zweigt zusätzlich ein Mini-Mehrfachecho ab. TDR-Profis lesen aus solchen Echo-Ketten ganze Kabeltrassen wie ein Protokoll.

Ü 22.3 (Verändern). Der λ/4-Trafo ist schmalbandig. Ersetze das 2,5-m-Stück durch einen Taper: \(Z(x)\) läuft über 10 m exponentiell (also linear im Logarithmus) von 50 Ω auf 19 Ω. Miss \(|r|(f)\) mit der Puls-FFT-Methode und vergleiche mit der V-Kurve des λ/4-Trafos. Welche Kapitel-6-Idee ist der Taper?

# von oben: leitung(), traeger_puls, r_von_f, freq, fenster,
#           DT, Z0, X, N, SONDE, r19
z_taper = np.full(N, Z0)
im_taper = (X >= 70.0) & (X < 80.0)
# np.geomspace(a, b, n): n Punkte von a nach b, logarithmisch
# gleichverteilt — genau „exponentiell von 50 auf 19"
z_taper[im_taper] = np.geomspace(50.0, 19.0, im_taper.sum())
z_taper[X >= 80.0] = 19.0
_, _, pegel_tp, _, _ = leitung(16000, traeger_puls, 50.0, 19.0,
                               z_profil=z_taper, sonden=(SONDE,))
u_tp = np.array(pegel_tp[SONDE])
t16 = np.arange(1, 16001) * DT
r_taper = (np.abs(np.fft.rfft(np.where(t16 > 500e-9, u_tp, 0.0)))
           / np.abs(np.fft.rfft(np.where(t16 <= 500e-9, u_tp, 0.0))))
fig, ax = plt.subplots(figsize=(7.0, 3.6))
ax.plot(freq[fenster] / 1e6, r_von_f[fenster], "b-", lw=1.6,
        label="λ/4-Trafo (2,5 m)")
ax.plot(freq[fenster] / 1e6, r_taper[fenster], "g-", lw=1.6,
        label="Exponential-Taper (10 m)")
ax.axhline(abs(r19), color="r", ls="--", lw=1, label="ohne Anpassung")
ax.set_xlabel("f (MHz)"); ax.set_ylabel("|r|")
ax.legend(); ax.grid(alpha=0.3)
ax.set_title("Schmalbandig perfekt oder breitbandig gut")
plt.show()

Der Vergleich zeigt zwei Philosophien: Der λ/4-Trafo glänzt mit seiner exakten Null, aber nur bei \(f_0\). Der Taper hält \(|r|\) über das ganze Band klein (mit eigenen Interferenz-Minima, wo seine 10 m gerade passend ausgehen) — und seine Einhüllende sinkt nach oben hin weiter, denn je kürzer \(\lambda\), desto „sanfter” wirken die 10 m. Das ist wortwörtlich die σ-Rampe aus Kapitel 6 und die Grundidee der PML: Übergänge glätten statt verstecken. Faustregel der HF-Technik: Eine Frequenz → λ/4-Trafo; ein Frequenzband → Taper (oder mehrere λ/4-Stufen — Kapitel 27).

Ü 22.4 (Übertragen). Die Yagi ans Kabel, komplett: Hänge die 19-Ω-Last über einen korrekt dimensionierten λ/4-Transformator ans 50-Ω-Kabel und miss die Leistung in der Last im Dauerstrich bei \(f_0\) — einmal direkt angeschlossen, einmal angepasst. (Leistung an der Last: \(P = U_L \cdot I_L\), im Zeitmittel über eine Periode.) Bestätige 80 % gegen ≈ 100 %.

Wir messen \(P\) direkt am Lastwiderstand als \(\langle U^2\rangle/R_L\) über die letzte Periode und beziehen sie auf die verfügbare Leistung der Quelle (\(P_{\text{max}} = U_q^2/(8 R_q)\) bei \(R_q = Z_0\) — das Maximum, das eine 50-Ω-Quelle überhaupt abgeben kann):

# von oben: leitung(), sinus, z_trafo, DT, Z0, N, F0
def lastleistung(z_profil):
    _, _, pegel, _, _ = leitung(24000, sinus, 50.0, 19.0,
                                z_profil=z_profil, sonden=(N - 1,))
    u = np.array(pegel[N - 1])[-1000:]        # letzte 20 Perioden
    return np.mean(u**2) / 19.0

p_max = 1.0**2 / (8 * 50.0)                   # verfügbare Leistung
p_direkt = lastleistung(None)
p_trafo = lastleistung(z_trafo)
print(f"direkt:    P/P_max = {p_direkt / p_max:.3f}   (Theorie 0,798)")
print(f"mit Trafo: P/P_max = {p_trafo / p_max:.3f}   (Theorie 1,000)")
direkt:    P/P_max = 0.799   (Theorie 0,798)
mit Trafo: P/P_max = 1.001   (Theorie 1,000)

Der Transformator holt die fehlenden 20 % — aus 1 dB Fehlanpassungsverlust wird Anpassung auf Messgenauigkeit. Genau dieses Spiel treibt der Bauplan in Kapitel 24 in echt: Hairpin und Gamma-Glied sind nichts als kompakte Bauformen derselben Impedanz-Übersetzung.

Das Kleingedruckte

Warum 50 und warum 75? Für Koaxkabel mit Luftfüllung hat die Spannungsfestigkeit ihr Optimum bei etwa 30 Ω, die geringste Dämpfung liegt bei etwa 77 Ω — 50 ist der historische Kompromiss aus der Radartechnik der 1930er. Das Fernsehen, dem Dämpfung wichtiger war als Leistung, blieb bei 75 Ω. Beide Zahlen sind also Ingenieurskompromisse, keine Naturkonstanten — im Gegensatz zu den 377 Ω des Vakuums, die seit Kapitel 6 feststehen.

Balun und Mantelwellen. Unser 1D-Modell kennt nur die TEM-Welle zwischen den Leitern. Ein reales Koaxkabel hat noch einen dritten Leiter: die Außenseite des Schirms. Wird ein unsymmetrisches Kabel direkt an eine symmetrische Antenne (Dipol!) geschraubt, fließt ein Teil des Antennenstroms außen auf dem Mantel zurück — der Mantel strahlt mit und verbiegt das Richtdiagramm. Dagegen hilft ein Balun (balanced–unbalanced): bei 2,4 GHz z. B. die λ/4-Mantelhülse aus dem Yagi-Bauplan (§5) — die übrigens nichts anderes ist als ein λ/4-Stück Leitung, das für Mantelströme ein offenes Ende in einen Kurzschluss hochtransformiert. Auch das ist die Mathematik dieses Kapitels, nur auf den dritten Leiter angewandt.

Verluste. Unsere Leitung war verlustfrei; reale Kabel dämpfen (Skin-Effekt im Kupfer, Polarisationsverluste im Dielektrikum — beides wächst mit der Frequenz: RG-58 schluckt bei 2,4 GHz rund 1 dB pro Meter!). In den Telegrafengleichungen ergänzen dafür zwei weitere Beläge (\(R'\) längs, \(G'\) quer) genau die Rolle, die \(\sigma\) in Kapitel 6 spielte. Und wer Lasten anpassen muss, die nicht rein ohmsch sind (die Yagi hatte \(19 + \mathrm{j}1\ \Omega\)!), benutzt dafür seit 1939 eine geniale grafische Karte — das Smith-Diagramm. Es hier einzuführen würde ein eigenes Kapitel kosten; für unsere Zwecke reicht: Auch komplexe Lasten sind mit Leitungsstücken und der Mathematik dieses Kapitels anpassbar.