📜  天线理论-八木宇田天线(1)

📅  最后修改于: 2023-12-03 15:23:44.731000             🧑  作者: Mango

天线理论-八木宇田天线

八木宇田天线,也称为八木天线或Yagi天线,是一种常见的定向天线,常用于无线通信和广播领域。它由日本无线电工程师八木秀次和他的同事土屋信贤于1926年发明。八木宇田天线结构简单,成本低廉,易于制造和安装,因此在业余爱好者和业界人士中广受欢迎。

结构

八木宇田天线是以一根主导杆为中心,两侧分别固定若干个耦合单元(反射器和驱动器)的天线。通常情况下,耦合单元的数量和位置都是按照一定的公式计算出来的。在这种结构中,反射器和驱动器固定在主导杆上,而其他的固定点则是根据预设的频率和角度进行计算的。此外,八木宇田天线的特点是具有非常强的定向性能,可以选择性地传输和接收特定方向的信号。

工作原理

八木宇田天线工作原理基于电磁波的辐射和反射原理。当电磁波穿过反射器时,会发生相位反转,形成一种折射跟踪效应。这种效应能够增强天线的定向性,即选择性地接收特定方向的信号。与其他类型的天线相比,八木宇田天线具有更高的增益和方向性,因此在许多无线通信和广播领域得到广泛应用。

代码示例
# 八木宇田天线模拟
import numpy as np

def dipole(length, angle):
    """
    生成一个长度为length,倾斜角度为angle的偶极子天线
    """
    k = 2 * np.pi / wavelength
    x = np.linspace(-1, 1, num=1000)
    y = np.cos(k * length * np.sqrt(1 - x ** 2) * np.sin(angle)) / np.sqrt(1 - x ** 2)
    return x, y

def reflector(length, spacing):
    """
    生成一个长度为length,反射器间距为spacing的反射器天线
    """
    k = 2 * np.pi / wavelength
    x = np.linspace(-1, 1, num=1000)
    y = np.sin(k * length / 2 * np.sqrt(1 - x ** 2))
    t = np.zeros_like(x)
    t[np.abs(x) <= spacing] = 1
    y *= t
    return x, y

def driver(length, spacing):
    """
    生成一个长度为length,驱动器间距为spacing的驱动器天线
    """
    k = 2 * np.pi / wavelength
    x = np.linspace(-1, 1, num=1000)
    t1 = np.sin(k * length / 2 * np.sqrt(1 - x ** 2))
    t2 = np.cos(k * spacing / 2 * np.sqrt(1 - x ** 2))
    y = t1 * t2
    return x, y

# 参数设置
frequency = 30 * 10 ** 6  # 频率
wavelength = 3 * 10 ** 8 / frequency  # 波长
num_elements = 10  # 元件数(反射器和驱动器)
element_spacing = 0.2 * wavelength  # 元件间距离

# 天线构造
element_length = wavelength / 2  # 元件长度
main_rod = dipole(element_length, 0)
reflector = reflector(element_length, element_spacing)
driver = driver(element_length, element_spacing)

# 构造八木宇田天线
antenna = reflector
for i in range(num_elements):
    if i % 2 == 0:
        antenna = (antenna[0] + element_spacing, antenna[1])
        antenna = np.concatenate([antenna, driver], axis=1)
    else:
        antenna = (antenna[0] + element_spacing, antenna[1])
        antenna = np.concatenate([antenna, reflector], axis=1)

# 绘图
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(main_rod[0], main_rod[1], label="Main rod")
ax.plot(reflector[0], reflector[1], label="Reflector")
ax.plot(driver[0], driver[1], label="Driver")
ax.plot(antenna[0], antenna[1], label="Yagi antenna")
ax.set_xlim(-2, 2)
ax.set_ylim(-1.5, 1.5)
ax.legend()
plt.show()