首先 这是一个偶振子天线与微带结构的结合
光从微带结构说 应该称为"倒置微带线" 网上有计算特征阻抗和等效介电常数的工具 在设计天线长度时候 应该相当有用
(发这个图片的时候 才发现CTRL-V就能直接上图 ... 太吓人了 幸好我没有CTRTL-C什么不合适的图)
因为好奇 我看了javascript里面的算法 追查了用的公式的来源 应该来自一本国外的书 书名"Microstrip Lines and Slotlines : Third Edition, Section 2.5.1, P110"
有出处就好 mathworks也采用了他的算法 应该可信 不过由于蛇形走位 而且有较多辐射 预期需要的天线长度应该还要更小
天线部分 网上的推导多采用微带线加耗损的模型 将总辐射功率根据天线微元上的电流分布进行分配 然后计算出输入阻抗
其中l是天线长度
k 是相位系数 从模型上认为是2π/λ
βa=R1/2Wa 是等效衰减系数, 其中R1=$ \frac {2 RΣ} {l(1-\frac{sin2kl}{2kl})} $ 是单位长度耗损电阻(辐射导致)
而其中RΣ就非常复杂了 根据远区坡印廷矢量积分算出辐射功率 再推算出的辐射电阻 但此处有个问题 对比开放的偶振子天线 我这里是应该只有半边辐射的 RΣ就只有一半 (但是这个结论是粗糙存疑的 不知道是否有人指点一下)
Wa 是理想无耗损传输线的阻抗 这里带入网上工具算出来的 大概250Ω
根据上面模型 写个程序 可以得到天线输入阻抗与天线长度的关系图
import scipy.integrate
import numpy
from matplotlib import pyplot
wa=250
ratio_from=0
ratio_to=0.5
ratio=numpy.linspace(ratio_from+0.001, ratio_to-0.001, 1001)
k_l=ratio*2*numpy.pi
r_sigma=numpy.array([30*scipy.integrate.quad(
lambda theta, kl: ((numpy.cos(kl*numpy.cos(theta))-numpy.cos(kl))**2)/numpy.sin(theta),
0, numpy.pi,
args=(t,)
)[0] for t in k_l])
r1_l=r_sigma*2/(1-numpy.sin(2*k_l)/(2*k_l))
beta_a_l=r1_l/2/wa
t=wa/(numpy.cosh(2*beta_a_l)-numpy.cos(2*k_l))
ra=(numpy.sinh(2*beta_a_l)-beta_a_l/k_l*numpy.sin(2*k_l))*t
xa=-(numpy.sin(2*k_l)+beta_a_l/k_l*numpy.sinh(2*beta_a_l))*t
amp=numpy.sqrt(ra*ra+xa*xa)
ang=numpy.arctan2(xa, ra)*180/numpy.pi
print('At {}λ, RΣ={}, impedance={} + {}j'.format(
0.25,
numpy.interp(0.25, ratio, r_sigma),
numpy.interp(0.25, ratio, ra),
numpy.interp(0.25, ratio, xa)))
fig, ax1=pyplot.subplots()
fig.subplots_adjust(right=0.85)
ax1.set_title('Input impedance of antenna')
ax1.set_xlabel('l/λ')
ax1.set_ylabel('Impedance (Ω)', color='blue')
ax1.set_ylim(0, 500)
ax1.set_xlim(ratio_from, ratio_to)
ax1.set_xticks(numpy.linspace(ratio_from, ratio_to, 5))
ax1.grid()
ax1.plot(ratio, amp, linewidth=1, color='blue')
ax1.plot(ratio, r_sigma, linewidth=1, color='black')
ax2=ax1.twinx()
ax2.set_ylabel('Phase (°)', color='orange')
ax2.set_ylim(-90, 90)
ax2.grid()
ax2.plot(ratio, ang, linewidth=1, color='orange')
z=numpy.complex(0, 1)*xa+ra
z0=numpy.complex(numpy.interp(0.25, ratio, ra), 0)
rf=(z-z0)/(z+z0)
vswr=(1+numpy.abs(rf))/(1-numpy.abs(rf))
fig, ax3=pyplot.subplots()
fig.subplots_adjust(right=0.85)
ax3.set_title('VSWR')
ax3.set_xlabel('l/λ')
ax3.set_ylabel('VSWR', color='black')
ax3.set_ylim(1, 3)
ax3.grid()
ax3.plot(ratio, vswr, linewidth=1, color='black')
pyplot.show()
但非常无奈的是 左右检查 仍然与网上文章的图形有出入 主要是在1/4波长上 我计算的结果是略微容性 而网上的图片会有明显的感性 (需要注意的是 下图的表达是与上图不同的 上图是幅度/角度 下图是实部/虚部)
下图应该是符合真实的 表现出因为末端放电导致的缩短系数 但是我盘算以上整个推算步骤 是没有这方面的体现的 应该是在计算之外 本来就i不该显示在结果中 只能通过经验 缩短设计1%-5% (由于印刷天线截面积小 这个效应实际应该不明显)
此外不同的是 计算范围如果是 0-λ 我的结果与上图就截然不同了 主要区别是0.75λ处我计算有个可用的天线长度
也有可能是相位系数k的问题 毕竟天线上电流分布的模型 不一定能合适用在所有天线长度上 但是并没有找到更好的模型
假定我的计算是正确的 那么可以看出 实际是1/4左右波长是辐射效率最大的 此时输入阻抗接近并略小于开放偶振子的辐射功率电阻73Ω/2(半封闭) 比3/4波长处的效率要高 在1/2波长附近 虽然有0相位点 但是阻抗比微带线的特征阻抗还高 应该没有多少辐射
看看驻波比
在当前设计下 如果需要保证驻波比小于1.5(反射系数0.2) 从图中获取数据并计算了一下 大概可以容纳6%的频带宽度 对于450MHz 有大概27MHz 感觉差不多可以覆盖437-463MHz 如果减少背板距离 增加微带线的宽度 减少微带线特征阻抗 这个带宽会变大 不过我打算使用双分支天线 这样覆盖430-435MHz就应该没有问题了 470-510MHz看情况可能真需要调整一下)
天线大抵是这样的 具体尺寸根据到货板子测量后调整
----------------------------- 6.21 ------------------
发现上面的推导有重大问题 !!!!
最大的问题是 k这个参数 没有考虑到微带线上的速度与空气中的速度区别 混用了
其次就是蛇形天线并不合适使用以上的微带计算公式 因为有转弯 带来更多的电感 有许多靠近 又没有周围的过孔屏蔽 导致新的串扰电容 结果就具有目前难以预期的滤波效果
其次就是输入阻抗的推导 首先是坡印廷矢量的积分不对 蛇形横向的电流元是相互有部分抵消的 不能算入 这样RΣ就可能比直线型的要小不少 其次是"耗损电阻平均分布在振子上"这个前提可能不对 继续用带衰减的传输线公式来计算也可能不对
真令人头疼啊 果然必须得仿真吗 或者勉强再算算
假设平行的蛇形线间仅仅相互抵消 不考虑其他相位和电/磁感应的话 这种天线可以等效为数段短天线相连 中间有固定时延 但是不妨假设电流驻波幅度在短天线间连续(并非电流波本身 而是驻波幅度) 末端电流驻波为0 这样的话
假设空气中相位系数为k0 天线上相位系数为k1 天线上电流驻波最大幅度为Im 蛇形天线真实高度为h
分段积分实在难搞 不妨假定分段够多够细够均匀(比如斜线走位) 那么
其中η0是自由空间阻抗120π
$ dE_\theta = \frac {j60 \pi sin \theta } {\lambda r} I_z e^{-jk_0r_z} dz $
$ I_z = I_m sin (k_1(h-|z|)l/h) $
$ r_z = r - z cos \theta$
$ E_\theta = \int_{-h}^h dE = \frac {j 60 \pi I_m sin \theta e^{-jk_0r}} {\lambda r} ( \int_{-h}^h sin (k_1 l (h-|z|) /h) e ^ {jk_0z cos \theta} dz) $
>>> from sympy import integrate, symbols, sin, cos
>>> k0, k1, l, h, z, j, theta=symbols('k0 k1 l h z j theta')
>>> r1=integrate(sin(k1*l*(h-z)/h)*(cos(k0*z*cos(theta))+j*sin(k0*z*cos(theta))), (z,0,h), conds='none')
>>> r2=integrate(sin(k1*l*(h+z)/h)*(cos(k0*z*cos(theta))+j*sin(k0*z*cos(theta))), (z,-h, 0), conds='none')
>>> r=(r1+r2).simplify()
>>> print(r)
2*h*k1*l*(cos(k1*l) - cos(h*k0*cos(theta)))/(h**2*k0**2*cos(theta)**2 - k1**2*l**2)
$ E_\theta = 2 h l k_1 \frac {j 60 \pi I_m sin \theta e^{-jk_0r}} {\lambda r} \frac {cos(k_1 l)-cos(h k_0 cos \theta)} {(h k_0 cos \theta)^2 - (k_1l)^2}$
$ |E_\theta| = \frac { 120 \pi h l k_1 I_m sin \theta } {\lambda r} \left| \frac {cos(k_1 l)-cos(h k_0 cos \theta)} {(h k_0 cos \theta)^2 - (k_1l)^2} \right| = 60 h l k_0 k_1 I_m \left| \frac {sin \theta (cos(k_1 l)-cos(h k_0 cos \theta))} {r ((h k_0 cos \theta)^2 - (k_1l)^2)} \right| $
$ P_\Sigma = \oint_S E_\theta H_\varphi /2 \, \vec {dS}= \frac {r^2} {2 * 120 \pi} \int_0^{2 \pi} d \varphi \int_0^{\pi} E_\theta^2 sin \theta d \theta = 30 (h l k_0 k_1 I_m)^2 \int_0^{\pi} ( \frac { cos(k_1 l)-cos(h k_0 cos \theta)} {(h k_0 cos \theta)^2 - (k_1l)^2})^2 sin^3 \theta d \theta $
$ R_\Sigma = 2 P_\Sigma / I_m^2 = 60 (h l k_0 k_1)^2 \int_0^{\pi} ( \frac { cos(k_1 l)-cos(h k_0 cos \theta)} {(h k_0 cos \theta)^2 - (k_1l)^2})^2 sin^3 \theta d \theta$
仍然假设分段够多够细够均匀 耗损电阻仍然平摊 仍然采用原有的"有耗损的末端开路的传输线模型"
$ R_\Sigma = (R_1*l/h) \int_0^h sin^2 (k_1(h-z)l/h) dz $
>>> import sympy
>>> from sympy import symbols
>>> from sympy import integrate
>>> from sympy import sin
>>> l,h,z,k1,r_sigma=symbols('l,h,z,k1,r_sigma')
>>> y=integrate(sin(k1*(h-z)*l/h)**2, (z,0,h), conds='none').simplify()
>>> r1=r_sigma/y*h/l
>>> r1.simplify()
4*k1*r_sigma/(2*k1*l - sin(2*k1*l))
$ R_1 = \frac {4 k_1 R_\Sigma} {(2 k_1 l - sin(2 k_1 l))} $
......
按我上面设计 通过蛇形走位 把原天线压缩到1/5 ... 结果令人非常难以接受 输入阻抗在谐振时候甚至只有2.3Ω
虽然这和实际我观察的情况有出入 但是基本还是表达了这个思想 因为大多数电流元互相抵消了 辐射功率大大下降 只有1/5电流元正常辐射 这样功率大概只有原来的 1/25 因为辐射太少 就等同一个长度1/4波长的波导开路了 回波几乎100% 接近短路
然而实际上 仍然有不少在用的类似的蛇形天线设备(大多数非偶振子 不过效果应该类似) 结果也没有这么糟糕
也许可以采用全波偶振子 利用0.5λ附近的高组区 通过串并感容的方法 获得合适的谐振点及阻抗 比如串入一个小电感 (或者利用杂散或者分布感容) 变成
并联个小电感 这是许多2.4G 倒F型天线的样子吧
或者使用高比例的巴伦
但是显然这些调整 都比较精细 即使预先仿真 只怕也需要不断实验调整 远没有直线型偶振子结构容错性高
注意 以上蛇形天线计算 并未考虑背板 如果使用背板 情况可能更复杂 但是总的来说 都是允许一部分能量出去 然后再想办法匹配
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |