24  Fallstudie Yagi: Entwurf, Validierung, Bauplan

Das Starlink-Panel aus Kapitel 23 bündelt seinen Strahl mit rund 1500 gespeisten Elementen, ebenso vielen Phasenstellern und einem Rechner, der den Zündplan tausendmal pro Sekunde nachführt. Auf Millionen Dächern steht seit siebzig Jahren eine Antenne, die fast dasselbe leistet — mit einem einzigen Kabel: die Yagi-Uda-Antenne, die klassische Fernseh- und WLAN-Richtantenne. Ein gespeister Dipol, dahinter ein Stab, davor ein paar kürzere Stäbe. Die Stäbe hängen an nichts; sie sind einfach Metall im Raum. Und trotzdem wirft die Antenne fast ihre gesamte Leistung nach vorn.

Wie bringt man tote Metallstäbe dazu, im Takt mitzusenden — und zwar mit genau den richtigen Phasen? Die Antwort macht aus diesem Kapitel das Gegenstück zu Kapitel 23: Die Yagi ist der Zündplan ohne Kabel. Und weil ihre Erfindung so gut dokumentiert ist wie ihre Fallstricke (Kapitel 11 hat die Geschichte unserer eigenen Irrwege erzählt), eignet sie sich wie kein zweites Gerät für eine komplette Fallstudie: vom Wirkprinzip über den rechnerischen Entwurf und seine Vertrauensgrenzen bis zur Stückliste mit Millimetermaßen, die du wirklich bauen kannst.

Lernziele

Nach diesem Kapitel kannst du …

  1. … das Endfire-Rezept aus der Kapitel-23-Werkzeugkiste herleiten (zwei Quellen, \(d = \lambda/4\), \(\Delta\Phi = 90°\) → Kardioide mit exakter Rückwärts-Null),
  2. … erklären, woher ein passives Element seine Phase nimmt: Es ist ein getriebener Resonator — länger als die Resonanz heißt induktiv (Reflektor), kürzer heißt kapazitiv (Direktor) — und du kannst den Umschlag in NEC nachmessen,
  3. … eine Mehrelement-Yagi schrittweise entwerfen (Aufbau- Reihe, Direktorenkette nachstimmen) und die Faustregeln begründen,
  4. … die Vertrauensgrenzen der Rechnung benennen (Segmentierung mit Gültigkeitsfenster, robuste vs. empfindliche Größen, Querrechnung) und die Konsequenz für den Bau ziehen (Abgleich einplanen),
  5. … Bandbreite und SWR der Yagi messen, ihr abruptes Kippen oberhalb der Entwurfsfrequenz erklären und die Anpass-Optionen aus Kapitel 22 zuordnen.
import numpy as np
import matplotlib.pyplot as plt

24.1 Endfire: die Keule längs der Reihe

Kapitel 23 hat die Keule quer zur Strahlerreihe geschwenkt („Breitseite”). Eine Yagi strahlt aber längs ihres Booms — in der Arraysprache: Endfire. Auch dafür liefert „Umweg = Vorsprung” das Rezept, und es ist so hübsch, dass es eine Handrechnung verdient.

Nimm zwei Strahler im Abstand \(d = \lambda/4\) hintereinander, und lass den vorderen um \(\Delta\Phi = 90°\) später zünden. Nach vorn ist der vordere Strahler um \(\lambda/4\) voraus — sein Zeitrückstand von einer Viertelperiode gleicht das exakt aus: volle Verstärkung. Nach hinten addieren sich dagegen Wegrückstand (\(\lambda/4\)) und Zeitrückstand (nochmal \(\lambda/4\)) zu einer halben Wellenlänge: exakte Auslöschung. Eine Richtung bekommt alles, die Gegenrichtung nichts:

# von oben: nichts — zwei Zeiger genügen (Kap.-23-Rechenwerk)
phi = np.linspace(0, 2 * np.pi, 3600, endpoint=False)
kd = 2 * np.pi * 0.25                  # Abstand λ/4
# Element 2 sitzt vorn und zündet 90° später:
P = np.abs(1 + np.exp(1j * (kd * np.cos(phi) - np.pi / 2))) ** 2
print(f"vorn (0°):    {P[0]:.3f}   (Maximum 4 = doppelte Amplitude)")
print(f"hinten (180°): {P[1800]:.2e}  — exakte Null")
vorn (0°):    4.000   (Maximum 4 = doppelte Amplitude)
hinten (180°): 1.50e-32  — exakte Null
# von oben: phi, P
fig = plt.figure(figsize=(5.2, 4.8))
ax = fig.add_subplot(projection="polar")
ax.plot(phi, P / P.max(), "b-", lw=2)
ax.set_theta_zero_location("E")
ax.set_title("Endfire-Paar: die Kardioide\n(0° = vorn, Strahlrichtung)",
             fontsize=10)
plt.show()
Abbildung 24.1: Das Richtdiagramm des Endfire-Paars (zwei Strahler, d = λ/4, der vordere zündet 90° später): eine Kardioide — volle Verstärkung nach vorn (0°), exakte Auslöschung nach hinten (180°), und dazwischen ein weicher Übergang ohne Nebenkeulen. Zwei Quellen und ein Phasenknopf genügen für perfekte Rückwärts-Unterdrückung.

Genau dieses Rezept steckt im Herzen jeder Yagi. Aber als Phased Array gebaut bräuchte es zwei Speiseleitungen, einen Leistungsteiler und einen 90°-Phasenschieber — bei 2,4 GHz alles Präzisionsarbeit (Kapitel 22 lässt grüßen). Die geniale Abkürzung von Shintaro Uda und Hidetsugu Yagi (1926): Die zweite Quelle gibt es gratis. Man stellt einfach einen unbeschalteten Metallstab in das Feld des gespeisten Dipols.

Bevor wir klären, wie der Stab zu seiner Phase kommt — hier die Spielwiese zum Endfire-Rezept. Sage vorher: Was passiert bei D_LAMBDA = 0.5, DPHI_GRAD = 180? (Rechne: Umweg \(\lambda/2\) nach vorn und hinten plus halbe Periode Zeitversatz …) Und findest du eine zweite Kombination mit exakter Rückwärts-Null? (Bedingung: \(k d + \Delta\Phi = 180°\) — es gibt unendlich viele.)

WarnungNaheliegende Vermutung: „Ein passives Element steht nur im Weg“

Naheliegende Vermutung: Ein Metallstab ohne Anschluss kann nicht senden — höchstens abschatten. Die passiven Elemente einer Yagi wirken wie Zaunlatten: Sie blockieren die Strahlung nach hinten und lassen sie nach vorn durch.

Warum sie naheliegt: Im Alltag ist Metall ein Hindernis — ein Blech vor einer Lampe wirft Schatten. Und „senden” verbinden wir mit einem Anschluss: kein Kabel, kein Signal.

Was stattdessen stimmt: Ein Metallstab im Wechselfeld muss senden. Das Feld des gespeisten Dipols treibt die Leitungselektronen im Stab auf und ab — und beschleunigte Ladungen strahlen, das ist das Knick-Argument aus Kapitel 21. Jedes passive Element ist ein vollwertiger Zweitsender; nur seinen Zündplan stellt kein Kabel ein, sondern die Physik des getriebenen Resonators: Die Verstimmung des Stabes legt die Phase seines Stromes fest. Mit Abschattung hat das nichts zu tun — ein einzelner 2-mm-Stab ist für eine 122-mm-Welle fast unsichtbar. Erst die Interferenz von gespeistem und wiederausgesandtem Feld formt die Keule.

24.2 Woher die Phase kommt: der getriebene Resonator

Der Stab ist ein Resonator — das wissen wir seit Kapitel 21: Ein Dipol der Länge \(\approx \lambda/2\) trägt eine Strom-Stehwelle, wie ein Schwingkreis aus verteiltem \(L\) und \(C\) (Kapitel 19). Das Feld des gespeisten Elements wirkt auf ihn wie der Antrieb auf einen Oszillator. Und für getriebene Oszillatoren kennen wir die Regel aus Kapitel 15 und 19: Die Phase der Antwort hängt an der Verstimmung.

  • Ist der Stab länger als seine Resonanzlänge, reagiert er induktiv — sein Strom eilt der antreibenden Spannung nach.
  • Ist er kürzer, reagiert er kapazitiv — der Strom eilt vor.
  • Genau auf Resonanz ist die Antwort am stärksten und in Phase.

