今天做了个简单测试 (之前仪器的校正堵头被猫叼不知道哪里去了 今天才在冰箱下面找到 这个理由不错吧) 然后发现与前面计算的误差较大 检查程序 发现程序中k0_h式子错了 然后重新推导修改
import scipy.integrate
import numpy
from matplotlib import pyplot
z0=50
wa=367
epsilon_eff=1.2
compress=0.2 # h/l
ratio_from=0
ratio_to=0.5
ratio_show=(ratio_from+ratio_to)/2
match=None
if False:
def match(z):
#@outport: C/parallel, @antenna: L/series, L=5.71213169610197e-09, C=2.113795485039202e-11
L=5.71213169610197e-09
C=2.113795485039202e-11
f=434.e6
w=2.j*numpy.pi*f
z=z+w*L
z=1/(w*C+1/z)
return z
#############################################
ratio=numpy.linspace(ratio_from+0.001, ratio_to-0.001, 1001)
k1_l=ratio*2*numpy.pi
# k1*l=k0*sqrt(epsilon_eff)*l -> k0*h=k1*l/sqrt(epsilon_eff)/l*h=k1_l/sqrt(epsilon_eff)*compress
k0_h=k1_l/numpy.sqrt(epsilon_eff)*compress
f=lambda theta, k1l, k0h: (((numpy.cos(k0h*numpy.cos(theta))-numpy.cos(k1l))/(((k0h*numpy.cos(theta))**2)-(k1l**2)))**2)*(numpy.sin(theta)**3)
r_sigma=numpy.vectorize(
lambda k1l, k0h: 60*((k1l*k0h)**2)*scipy.integrate.quad(f, 0, numpy.pi, args=(k1l, k0h))[0],
otypes=[float]
)(k1_l, k0_h)
r1_l=4*k1_l*r_sigma/(2*k1_l-numpy.sin(2*k1_l))
beta_a_l=r1_l/2/wa
t=wa/(numpy.cosh(2*beta_a_l)-numpy.cos(2*k1_l))
z=((numpy.sinh(2*beta_a_l)-beta_a_l/k1_l*numpy.sin(2*k1_l))-1j*(numpy.sin(2*k1_l)+beta_a_l/k1_l*numpy.sinh(2*beta_a_l)))*t
# with matching network
if match:
z=match(z)
print('At {}λ, RΣ={}, Z={}'.format(
ratio_show,
numpy.interp(ratio_show, ratio, r_sigma),
numpy.interp(ratio_show, ratio, z)))
fig, ax1=pyplot.subplots()
fig.subplots_adjust(right=0.6)
ax1.set_title('Input impedance of antenna')
ax1.set_xlabel('l/λ')
ax1.set_ylabel('Impedance (Ω)', color='black')
ax1.set_xlim(ratio_from, ratio_to)
ax1.set_xticks(numpy.linspace(ratio_from, ratio_to, 5))
ax1.grid()
plt1a=ax1.plot(ratio, numpy.real(z), linewidth=1, color='blue', label='Real')
plt1b=ax1.plot(ratio, numpy.imag(z), linewidth=1, color='red', label='Imag')
ax2=ax1.twinx()
ax2.set_ylabel('Phase (°)', color='orange')
ax2.set_ylim(-90, 90)
ax2.grid()
plt2=ax2.plot(ratio, numpy.degrees(numpy.angle(z)), linewidth=1, color='orange', label='Phase')
gamma=(z-z0)/(z+z0)
vswr=(1.+numpy.abs(gamma))/(1.-numpy.abs(gamma))
ax3=ax1.twinx()
ax3.spines['right'].set_position(('outward', 60))
ax3.set_ylabel('VSWR', color='black')
ax3.set_ylim(1, 5)
ax3.grid()
plt3=ax3.plot(ratio, vswr, linewidth=1, color='black', label='VSWR')
ax4=ax1.twinx()
ax4.spines['right'].set_position(('outward', 120))
ax4.set_ylabel('RΣ', color='cyan')
plt4=ax4.plot(ratio, r_sigma, linewidth=1, color='cyan', label='RΣ')
plts = plt1a+plt1b+plt2+plt3+plt4
ax3.legend(plts, [t.get_label() for t in plts], loc='upper right')
pyplot.show()使用背板远离的参数 然后结果居然吻合得不错
计算得2.66Ω 实测是2.82Ω 测试时候背板远离 使用了一个电流共轭型的1:1巴伦 实际上也曾经用非平衡式测试 只测一端 实测非平衡单端电阻与平衡两端电阻接近但还略小 说明了做非平衡-平衡转换时 是有耗损的 毕竟辐射功率不变 测出来电阻越大 说明有些能量非辐射性地消耗掉了
上背板后 因为等效介电常数上升 同样长度天线 谐振点频率变低 这个符合预期
但是实测电阻变大了太多 要知道 用背板后的参数 计算出来的电阻应该更小
2.13Ω和3.16欧姆就相差太大了 何况我原本预期 辐射功率应该只有一半 理应更小才对 说明背板会带来极大问题 我测试时候 是用根天线同时检查S21参数的 用了背板 S21下降了10db左右 说明消耗功率提高了 真实辐射反而变小了 这样即使匹配了阻抗也于事无补
可以说原方案定向的意图是失败了 但是网上确实有卖非常薄不可能是反射结构的同频平板天线 我得暂停这个方案 再考虑看看有什么办法