Загрузка данных
% =========================================================================
% МОДЕЛЬ ЛАЗЕРА ФАБРИ-ПЕРО С ВБР: СТАТИКА И ДИНАМИКА ПРИ НАГРЕВЕ
% Чистая версия без дублирования и ошибок
% =========================================================================
clear; clc; close all;
% =========================================================================
% ЭТАП 1: Настройки среды и сетка по длине волны
% =========================================================================
lambda_start = 1540; % Начальная длина волны (нм)
lambda_end = 1560; % Конечная длина волны (нм)
d_lambda = 0.005; % Шаг сетки (нм)
lambda = lambda_start : d_lambda : lambda_end;
% =========================================================================
% ЭТАП 2: Физические параметры лазера Фабри-Перо
% =========================================================================
lambda_0 = 1550; % Центральная длина волны (нм)
L = 250000; % Длина резонатора (мкм) — ИСПРАВЛЕНО (было 250000)
n_eff = 3.5; % Эффективный показатель преломления
R_mirror = 0.32; % Коэффициент отражения граней (~32%)
sigma_env = 3.0; % Ширина огибающей Гаусса (нм)
% Расчёт FSR (Free Spectral Range)
FSR = (lambda_0^2) / (2 * n_eff * L); % Расстояние между модами
% Расчёт Finesse и ширины пика
Finesse = (pi * sqrt(R_mirror)) / (1 - R_mirror);
FWHM_peak = FSR / Finesse; % Ширина пика на полувысоте
sigma_peak = FWHM_peak / 2.355; % Сигма для гауссовой аппроксимации
% =========================================================================
% ЭТАП 3: Генерация статического спектра лазера
% =========================================================================
I_laser_static = zeros(1, length(lambda));
for m = -10:1:10
lambda_m = lambda_0 + m * FSR;
amplitude_m = exp(-((lambda_m - lambda_0)^2) / (2 * sigma_env^2));
I_laser_static = I_laser_static + amplitude_m * exp(-((lambda - lambda_m).^2) / (2 * sigma_peak^2));
end
% =========================================================================
% ЭТАП 4: Модель Волоконной Брэгговской Решётки (ВБР)
% =========================================================================
lambda_fbg = 1550.8; % Центр отражения ВБР (нм)
sigma_fbg = 0.1; % Ширина пика ВБР (нм)
R_fbg = 1; % Макс. коэффициент отражения (100%)
I_fbg = R_fbg * exp(-((lambda - lambda_fbg).^2) / (2 * sigma_fbg^2));
% =========================================================================
% ЭТАП 5: Построение статических спектров (График 1)
% =========================================================================
figure('Name', 'Статика: Спектры лазера и ВБР', 'NumberTitle', 'off');
plot(lambda, I_laser_static, 'b', 'LineWidth', 1.5);
hold on;
plot(lambda, I_fbg, 'r', 'LineWidth', 2);
title(sprintf('Спектры лазера и ВБР'));
xlabel('Длина волны, нм');
ylabel('Интенсивность, отн.ед.');
grid on;
hold off;
% =========================================================================
% ЭТАП 6: Моделирование динамики при нагреве
% =========================================================================
t_end = 20; % Длительность импульса (мкс)
t = linspace(0, t_end, 1000); % Временная сетка
max_shift = 8; % Максимальный сдвиг спектра (нм)
tau_thermal = 4.0; % Тепловая постоянная времени (мкс)
% Экспоненциальный нагрев (физически обоснованно)
delta_lambda = max_shift * (1 - exp(-t / tau_thermal));
% Массив для сигнала с фотодетектора
PD_signal = zeros(1, length(t));
% Цикл по времени
for k = 1:length(t)
shift = delta_lambda(k);
lambda_0_shifted = lambda_0 + shift;
% Пересчёт спектра лазера с учётом сдвига
I_laser_shifted = zeros(1, length(lambda));
for m = -10:1:10
lambda_m = lambda_0_shifted + m * FSR;
amplitude_m = exp(-((lambda_m - lambda_0_shifted)^2) / (2 * sigma_env^2));
I_laser_shifted = I_laser_shifted + amplitude_m * exp(-((lambda - lambda_m).^2) / (2 * sigma_peak^2));
end
% Отражённый спектр: пересечение спектра лазера и отражения ВБР
reflected_spectrum = I_laser_shifted .* I_fbg;
% Сигнал фотодетектора = интеграл (сумма) отражённой мощности
PD_signal(k) = sum(reflected_spectrum);
end
% =========================================================================
% ЭТАП 7: Построение динамики (Графики 2 и 3)
% =========================================================================
figure('Name', 'Динамика нагрева и сигнал', 'NumberTitle', 'off');
% Подграфик 1: Сдвиг спектра во времени
subplot(2, 1, 1);
plot(t, delta_lambda, 'm', 'LineWidth', 2);
title('Сдвиг спектра лазера при нагреве');
xlabel('Время t, мкс');
ylabel('Сдвиг длины волны, нм');
grid on;
% Подграфик 2: Сигнал на фотодетекторе (осциллограмма)
subplot(2, 1, 2);
plot(t, PD_signal, 'k', 'LineWidth', 1.5);
title('Сигнал на фотодетекторе');
xlabel('Время, мкс');
ylabel('Ток фотодетектора, отн. ед.');
grid on;
% Дополнительно: можно нормировать сигнал
% PD_signal = PD_signal / max(PD_signal); % если нужна нормировка