Ein paar Prozent Längenunterschied verschieben die Stromphase um Jahrzehnte von Grad — das ist der eingebaute Phasenknopf. Zusammen mit der Laufzeit über den Elementabstand entsteht so (in grober Näherung) das Endfire-Paar von oben: Der Reflektor hinter dem Dipol ist zu lang geraten, der Direktor davor zu kurz — beide Verstimmungen drehen die Phase jeweils in die Richtung, die die Abstrahlung nach vorn sortiert.

Wie groß die Effekte wirklich sind, rechnet kein Daumenargument — dafür holen wir NEC aus Kapitel 11 zurück, das Werkzeug für Drahtantennen. Zuerst die Resonanzlänge selbst. Der Versuchsaufbau: Frage: Bei welcher Länge ist ein einzelner Drahtdipol (Radius 1 mm, frei im Raum, 2450 MHz) resonant — und wie reagiert er daneben? Messgröße: die Eingangsimpedanz \(Z = R + \mathrm{j}X\) für Längen von \(0{,}42\) bis \(0{,}52\,\lambda\); die Resonanz ist der Nulldurchgang des Blindanteils \(X\). Erfolgskriterium: ein sauberer Vorzeichenwechsel von kapazitiv (\(X < 0\)) zu induktiv (\(X > 0\)), deutlich unterhalb der idealen \(0{,}5\,\lambda\) (der Endeffekt — die Dickdraht-Lektion aus Kapitel 21 in Zahlen).

# von oben: nichts Neues — NEC-Bausteine wie in Kap. 11
import necpp

C_LICHT = 299792458.0
F_MHZ = 2450.0
LAM = C_LICHT / (F_MHZ * 1e6)          # ≈ 0,122 m
R_DRAHT = 0.001                        # 1 mm Drahtradius
SEG = 11                               # Segmente pro Element


