Расчет шумовой добротности станций космической связи
Автор
In [ ]:
using Printf
# Физические константы
const c = 3e8 # скорость света, м/с
const T0 = 290.0 # нормальная температура, К
"""
Расчет длины волны
"""
function wavelength(f::Float64)
return c / f
end
"""
Расчет КУ антенны (дБ)
G_a = 10*log10(η) + 20*log10(π*D/λ)
"""
function antenna_gain(D::Float64, f::Float64, η::Float64=0.6)
λ = wavelength(f)
G = 10 * log10(η) + 20 * log10(π * D / λ)
return G
end
"""
Расчет шумовой температуры антенны (К)
T_a = 180/f[ГГц] + 180/φ[град] + 30/D[м]
"""
function antenna_noise_temp(f::Float64, φ::Float64, D::Float64)
f_GHz = f / 1e9
T_a = 180.0 / f_GHz + 180.0 / φ + 30.0 / D
return T_a
end
"""
Расчет коэффициента шума в АФУ
l = 10^(α/10)
"""
function afu_noise_factor(α::Float64=0.5)
return 10^(α / 10)
end
"""
Расчет шумовой температуры системы (К -> дБ)
T_c = 10*log10(T_a + (l-1)*T0 + l*T_мшу)
"""
function system_noise_temp(T_a::Float64, T_msu::Float64=50.0, α::Float64=0.5)
l = afu_noise_factor(α)
T_c_linear = T_a + (l - 1) * T0 + l * T_msu
T_c_dB = 10 * log10(T_c_linear)
return T_c_dB, T_c_linear
end
"""
Расчет добротности приемной антенны (дБ/К)
Q = G_a / T_c
"""
function antenna_quality_factor(G_a::Float64, T_c::Float64)
Q = G_a - T_c # в дБ: деление -> вычитание
return Q
end
"""
Основная функция расчета
"""
function main_calculation()
println("=" ^ 70)
println("РАСЧЕТ ДОБРОТНОСТИ ПРИЕМНОЙ АНТЕННЫ")
println("=" ^ 70)
# Ввод исходных данных
print("\nВведите частоту f [ГГц]: ")
f_GHz = parse(Float64, readline())
f = f_GHz * 1e9 # Гц
print("Введите диаметр апертуры D [м]: ")
D = parse(Float64, readline())
print("Введите угол места φ [град]: ")
φ = parse(Float64, readline())
print("Введите КПД η (по умолчанию 0.55): ")
η_input = readline()
η = isempty(η_input) ? 0.6 : parse(Float64, η_input)
print("Введите шумовую температуру МШУ T_мшу [К] (по умолчанию 50): ")
T_msu_input = readline()
T_msu = isempty(T_msu_input) ? 50.0 : parse(Float64, T_msu_input)
print("Введите ослабление в АФУ α [дБ] (по умолчанию 0.5): ")
α_input = readline()
α = isempty(α_input) ? 0.5 : parse(Float64, α_input)
# Расчет параметров
λ = wavelength(f)
G_a = antenna_gain(D, f, η)
T_a = antenna_noise_temp(f, φ, D)
T_c_dB, T_c_linear = system_noise_temp(T_a, T_msu, α)
Q = antenna_quality_factor(G_a, T_c_dB)
# Вывод результатов
println("\n" * "=" ^ 70)
println("РЕЗУЛЬТАТЫ РАСЧЕТА")
println("=" ^ 70)
@printf("Длина волны λ = %.6f м\n", λ)
@printf("КУ антенны G_a = %.2f дБ\n", G_a)
@printf("Шумовая температура антенны T_a = %.2f К\n", T_a)
@printf("Шумовая температура системы T_c = %.2f дБ (%.2f К)\n", T_c_dB, T_c_linear)
@printf("Добротность приемной антенны Q = %.2f дБ/К\n", Q)
println("=" ^ 70)
end
# Запуск программы
main_calculation()