def dipol_z(l_lambda, seg=SEG):
    """Eingangsimpedanz eines mittengespeisten Einzeldipols."""
    ctx = necpp.nec_create()
    halb = l_lambda * LAM / 2
    necpp.nec_wire(ctx, 1, seg, 0, -halb, 0, 0, halb, 0,
                   R_DRAHT, 1.0, 1.0)
    necpp.nec_geometry_complete(ctx, 0)
    necpp.nec_fr_card(ctx, 0, 1, F_MHZ, 0)
    necpp.nec_ex_card(ctx, 0, 1, (seg + 1) // 2, 0, 1.0, 0, 0, 0, 0, 0)
    # ein Mini-Richtdiagramm (3 Punkte) stößt die Rechnung an
    necpp.nec_rp_card(ctx, 0, 1, 3, 0, 5, 0, 0, 90.0, 0.0, 0.0,
                      180.0, 0.0, 0.0)
    z = complex(necpp.nec_impedance_real(ctx, 0),
                necpp.nec_impedance_imag(ctx, 0))
    necpp.nec_delete(ctx)
    return z


laengen = np.arange(0.42, 0.521, 0.01)
z_reihe = np.array([dipol_z(L) for L in laengen])

# Nulldurchgang von X linear interpolieren
X = z_reihe.imag
i = np.flatnonzero(np.diff(np.sign(X)))[0]
L_res = laengen[i] - X[i] * 0.01 / (X[i + 1] - X[i])
print(f"Resonanz: X = 0 bei L = {L_res:.4f} λ "
      f"(ideal dünner Draht: 0,5 λ)")
Resonanz: X = 0 bei L = 0.4522 λ (ideal dünner Draht: 0,5 λ)
# von oben: laengen, z_reihe, L_res
fig, (a1, a2) = plt.subplots(1, 2, figsize=(7.4, 3.6))
a1.plot(laengen, z_reihe.imag, "bo-")
a1.axhline(0, color="0.6", lw=1)
a1.axvline(L_res, color="tab:red", ls="--", lw=1.2,
           label=f"Resonanz {L_res:.3f} λ")
a1.set_xlabel("Dipollänge (λ)")
a1.set_ylabel("Blindanteil X (Ω)")
a1.set_title("kapazitiv ↔ induktiv", fontsize=10)
a1.legend(fontsize=8)

phase = np.degrees(np.arctan2(-z_reihe.imag, z_reihe.real))
a2.plot(laengen, phase, "go-")
a2.axhline(0, color="0.6", lw=1)
a2.axvline(L_res, color="tab:red", ls="--", lw=1.2)
a2.set_xlabel("Dipollänge (λ)")
a2.set_ylabel("Stromphase (°)")
a2.set_title("der eingebaute Phasenknopf", fontsize=10)
fig.tight_layout()
plt.show()
Abbildung 24.2: Der Einzeldipol als Bauteil (NEC, Radius 1 mm, 2450 MHz): Links der Blindanteil X seiner Eingangsimpedanz über der Länge — unterhalb von 0,452 λ kapazitiv (X < 0), darüber induktiv, mit fast perfekt geradem Durchgang. Rechts die daraus folgende Phasenverschiebung des Stroms, arctan(−X/R): Wenige Hundertstel λ Längenänderung drehen die Phase um Jahrzehnte von Grad. Das ist der Phasenknopf, den die Yagi über die Sägelänge ihrer Stäbe bedient.

Zwei Befunde nimmt der Entwurf gleich mit. Erstens liegt die Resonanz bei \(0{,}452\,\lambda\), fast zehn Prozent unter dem Ideal \(\lambda/2\) — der Endeffekt: An den Stabenden staut sich Ladung, das wirkt wie eine Zusatzkapazität und verkürzt die Resonanzlänge, und zwar umso stärker, je dicker der Draht (unsere 1-mm-Stäbe sind elektrisch „dick”). Wer einen Dipol nach der reinen \(\lambda/2\)-Formel sägt, baut ihn zu lang. Zweitens: Die Phasenkurve rechts ist steil — der Knopf ist empfindlich. Das erklärt vorab, warum Yagis auf Millimeterfehler reagieren werden.

24.3 Die Umschaltkarte: kurz führt, lang wirft zurück

Jetzt das Kernexperiment des Kapitels. Der Versuchsaufbau: Frage: Macht die Verstimmung den Parasiten wirklich zum Direktor oder Reflektor — und wo genau schaltet es um? Bühne: der gespeiste Dipol (\(0{,}473\,\lambda\)) bei \(x = 0\); ein passiver Stab im Abstand \(0{,}15\,\lambda\) hinter ihm (bei \(-x\)); „vorn” ist \(+x\). Messgrößen: der Gewinn nach vorn und nach hinten, während die Parasitlänge von \(0{,}40\) bis \(0{,}56\,\lambda\) wächst (NEC kann uns die Ströme im Stab nicht direkt verraten — das Fernfeld ist die ehrliche Messgröße). Erfolgskriterium: ein Vorzeichenwechsel der Differenz „vorn minus hinten” in der Nähe der eben gemessenen Resonanzlänge.

Vorhersage-Punkt (PRIMM): Der Stab steht hinter dem Dipol. Wenn er kurz (kapazitiv) ist — zeigt die Keule dann nach vorn oder nach hinten? Beachte: „Direktor” heißt, die Keule zeigt zum Stab hin.

# von oben: dipol_z()-Bausteine, LAM, R_DRAHT, SEG, F_MHZ, necpp


def yagi(design, f_mhz=F_MHZ, seg=SEG, npts=73, driven_tag=2):
    """Drahtreihe (Position in λ, Länge in λ) → (Azimut-dBi, Z).

    Element Nummer driven_tag wird in der Mitte gespeist, alle
    anderen sind blanke Stäbe. Azimut: 0° = +x (vorn).
    """
    ctx = necpp.nec_create()
    for i, (xpos, laenge) in enumerate(design):
        x, halb = xpos * LAM, laenge * LAM / 2
        necpp.nec_wire(ctx, i + 1, seg, x, -halb, 0, x, halb, 0,
                       R_DRAHT, 1.0, 1.0)
    necpp.nec_geometry_complete(ctx, 0)
    necpp.nec_fr_card(ctx, 0, 1, float(f_mhz), 0)
    necpp.nec_ex_card(ctx, 0, driven_tag, (seg + 1) // 2, 0,
                      1.0, 0, 0, 0, 0, 0)
    necpp.nec_rp_card(ctx, 0, 1, npts, 0, 5, 0, 0, 90.0, 0.0, 0.0,
                      360.0 / (npts - 1), 0.0, 0.0)
    az = np.array([necpp.nec_gain(ctx, 0, 0, j) for j in range(npts)])
    z = complex(necpp.nec_impedance_real(ctx, 0),
                necpp.nec_impedance_imag(ctx, 0))
    necpp.nec_delete(ctx)
    return az, z


ABSTAND = 0.15
l_parasit = np.arange(0.40, 0.561, 0.01)
vorn_minus_hinten = []
for L in l_parasit:
    az, _ = yagi([(0.0, 0.473), (-ABSTAND, L)], npts=3, driven_tag=1)
    vorn_minus_hinten.append(az[0] - az[1])    # 0° minus 180°
vorn_minus_hinten = np.array(vorn_minus_hinten)

i = np.flatnonzero(np.diff(np.sign(vorn_minus_hinten)))[0]
L_um = l_parasit[i] - vorn_minus_hinten[i] * 0.01 \
    / (vorn_minus_hinten[i + 1] - vorn_minus_hinten[i])
print(f"Umschlag bei L = {L_um:.3f} λ "
      f"(Einzelresonanz: {L_res:.3f} λ)")
Umschlag bei L = 0.437 λ (Einzelresonanz: 0.452 λ)
# von oben: l_parasit, vorn_minus_hinten, L_res, L_um
fig, ax = plt.subplots(figsize=(7.0, 4.2))
ax.plot(l_parasit, vorn_minus_hinten, "bo-", lw=1.4)
ax.axhline(0, color="0.6", lw=1)
ax.axvline(L_res, color="tab:red", ls="--", lw=1.2,
           label=f"Einzelresonanz {L_res:.3f} λ")
ax.annotate("kurz = kapazitiv:\nKeule ZUM Stab (Direktor)",
            xy=(0.405, -6), fontsize=9, color="tab:blue")
ax.annotate("lang = induktiv:\nKeule WEG vom Stab (Reflektor)",
            xy=(0.49, 3), fontsize=9, color="tab:blue")
ax.set_xlabel("Parasitlänge (λ)")
ax.set_ylabel("Gewinn vorn − hinten (dB)")
ax.set_title("Ein Stab, zwei Berufe — die Sägelänge entscheidet")
ax.legend(loc="lower right", fontsize=9)
plt.show()
Abbildung 24.3: Die Umschaltkarte des passiven Elements (NEC: gespeister Dipol plus ein Parasit 0,15 λ dahinter): aufgetragen ist der Gewinn nach vorn minus nach hinten über der Parasitlänge. Kurze Stäbe (kapazitiv) ziehen die Keule zu sich — der Stab steht hinten, also zeigt sie nach hinten (negative Werte): er wirkt als Direktor. Lange Stäbe (induktiv) werfen sie von sich weg: Reflektor, mit gut +10 dB Vor/Rück im Maximum. Der Umschlag (0,437 λ) liegt nahe der Einzelresonanz (rot gestrichelt, 0,452 λ); den kleinen Versatz verursacht die Verkopplung der beiden Stäbe, die die wirksame Resonanz verschiebt.

Die Antwort auf den Vorhersage-Punkt: Der kurze Stab hinter dem Dipol zieht die Keule nach hinten, zu sich hin — er wirkt als Direktor; erst der lange Stab wirft sie nach vorn. Damit ist die Bauanleitung der Yagi vollständig begründet: hinter den Dipol gehört ein langer Stab (Reflektor), vor ihn kurze (Direktoren). Und der Merksatz des Experiments: Kurz führt, lang wirft zurück. Sind versehentlich alle Stäbe zu lang, wirken alle als Reflektoren — die Keule kippt nach hinten (Übung 24.1 zeigt, dass genau das auch beim Betrieb auf zu hoher Frequenz passiert).

24.4 Das Feldbild: die Welle klettert die Leiter entlang

Bevor wir entwerfen, wollen wir den Mechanismus einmal sehen. Dafür wechseln wir kurz zu Meep in die 2D-Welt — mit der Warnung aus der Kapitel-11-Saga im Gepäck: Das 2D-Modell (Metallstreifen statt Drähte) zeigt das Prinzip wunderbar, aber seine Resonanzlänge liegt bei \(\sim 0{,}32\,\lambda\) — ein Artefakt der Flächenwelt. Diese Maße sind nicht baubar; gesägt wird später nach NEC.

Der Versuchsaufbau: Frage: Bündelt die Fünf-Streifen-Anordnung das Feld sichtbar nach vorn, und wie sieht die laufende Welle zwischen den Direktoren aus? Bühne: eine \(14\lambda \times 8\lambda\)-Zelle (1 λ PML); fünf Metallstreifen (Breite \(0{,}03\,\lambda\)) quer zur \(x\)-Achse: Reflektor (\(0{,}37\,\lambda\) lang) bei \(x = -0{,}2\), gespeister Streifen (\(0{,}32\,\lambda\), mit Speisespalt von 3 Gitterzellen — die Kapitel-21-Regel) bei \(x = 0\), drei Direktoren (\(0{,}27\,\lambda\)) davor. Quelle: Dauerstrich \(E_y\) im Spalt, komplexe Felder für Momentanbild und Film aus einem Lauf; die \(y\)-Spiegelsymmetrie (Phase \(-1\) für \(E_y\), Kapitel 21) halbiert die Rechenzeit. Messgrößen: das \(H_z\)-Feld (die natürliche Skalargröße dieser Polarisation) und als absoluter Gesundheitswert \(\max|H_z|\). Erfolgskriterium: sichtbare Bündelung nach vorn; quantitativ wird gleich danach das Fernfeld geprüft.

# von oben: nichts Neues — Meep-Bausteine aus Kap. 11/21/23
import meep as mp
mp.verbosity(0)

W_2D, GAP_2D, RES_2D = 0.03, 0.075, 40
# (x-Position, Länge, gespeist?) — 2D-Lern-Maße, NICHT baubar!
ELEMENTE_2D = [(-0.20, 0.37, False), (0.00, 0.32, True),
               (0.28, 0.27, False), (0.56, 0.27, False),
               (0.84, 0.27, False)]


def geometrie_2d():
    g = []
    for x, laenge, gespeist in ELEMENTE_2D:
        if gespeist:
            arm = laenge / 2 - GAP_2D / 2
            yc = GAP_2D / 2 + arm / 2
            for vorz in (+1, -1):
                g.append(mp.Block(size=mp.Vector3(W_2D, arm, mp.inf),
                                  center=mp.Vector3(x, vorz * yc),
                                  material=mp.metal))
        else:
            g.append(mp.Block(size=mp.Vector3(W_2D, laenge, mp.inf),
                              center=mp.Vector3(x, 0),
                              material=mp.metal))
    return g


sim2d = mp.Simulation(
    cell_size=mp.Vector3(14, 8), boundary_layers=[mp.PML(1.0)],
    sources=[mp.Source(mp.ContinuousSource(frequency=1.0, width=1.0),
                       component=mp.Ey, center=mp.Vector3())],
    resolution=RES_2D, geometry=geometrie_2d(),
    symmetries=[mp.Mirror(mp.Y, phase=-1)],
    force_complex_fields=True)
sim2d.run(until=30)
hz = sim2d.get_array(center=mp.Vector3(), size=mp.Vector3(14, 8),
                     component=mp.Hz)
# von oben: hz
print(f"Gesundheitscheck: max|Hz| = {np.abs(hz).max():.2f}")
Gesundheitscheck: max|Hz| = 12.56
# von oben: hz, ELEMENTE_2D
fig, ax = plt.subplots(figsize=(7.4, 4.3))
re = np.real(hz).T
grenze = np.abs(re).max() * 0.35
ax.imshow(re, origin="lower", extent=(-7, 7, -4, 4), cmap="RdBu_r",
          vmin=-grenze, vmax=grenze)
for x, laenge, _ in ELEMENTE_2D:
    ax.plot([x, x], [-laenge / 2, laenge / 2], "k-", lw=2.5)
ax.annotate("Keule →", xy=(5.6, 3.2), fontsize=11)
ax.set_xlabel("x in λ (Reflektor links, Direktoren rechts)")
ax.set_ylabel("y in λ")
ax.set_title("Fünf Streifen, ein Kabel: das Feld wird nach vorn "
             "sortiert")
plt.show()
Abbildung 24.4: Das Momentanfeld Re(Hz) der 2D-Yagi im eingeschwungenen Zustand (schwarze Striche: die fünf Elemente; der gespeiste Streifen ist der zweite von links). Nach vorn (rechts) laufen kräftige, fast ebene Wellenfronten, nach hinten bleibt nur ein schwacher Rest — fünf Metallstreifen formen aus der Rundum-Abstrahlung des Dipols eine Keule. Zwischen den Direktoren ist das Feld am stärksten: Die Kette führt die Welle wie eine Leiter.

Im Film sieht man, wie die Bündelung zustande kommt — eine Periode aus dem komplexen Feld, der \(\mathrm{Re}(H_z e^{-\mathrm{i}\varphi})\)-Trick aus Kapitel 23. Achte auf den Bereich zwischen den Direktoren: Die Welle läuft dort von Stab zu Stab nach rechts, als klettere sie eine Leiter hinauf — jeder Stab reicht sie mit passender Phase an den nächsten weiter. Hinter dem Reflektor dagegen tritt das Feld fast auf der Stelle.

Code der Animation (nur in der HTML-Fassung)
# von oben: hz, ELEMENTE_2D
from matplotlib import animation
from IPython.display import HTML

fig, ax = plt.subplots(figsize=(6.6, 3.9))
grenze = np.abs(hz).max() * 0.35
im = ax.imshow(np.real(hz).T, origin="lower", extent=(-7, 7, -4, 4),
               cmap="RdBu_r", vmin=-grenze, vmax=grenze)
for x, laenge, _ in ELEMENTE_2D:
    ax.plot([x, x], [-laenge / 2, laenge / 2], "k-", lw=2.5)
ax.set_xticks([]); ax.set_yticks([])
ax.set_title("Die Welle klettert die Direktorenleiter entlang")

phasen = np.linspace(0, 2 * np.pi, 16, endpoint=False)

def bild(i):
    im.set_data(np.real(hz * np.exp(-1j * phasen[i])).T)
    return [im]

anim = animation.FuncAnimation(fig, bild, frames=len(phasen),
                               interval=120)
plt.close(fig)
HTML(anim.to_jshtml(default_mode="loop"))

Quantitativ bestätigt das Fernfeld die Bündelung — ein Puls-Lauf mit der near2far-Box (Kapitel 14/23), Erfolgsmaß ist das Vor/Rück-Verhältnis:

# von oben: geometrie_2d(), RES_2D
sim2d = mp.Simulation(
    cell_size=mp.Vector3(14, 8), boundary_layers=[mp.PML(1.0)],
    sources=[mp.Source(mp.GaussianSource(frequency=1.0, fwidth=0.3),
                       component=mp.Ey, center=mp.Vector3())],
    resolution=RES_2D, geometry=geometrie_2d(),
    symmetries=[mp.Mirror(mp.Y, phase=-1)])
b = 1.3
n2f_2d = sim2d.add_near2far(
    1.0, 0, 1,
    mp.Near2FarRegion(mp.Vector3(+b, 0), size=mp.Vector3(0, 2 * b)),
    mp.Near2FarRegion(mp.Vector3(-b, 0), size=mp.Vector3(0, 2 * b),
                      weight=-1),
    mp.Near2FarRegion(mp.Vector3(0, +b), size=mp.Vector3(2 * b, 0)),
    mp.Near2FarRegion(mp.Vector3(0, -b), size=mp.Vector3(2 * b, 0),
                      weight=-1))
sim2d.run(until_after_sources=mp.stop_when_fields_decayed(
    5, mp.Ey, mp.Vector3(), 1e-4))


def S_fern(dx, dy):
    Ex, Ey, Ez, Hx, Hy, Hz = sim2d.get_farfield(
        n2f_2d, mp.Vector3(1000.0 * dx, 1000.0 * dy))
    Sx = 0.5 * np.real(Ey * np.conj(Hz) - Ez * np.conj(Hy))
    Sy = 0.5 * np.real(Ez * np.conj(Hx) - Ex * np.conj(Hz))
    return np.hypot(Sx, Sy)


fb_2d = 10 * np.log10(S_fern(1, 0) / S_fern(-1, 0))
print(f"2D-Yagi: Vor/Rück-Verhältnis = {fb_2d:+.1f} dB")
2D-Yagi: Vor/Rück-Verhältnis = +9.8 dB

Knapp zehn Dezibel mit fünf Streifen und einem Kabel — das Prinzip steht. Jetzt der echte Entwurf.

24.5 Der Entwurf: Schritt für Schritt zur 5-Element-Yagi

Zurück zu NEC und den echten Drähten. Wir bauen die 2,4-GHz-Yagi des Bauplans Element für Element auf und messen nach jedem Schritt drei Größen: Gewinn nach vorn, Vor/Rück und die Eingangsimpedanz (sie entscheidet über den Kabelanschluss, Kapitel 22). Der Versuchsaufbau steckt in der schon definierten yagi()-Funktion; das Ziel-Design — Längen zwischen \(0{,}43\) und \(0{,}50\,\lambda\), Drahtradius 1 mm — stammt aus dem BAUPLAN des Repos und wurde dort gegen openEMS quergerechnet. Erfolgskriterium der Reihe: Am Ende stehen die Kapitel-11-Werte (knapp 9 dBi, Vor/Rück ≈ 15 dB, \(Z \approx 19\) Ω resonant).

# von oben: yagi()
BASIS = [(0.00, 0.500),     # Reflektor: LANG (induktiv)
         (0.20, 0.473),     # Driven (gespeist)
         (0.35, 0.440),     # Direktoren: KURZ (kapazitiv)
         (0.55, 0.440),
         (0.75, 0.430)]

print("Schritt           Gewinn   Vor/Rück   Impedanz")
stufen = [("nur Driven", [BASIS[1]], 1),
          ("+ Reflektor", BASIS[:2], 2),
          ("+ Direktor 1", BASIS[:3], 2),
          ("+ Direktor 2", BASIS[:4], 2),
          ("+ Direktor 3", BASIS, 2)]
gewinne = []
for name, design, tag in stufen:
    az, z = yagi(design, driven_tag=tag)
    gewinne.append(az[0])
    print(f"{name:14s}   {az[0]:5.2f} dBi  {az[0] - az[36]:+6.2f} dB"
          f"   {z.real:5.1f} {z.imag:+6.1f}j Ω")
Schritt           Gewinn   Vor/Rück   Impedanz
nur Driven        2.16 dBi   +0.00 dB    83.7  +21.4j Ω
+ Reflektor       5.97 dBi  +10.11 dB    82.9  +62.2j Ω
+ Direktor 1      9.23 dBi   +7.85 dB    10.2  +42.6j Ω
+ Direktor 2      9.76 dBi  +10.17 dB     4.3  +21.8j Ω
+ Direktor 3      8.88 dBi  +14.64 dB    19.0   +1.2j Ω

Diese Tabelle ist der ganze Yagi-Entwurf im Zeitraffer, und sie erzählt drei Geschichten:

  • Der Reflektor bringt den ersten großen Sprung: +3,8 dB und zehn Dezibel Vor/Rück — das Endfire-Paar vom Kapitelanfang, in Hardware.
  • Die Direktoren heben den Gewinn weiter (auf fast 10 dBi), aber sieh dir die Impedanzspalte an: Jedes neue Element wirkt auf das gespeiste zurück und drückt dessen Wirkwiderstand in den Keller (\(83 \to 10 \to 4\) Ω!) und den Blindanteil ins Induktive. Eine Yagi ist ein verkoppeltes System — nichts lässt sich isoliert einstellen.
  • Direktor 3 ist das Abstimm-Element: Er ist bewusst kürzer gewählt (\(0{,}430\) statt \(0{,}440\,\lambda\)) und kostet sogar fast ein Dezibel Gewinn — aber er holt das Vor/Rück-Verhältnis auf \(+14{,}6\) dB und vor allem die Impedanz auf \(19 + 1{,}2\mathrm{j}\) Ω: praktisch reiner Wirkwiderstand, die Antenne ist resonant und anpassbar. Ein Yagi-Entwurf optimiert nie nur den Gewinn, sondern immer das Dreieck Gewinn / Vor-Rück / Impedanz.

24.5.1 Mehr Direktoren, mehr Gewinn?

Vorhersage-Punkt (PRIMM): Der Bauplan verspricht in §7 „jedes weitere Element etwa +1 dB”. Wir hängen jetzt stumpf weitere \(0{,}435\,\lambda\)-Direktoren im \(0{,}2\,\lambda\)-Raster an. Steigt der Gewinn um +1 dB pro Stück?

# von oben: yagi(), BASIS
print("Direktoren   Boom(λ)   Gewinn")
for n_dir in range(1, 7):
    design = BASIS[:2] + [(0.35 + 0.20 * k, 0.435)
                          for k in range(n_dir)]
    az, _ = yagi(design)
    print(f"   {n_dir}          {design[-1][0]:.2f}     "
          f"{az[0]:5.2f} dBi")
Direktoren   Boom(λ)   Gewinn
   1          0.35      9.18 dBi
   2          0.55      9.88 dBi
   3          0.75      9.56 dBi
   4          0.95      8.20 dBi
   5          1.15      7.36 dBi
   6          1.35      5.80 dBi

Er steigt nicht — er bricht ein, ab dem dritten Klon geht es steil bergab. Die Erklärung liefert das Feldbild von oben: Die Direktorenkette führt eine Welle, die von Stab zu Stab weitergereicht wird. Das funktioniert nur, solange jeder Stab mit der passenden Phase weiterreicht — die Kette ist ein Wellenleiter, und ihre „Sprosse” müssen zum Tempo der geführten Welle passen. Stumpf geklonte Glieder geraten außer Tritt, die Phasenfehler summieren sich entlang der Kette. Wer länger bauen will, muss nachstimmen — und dann geht es tatsächlich weiter aufwärts:

# von oben: yagi(), BASIS
az, _ = yagi(BASIS[:2] + [(0.35 + 0.30 * k, 0.40) for k in range(6)])
print(f"6 Direktoren, nachgestimmt (0,40 λ kurz, 0,3-λ-Raster): "
      f"{az[0]:.2f} dBi bei Boom 1,85 λ")
6 Direktoren, nachgestimmt (0,40 λ kurz, 0,3-λ-Raster): 12.77 dBi bei Boom 1,85 λ

Fast 13 dBi — vier Dezibel mehr als das 5-Element-Design, für den zweieinhalbfachen Boom. Die Faustregel der Yagi-Welt lautet denn auch nicht „pro Element”, sondern: Der Gewinn wächst mit der Boom-Länge (grob logarithmisch), und lange Ketten brauchen kürzere, weiter auseinandergezogene Glieder. Professionelle Langyagi-Entwürfe (etwa die DL6WU-Reihen) variieren Länge und Abstand jedes einzelnen Direktors.

Das Wechselspiel kannst du am Kapitel-23-Zeigermodell selbst erleben: eine Endfire-Kette aus \(N\) Strahlern, jeder zündet um \(k\,d\) später als sein Hintermann (die „mitlaufende” Phase — exakt synchron zur Welle). Die Stellschraube FEHLER_GRAD gibt jedem Glied zusätzlich eine feste Extra-Nacheilung mit — wie ein verstimmter Direktor. Vorhersage-Punkt: Jede Abweichung vom Synchrontakt sollte doch schaden — oder? Probiere 20°, und staune: Die Direktivität steigt (von 4,9 auf 7,5). Eine moderate Extra-Nacheilung verschärft die Endfire-Keule — in der Antennentechnik heißt das die Hansen-Woodyard-Bedingung, und es ist genau der Grund, warum die nachgestimmte Yagi-Kette ihre Direktoren kürzer haben will: Die von ihnen geführte Welle läuft etwas langsamer als das Licht, die Glieder eilen also gewollt ein wenig nach. Erst Übertreibung bestraft das Modell — bei 60° pro Glied zerfällt die Keule.

24.6 Wie genau ist diese Rechnung? Die Methodengrenze

Kapitel 10 verlangt vor dem Vertrauen den Konvergenztest: Diskretisierung verfeinern, prüfen, ob die Antwort stehen bleibt. Die Diskretisierung der Momentenmethode ist die Zahl der Stromsegmente pro Draht. Also verfeinern wir — von 5 bis 41 Segmenten — und tragen mit, wie lang ein Segment dabei im Verhältnis zum Drahtradius wird:

# von oben: yagi(), BASIS, LAM
print("SEG   Segmentlänge      Gewinn    Impedanz")
for seg in (5, 7, 9, 11, 15, 21, 41):
    az, z = yagi(BASIS, seg=seg)
    sl_mm = 0.473 * LAM * 1000 / seg
    print(f"{seg:3d}   {sl_mm:5.2f} mm = {sl_mm:4.1f} R   "
          f"{az[0]:5.2f} dBi   {z.real:5.1f} {z.imag:+6.1f}j Ω")
SEG   Segmentlänge      Gewinn    Impedanz
  5   11.58 mm = 11.6 R    9.48 dBi    56.9   +3.6j Ω
  7    8.27 mm =  8.3 R    9.21 dBi    35.1   -5.1j Ω
  9    6.43 mm =  6.4 R    9.02 dBi    24.2   -2.0j Ω
 11    5.26 mm =  5.3 R    8.88 dBi    19.0   +1.2j Ω
 15    3.86 mm =  3.9 R    8.67 dBi    14.2   +5.8j Ω
 21    2.76 mm =  2.8 R    8.41 dBi    10.7  +10.5j Ω
 41    1.41 mm =  1.4 R    7.45 dBi     5.7  +21.9j Ω

Das ist keine Konvergenz — und die Tabelle ist damit lehrreicher als jede brave. Zwei Dinge passieren hier gleichzeitig. Erstens reagieren die Größen verschieden empfindlich: Der Gewinn bewegt sich um ein gutes halbes Dezibel, solange die Segmentierung vernünftig ist — das Fernfeld ist eine gutmütige, über die ganze Struktur gemittelte Größe. Die Impedanz dagegen hängt am Strom in einem einzigen Segment (dem Speisesegment) und wandert um einen Faktor drei. Zweitens — und das ist der eigentliche Punkt — hat das Verfeinern hier eine Grenze: NEC modelliert Drähte mit der Dünnsegment-Näherung, die Segmente verlangt, die deutlich länger sind als der Drahtradius (Faustregel: Segmentlänge \(\gtrsim 4\) Radien). Bei SEG = 41 ist ein Segment nur noch 1,4 Radien lang — die Rechnung verlässt das Gültigkeitsfenster ihrer eigenen Näherung, und „feiner” wird ab da falscher, nicht besser.

WichtigKonvergenztest heißt nicht: blind verfeinern

Die Kapitel-10-Checkliste gilt — aber jedes Verfahren hat ein Gültigkeitsfenster seiner Modellannahmen, und Verfeinern hilft nur innerhalb davon. Bei FDTD hieß die Grenze „Strukturen unterhalb der Gitterzelle” (der Speisespalt aus Kapitel 21!), bei der Momentenmethode heißt sie „Segmente nicht kürzer als ein paar Drahtradien”. Wo das Fenster eng wird, ersetzt man den Konvergenztest durch zwei andere Vertrauensquellen: die Querrechnung mit einem unabhängigen Verfahren — für diese Yagi hat das openEMS (Volumen-FDTD mit Dünndraht-Modell, eigene Rechenumgebung; Kapitel 11) erledigt: \(\approx 10\) dBi, Vor/Rück \(\approx 12\) dB, Hauptkeule vorn — und die Messung am gebauten Gerät.

Für den Bauplan heißt das konkret: Den Fernfeld-Versprechen (Keule, ≈ 9 dBi, Vor/Rück) darf man glauben — zwei Verfahren bestätigen sie. Die Impedanz ist eine Größenordnungsangabe („um 20 Ω, jedenfalls weit unter 50”): Anpassung ist sicher nötig, ihr Feinabgleich gehört ans gebaute Gerät. Genau deshalb sieht der Bauplan einen verschiebbaren Halter und eine SWR-Messung vor — nicht als Misstrauen gegen die Simulation, sondern als ihr ehrliches Gegenstück.

24.7 Bandbreite: schmal — und nach oben kippt sie

Eine Antenne aus lauter Resonatoren ist zwangsläufig schmalbandig (endlich scharf = endlich lang, Kapitel 15). Wie schmal, zeigt ein Frequenz-Sweep: Wir rechnen das volle Design von 2300 bis 2600 MHz durch und tragen das SWR am 50-Ω-Kabel auf — mit der komplexen Reflexionsformel aus Kapitel 22, \(r = (Z - Z_0)/(Z + Z_0)\), denn abseits der Resonanz hat \(Z\) einen kräftigen Blindanteil:

# von oben: yagi(), BASIS
frequenzen = np.arange(2300, 2601, 25)
swr, gewinn_f = [], []
for f in frequenzen:
    az, z = yagi(BASIS, f_mhz=float(f))
    r = (z - 50) / (z + 50)            # komplexes r (Kap. 22)
    swr.append((1 + abs(r)) / (1 - abs(r)))
    gewinn_f.append(az[0])
swr, gewinn_f = np.array(swr), np.array(gewinn_f)
i0 = np.argmin(np.abs(frequenzen - 2450))
print(f"SWR bei 2450 MHz: {swr[i0]:.2f}  "
      f"(die 2,63 = 50/19 aus Kapitel 22)")
print(f"bei 2500 MHz: SWR {swr[np.argmin(np.abs(frequenzen - 2500))]:.0f},"
      f" Gewinn {gewinn_f[np.argmin(np.abs(frequenzen - 2500))]:+.1f} dBi")
SWR bei 2450 MHz: 2.63  (die 2,63 = 50/19 aus Kapitel 22)
bei 2500 MHz: SWR 38, Gewinn -7.2 dBi
# von oben: frequenzen, swr, gewinn_f
fig, (a1, a2) = plt.subplots(2, 1, figsize=(7.0, 5.2), sharex=True)
# semilogy: logarithmische y-Achse — das SWR springt über Dekaden
a1.semilogy(frequenzen, swr, "b.-")
a1.axvspan(2400, 2483, color="tab:green", alpha=0.15,
           label="WLAN-Band")
a1.axhline(2.63, color="0.6", ls=":", lw=1)
a1.set_ylabel("SWR am 50-Ω-Kabel")
a1.set_title("Schmalbandig — und oberhalb der Entwurfsfrequenz "
             "kippt sie")
a1.legend(fontsize=9)
a2.plot(frequenzen, gewinn_f, "g.-")
a2.axvspan(2400, 2483, color="tab:green", alpha=0.15)
a2.axhline(0, color="0.6", lw=1)
a2.set_xlabel("Frequenz (MHz)")
a2.set_ylabel("Gewinn vorn (dBi)")
fig.tight_layout()
plt.show()
Abbildung 24.5: Der Frequenz-Sweep der 5-Element-Yagi: oben das SWR am 50-Ω-Kabel (logarithmisch; grün hinterlegt das 2,4-GHz-WLAN-Band), unten der Gewinn nach vorn. Unterhalb der Entwurfsfrequenz bleibt die Antenne gutmütig — oberhalb kippt sie abrupt: Bei 2500 MHz ist das SWR auf 38 explodiert und der „Gewinn“ nach vorn negativ, die Keule zeigt nach hinten. Der Grund steht in der Umschaltkarte: Steigt die Frequenz, wächst die elektrische Länge aller Stäbe — die Direktoren rutschen über die Resonanz und werden zu Reflektoren.

Die Asymmetrie ist kein Zufall, sondern die Umschaltkarte in Aktion: Ob ein Stab Direktor oder Reflektor ist, entscheidet seine Länge in Wellenlängen. Höhere Frequenz = kürzeres \(\lambda\) = alle Stäbe elektrisch länger; schon zwei Prozent reichen, und die Direktoren rutschen über die Resonanz auf die Reflektor-Seite — die Yagi schießt nach hinten. Tiefere Frequenzen schieben alle Stäbe tiefer in den Direktor-/Kapazitiv-Bereich, das verschmerzt sie deutlich länger. Merke für den Bau: Im Zweifel lieber etwas zu kurz sägen als zu lang — und nach dem gleichen Argument kippt eine zu lang geratene Yagi komplett (Übung 24.1).

24.7.1 Anpassung: die 19 Ω ans 50-Ω-Kabel

Bleibt der Anschluss. \(19\) Ω an \(50\) Ω heißt SWR \(2{,}6\) — es funkt (80 % der Leistung kommen an, Kapitel 22), aber gut ist es nicht. Der Bauplan nennt drei Praxislösungen, die sich alle mit Kapitel-22-Vokabular lesen lassen:

  • Hairpin-Anpassung: Das gespeiste Element wird 1–2 mm gekürzt (wird kapazitiv — die Umschaltkarte als Stellschraube!), dann kompensiert eine kleine Drahtschleife parallel zum Speisepunkt als Induktivität: zusammen ein L-Glied, das 19 Ω auf 50 Ω hebt.
  • Gamma-Anpassung: Das Element bleibt ein durchgehender Stab (kein Speisespalt!); ein kurzer Parallelstab mit Serienkondensator greift die Spannung ein Stück neben der Mitte ab — dort, wo die Strom-Stehwelle (Kapitel 21) den passenden Impedanzpegel bietet. Bonus: braucht keinen Balun.
  • Faltdipol: Das gespeiste Element als geschlossene Schleife vervierfacht die Impedanz (\(19 \to 76\) Ω) — passend fürs 75-Ω-Fernsehkabel aus Übung 22.1.

Dazu gehört die Symmetrierung: Der Dipol ist symmetrisch, das Koaxkabel nicht — ohne Gegenmaßnahme fließt ein Strom außen auf dem Kabelschirm mit, und der Mantel strahlt (Kapitel 22, Kleingedrucktes). Bei 2,4 GHz hilft eine λ/4-Mantelhülse: ein etwa 31 mm langes Metallröhrchen über dem Kabel, am antennenfernen Ende mit dem Schirm verlötet. Das ist wörtlich ein Kapitel-22-Trick — eine am Ende kurzgeschlossene \(\lambda/4\)-Leitung (zwischen Hülse und Schirm) transformiert ihren Kurzschluss in einen Leerlauf am offenen Ende und sperrt so den Mantelstrom.

24.8 Der Bauplan

Damit ist alles begründet, was im Bauplan steht. Die Stückliste kommt direkt aus dem Design — Millimeter, zum Sägen:

# von oben: BASIS, LAM
namen = ["Reflektor", "Driven", "Direktor 1", "Direktor 2",
         "Direktor 3"]
print(f"f = 2450 MHz, λ = {LAM * 1000:.2f} mm — Kupferstab Ø 2 mm")
print("Element       Länge      Boom-Position")
for name, (xpos, laenge) in zip(namen, BASIS):
    print(f"{name:11s}  {laenge * LAM * 1000:5.1f} mm    "
          f"{xpos * LAM * 1000:5.1f} mm")
f = 2450 MHz, λ = 122.36 mm — Kupferstab Ø 2 mm
Element       Länge      Boom-Position
Reflektor     61.2 mm      0.0 mm
Driven        57.9 mm     24.5 mm
Direktor 1    53.8 mm     42.8 mm
Direktor 2    53.8 mm     67.3 mm
Direktor 3    52.6 mm     91.8 mm
# von oben: BASIS, LAM, namen
fig, ax = plt.subplots(figsize=(7.2, 3.4))
for name, (xpos, laenge) in zip(namen, BASIS):
    x_mm = xpos * LAM * 1000
    l_mm = laenge * LAM * 1000
    farbe = "tab:blue" if name == "Driven" else "k"
    ax.plot([x_mm, x_mm], [-l_mm / 2, l_mm / 2], color=farbe, lw=3.5)
    ax.annotate(f"{l_mm:.1f}", xy=(x_mm, l_mm / 2 + 2), ha="center",
                fontsize=8)
    ax.annotate(f"{x_mm:.1f}", xy=(x_mm, -l_mm / 2 - 5), ha="center",
                fontsize=8, color="0.4")
ax.plot([-6, 98], [0, 0], color="0.7", lw=5, zorder=0)   # der Boom
ax.annotate("Strahlrichtung →", xy=(70, 25), fontsize=11)
ax.annotate("Speisespalt + Kabel", xy=(24.5, -38),
            ha="center", fontsize=8, color="tab:blue")
ax.set_xlim(-15, 110)
ax.set_ylim(-45, 42)
ax.set_aspect("equal")
ax.set_xlabel("Boom-Position (mm); Zahlen über den Stäben: Länge (mm)")
ax.set_yticks([])
ax.set_title("Bauskizze: fünf Stäbe, ein Kabel, 8,9 dBi")
plt.show()
Abbildung 24.6: Die Bauskizze der 2,4-GHz-Yagi in Originalproportionen (Maße in Millimetern): fünf Kupferstäbe Ø 2 mm auf einem rund 10 cm langen Boom, nur das zweite Element (Driven, blau) bekommt einen Speisespalt und das Kabel. Der Boom selbst ist unkritisch — ein 3D-gedruckter Kunststoffsteg ist für 2,4 GHz praktisch unsichtbar (ε_r ≈ 2,7, dünn gegen λ) und verstimmt anders als ein Metallboom nichts.

Zum fertigen Gerät fehlen drei Handgriffe, alle aus dem Bauplan des Repos (BAUPLAN_yagi_2.4GHz.md):

  1. Boom drucken: ein flacher PLA/PETG-Steg mit Ø-2-mm-Bohrungen an den fünf Positionen; für das gespeiste Element zwei Bohrungen mit 2–3 mm Mittelspalt. Profi-Tipp aus der Methodengrenzen-Diskussion: einen kleinen verschiebbaren Halter (±2 mm) vorsehen — der Feinabgleich ist eingeplant, nicht eingestanden.
  2. Abgleichen: Resonanz und SWR mit einem NanoVNA messen (für das 2,4-GHz-Band gibt es sie günstig); erst die Driven-Länge auf Resonanz trimmen, dann die Anpassung auf minimales SWR.
  3. Richtwirkung testen: die Signalstärke (RSSI) eines WLAN-Zugangspunkts in Strahlrichtung gegen die Rückrichtung vergleichen — der Unterschied sollte um die 10–15 dB liegen, das gemessene Vor/Rück-Verhältnis.

Und damit ist die Fallstudie geschlossen, deren Anfang Kapitel 11 erzählt hat: Prinzip im 2D-Feldbild, Entwurf mit dem Werkzeug, das zur Geometrie passt, Vertrauen aus Konvergenz-Verständnis plus unabhängiger Querrechnung — und ein Gerät, das man am Ende in die Hand nehmen kann.

24.9 Das Kapitel-Programm

programme/kap24/kap24_fallstudie_yagi.py bündelt alle Befunde eigenständig und mit assert-Schranken: die exakte Rückwärts-Null der Kardioide (\(< 10^{-20}\)), die Einzeldipol-Resonanz (\(0{,}44 < L < 0{,}47\,\lambda\)), die Umschaltkarte (klare Vorzeichen an beiden Enden), die Aufbau-Reihe (Endwerte in engen Fenstern um 8,9 dBi / 14,6 dB / 19 Ω), den Einbruch der naiven Direktorenklone und die nachgestimmten \(> 12\) dBi, den Frequenz-Kipp (SWR > 20 und negativer Gewinn bei 2500 MHz) und das 2D-Vor/Rück (\(+9{,}8\) dB). Läuft in wenigen Sekunden.

TippMerkkasten
  • Endfire-Rezept: zwei Strahler, \(d = \lambda/4\), der vordere \(90°\) später → volle Verstärkung nach vorn, exakte Null nach hinten (Kardioide). Die Yagi baut dieses Paar — ohne zweites Kabel.
  • Passiv heißt nicht stumm: Ein Metallstab im Wechselfeld sendet zwangsläufig; seine Phase stellt die Verstimmung (getriebener Resonator): kurz führt, lang wirft zurück — Direktoren kürzer und vorn, Reflektor länger und hinten.
  • Yagi-Entwurf ist Systemabstimmung: Jedes Element verstimmt alle anderen (Impedanz!); optimiert wird das Dreieck Gewinn / Vor-Rück / Impedanz. Mehr Gewinn kommt aus mehr Boom-Länge mit nachgestimmter Kette, nicht aus geklonten Direktoren.
  • Methodengrenzen kennen: Verfeinern hilft nur im Gültigkeitsfenster der Modellannahmen (MoM: Segmentlänge \(\gtrsim 4\) Drahtradien). Fernfeldgrößen sind robust, die Speisepunkt-Impedanz ist empfindlich — Querrechnung und Abgleich am Gerät gehören zum Entwurf.
  • Yagis sind schmalbandig und kippen nach oben (Direktoren werden elektrisch zu lang → Reflektoren). Beim Bau gilt: lieber knapp zu kurz als zu lang; Anpassung (Hairpin/Gamma/ Faltdipol) und λ/4-Mantelhülse sind Kapitel-22-Technik.

Roter Faden

Dieses Kapitel hat die Fäden von drei Teilen des Buchs verknotet: das Zeiger-Rechenwerk und „Umweg = Vorsprung” aus Kapitel 14/23 (Endfire statt Breitseite), den getriebenen Resonator samt Phasengang aus Kapitel 15/19, das Knick-Argument („beschleunigte Ladung strahlt — auch ohne Kabel”) aus Kapitel 21, die Spiegelformel, das SWR und den λ/4-Trick aus Kapitel 22 und die Validierungs-Checkliste aus Kapitel 10 — verschärft um die Lektion, dass jedes Verfahren ein Gültigkeitsfenster hat (Kapitel 11: die Saga; hier: ihre Vermessung). Nach vorn: Kapitel 25 fragt, warum die 50-Hz-Steckdose mit denselben Drahtlängen nicht funkt (die elektrisch kleine Antenne), und die Wellenleiter-Natur der Direktorenkette kehrt in Kapitel 26/27 wieder, wenn periodische Strukturen Wellen führen und sperren.

Übungen

Ü 24.1 (Verstehen). Ein Bastler sägt alle fünf Stäbe versehentlich 4 % zu lang. Was passiert mit der Keule — wird sie nur etwas schwächer? Begründe mit der Umschaltkarte, und stütze die Antwort mit dem Frequenz-Sweep: Welcher Messpunkt dort entspricht „alle Stäbe 2 % zu lang”?

Zu lange Stäbe sind elektrisch in Richtung „induktiv” verschoben. Die Direktoren liegen im Entwurf nur wenige Prozent unter der Resonanz — 4 % Zugabe schiebt sie über den Umschlagpunkt: Aus Direktoren werden Reflektoren, und die Keule kippt nach hinten, sie wird nicht bloß schwächer. Im Frequenz-Sweep steckt dasselbe Experiment, denn es zählt nur die Länge in Wellenlängen: Betrieb bei 2500 MHz statt 2450 macht alle Stäbe elektrisch \(2500/2450 - 1 \approx 2\,\%\) länger — und genau dort bricht der Sweep zusammen (SWR 38, Gewinn nach vorn negativ). Eine Yagi verzeiht „zu kurz” viel eher als „zu lang”.

Ü 24.2 (Verändern). Baue die 7-Element-Yagi: Hänge an das BASIS-Design zwei weitere Direktoren im \(0{,}25\,\lambda\)- Abstand an und suche ihre beste gemeinsame Länge zwischen \(0{,}39\) und \(0{,}44\,\lambda\) (in 0,01er-Schritten). Wie viel Gewinn bringt der längere Boom — und was macht das Vor/Rück- Verhältnis?

# von oben: yagi(), BASIS
print("L_dir    Gewinn    Vor/Rück")
for L_dir in np.arange(0.39, 0.441, 0.01):
    design = BASIS + [(0.75 + 0.25 * (k + 1), L_dir)
                      for k in range(2)]
    az, _ = yagi(design)
    print(f"{L_dir:.2f}   {az[0]:6.2f} dBi   {az[0] - az[36]:+6.2f} dB")
L_dir    Gewinn    Vor/Rück
0.39    10.10 dBi   +16.87 dB
0.40    10.09 dBi   +17.48 dB
0.41     9.99 dBi   +19.73 dB
0.42     9.61 dBi   +33.07 dB
0.43     7.98 dBi   +13.07 dB
0.44     0.83 dBi    -2.38 dB

Die zwei Zusatzdirektoren wollen kürzer sein als die Bestandskette (das Optimum liegt hier um \(0{,}40\)\(0{,}42\, \lambda\)) und bringen dann rund ein bis anderthalb Dezibel — weniger als „+1 dB pro Element”, der Zuwachs nimmt mit der Kettenlänge ab. Das Vor/Rück-Verhältnis verschiebt sich dabei je nach Länge spürbar: Wer es maximal will, optimiert wieder das ganze Dreieck, nicht eine Zahl. (Und die Impedanz hat sich natürlich auch wieder verschoben — nachprüfen!)

Ü 24.3 (Übertragen). Skaliere die Yagi auf 433 MHz (das 70-cm-Funkband): Alle Längen und Abstände wachsen um den Faktor \(2450/433 \approx 5{,}66\) — aber dein Stabmaterial bleibt 2 mm dick. Maxwell ist skaleninvariant (Kapitel 11): Ist die skalierte Antenne trotzdem exakt gleichwertig? Prüfe mit dipol_z bei 433 MHz, ob ein auf \(0{,}452\,\lambda\) geschnittener Einzeldipol dort noch resonant ist, und erkläre den Unterschied.

# von oben: dipol_z()-Bauweise, necpp — eigene Version für 433 MHz
F2 = 433.0
LAM2 = C_LICHT / (F2 * 1e6)


def dipol_z_433(l_lambda):
    ctx = necpp.nec_create()
    halb = l_lambda * LAM2 / 2
    necpp.nec_wire(ctx, 1, SEG, 0, -halb, 0, 0, halb, 0,
                   0.001, 1.0, 1.0)          # Radius bleibt 1 mm!
    necpp.nec_geometry_complete(ctx, 0)
    necpp.nec_fr_card(ctx, 0, 1, F2, 0)
    necpp.nec_ex_card(ctx, 0, 1, (SEG + 1) // 2, 0, 1.0, 0, 0, 0, 0, 0)
    necpp.nec_rp_card(ctx, 0, 1, 3, 0, 5, 0, 0, 90.0, 0.0, 0.0,
                      180.0, 0.0, 0.0)
    z = complex(necpp.nec_impedance_real(ctx, 0),
                necpp.nec_impedance_imag(ctx, 0))
    necpp.nec_delete(ctx)
    return z


print(f"bei 2450 MHz: Z(0,452 λ) = {dipol_z(0.452):.1f} Ω")
print(f"bei  433 MHz: Z(0,452 λ) = {dipol_z_433(0.452):.1f} Ω")
for L in (0.46, 0.47, 0.48):
    print(f"bei  433 MHz: Z({L} λ) = {dipol_z_433(L):.1f} Ω")
bei 2450 MHz: Z(0,452 λ) = 72.4-0.2j Ω
bei  433 MHz: Z(0,452 λ) = 63.1-35.2j Ω
bei  433 MHz: Z(0.46 λ) = 66.3-21.4j Ω
bei  433 MHz: Z(0.47 λ) = 70.6-4.2j Ω
bei  433 MHz: Z(0.48 λ) = 75.2+13.1j Ω

Nicht exakt gleichwertig: Bei 433 MHz ist der \(0{,}452\,\lambda\)-Dipol noch deutlich kapazitiv — die Resonanz liegt jetzt höher, um \(0{,}47\,\lambda\). Skaleninvarianz gilt nur, wenn alles mitskaliert, auch der Drahtradius; unser 2-mm-Stab ist bei 433 MHz (λ = 69 cm) elektrisch viel dünner als bei 2,4 GHz, und dünnere Dipole haben weniger Endeffekt-Verkürzung (näher an \(0{,}5\, \lambda\)). Wer skaliert, muss also nachstimmen — alle Elementlängen ein bis zwei Prozent strecken — oder gleich einen 11-mm-Stab nehmen. Genau deshalb geben seriöse Baupläne immer den Drahtdurchmesser mit an.

Ü 24.4 (Übertragen). Schließe den Kreis zu Kapitel 23: Baue das Endfire-Paar vom Kapitelanfang als gespeistes Phased Array in NEC — zwei resonante Dipole (\(0{,}452\,\lambda\)) im Abstand \(\lambda/4\), der vordere mit \(-90°\) Speisephase (NEC zählt die Phase in \(e^{+\mathrm{j}\omega t}\)-Konvention, Kapitel 23). Miss das Vor/Rück-Verhältnis und vergleiche mit der parasitären Lösung (Driven + Reflektor aus der Aufbau-Reihe): Wer unterdrückt rückwärts besser, und warum erreicht keiner die exakte Kardioiden-Null?

# von oben: yagi()-Bauweise, necpp, LAM, R_DRAHT, SEG
ctx = necpp.nec_create()
for i, x in enumerate((0.0, 0.25)):
    halb = 0.452 * LAM / 2
    necpp.nec_wire(ctx, i + 1, SEG, x * LAM, -halb, 0,
                   x * LAM, halb, 0, R_DRAHT, 1.0, 1.0)
necpp.nec_geometry_complete(ctx, 0)
necpp.nec_fr_card(ctx, 0, 1, F_MHZ, 0)
necpp.nec_ex_card(ctx, 0, 1, (SEG + 1) // 2, 0, 1.0, 0.0, 0, 0, 0, 0)
necpp.nec_ex_card(ctx, 0, 2, (SEG + 1) // 2, 0,
                  np.cos(-np.pi / 2), np.sin(-np.pi / 2), 0, 0, 0, 0)
necpp.nec_rp_card(ctx, 0, 1, 3, 0, 5, 0, 0, 90.0, 0.0, 0.0,
                  180.0, 0.0, 0.0)
g_v = necpp.nec_gain(ctx, 0, 0, 0)
g_h = necpp.nec_gain(ctx, 0, 0, 1)
necpp.nec_delete(ctx)
print(f"gespeistes Endfire-Paar: vorn {g_v:.2f} dBi, "
      f"hinten {g_h:.2f} dBi → F/B {g_v - g_h:+.1f} dB")

az, _ = yagi(BASIS[:2])
print(f"parasitäres Paar (Driven + Reflektor): "
      f"F/B {az[0] - az[36]:+.1f} dB")
gespeistes Endfire-Paar: vorn 5.64 dBi, hinten 2.25 dBi → F/B +3.4 dB
parasitäres Paar (Driven + Reflektor): F/B +10.1 dB

Das gespeiste Paar gewinnt deutlich (um die 20 dB Vor/Rück gegen gut 10 dB parasitär) — sein Phasenknopf ist exakt, während der parasitäre Strom in Phase und Stärke vom Verkopplungs-Kompromiss diktiert wird. Die ideale Kardioiden-Null erreicht aber keiner von beiden: Die Herleitung galt für zwei Punktquellen mit gleich starken Strömen — echte Dipole sind ausgedehnt, und schon ein kleiner Amplitudenunterschied lässt die Auslöschung unvollständig (zwei Zeiger löschen sich nur bei exakt gleicher Länge aus). Der Yagi-Trick bleibt trotzdem der Gewinner der Praxis: null zusätzliche Speisetechnik für immer noch über 10 dB Rückwärts-Unterdrückung — und mit der Direktorenkette skaliert er, was das gespeiste Paar nicht kann.

Das Kleingedruckte

Die Verkopplung formal. Was wir über Fernfelder gemessen haben, fasst die Antennentheorie in Gegenimpedanzen: Für zwei Antennen gilt \(U_1 = Z_{11} I_1 + Z_{12} I_2\) (und symmetrisch für 2). Beim Parasiten ist \(U_2 = 0\) (kurzgeschlossen), also \(I_2 = -Z_{21} I_1 / Z_{22}\) — Betrag und Phase des parasitären Stroms folgen aus Eigen- (\(Z_{22}\), die Verstimmung) und Gegenimpedanz (\(Z_{21}\), der Abstand). Unsere Umschaltkarte ist die Fernfeld-Spur genau dieser Formel.

Moderne Entwürfe überlassen das Dreieck Gewinn/Vor-Rück/Impedanz Optimierern (genetische Algorithmen, Partikelschwärme), die NEC tausendfach aufrufen — die Fitnessfunktion ist die Kunst. Kapitel 31 nimmt den Faden auf (inverses Design).

Warum kürzer besser führt: Dass die nachgestimmte Kette ihre Direktoren kürzer will, hat einen ehrwürdigen Namen — die Hansen-Woodyard-Bedingung (1938): Eine Endfire-Reihe erreicht ihre maximale Direktivität nicht im exakten Synchrontakt mit der Lichtgeschwindigkeit, sondern mit einer gezielten Extra-Nacheilung von insgesamt etwa \(\pi\) über die Kettenlänge. Physikalisch: Die Direktorenkette führt eine Oberflächenwelle, die etwas langsamer als \(c\) läuft — und kürzere (kapazitive) Glieder stellen genau diese Verzögerung ein. Zu viel davon kippt den Effekt wieder.

Lange Yagis werden zunehmend toleranzempfindlich: Je schärfer die geführte Welle auf die Kette abgestimmt ist, desto kleiner die Bandbreite und desto härter schlagen Fertigungsfehler durch — die 12,8-dBi-Kette von oben ist spürbar zickiger als das gutmütige 5-Element-Design. Auch das Wetter redet mit: Ein Regen- oder Eisfilm verstimmt die Stäbe (Wasser hat \(\varepsilon_r \approx 80\), Kapitel 1!) — Langyagi-Entwürfe rechnen Reserve ein.

Der Boom. Unsere Rechnung lässt die Stäbe frei schweben; ein Kunststoffboom ändert daran fast nichts. Ein Metallboom dagegen, durch den die Elemente hindurchgehen, verkürzt sie elektrisch — Praxis-Korrekturformeln (nach DL6WU) schlagen je nach Boomdurchmesser einige Prozent Länge auf. Wer Metall baut, korrigiert oder isoliert.

Und die Geschichte: Shintaro Uda publizierte die Antenne 1926 auf Japanisch, sein Professor Hidetsugu Yagi machte sie auf Englisch bekannt — weshalb die Welt bis heute meist nur den halben Namen nennt. Ihre erste große Bühne hatte die „Yagi” ausgerechnet im Zweiten Weltkrieg als Radarantenne — auf allen Seiten.