Simulation #1 – Hyperion – Séparation Fréquentielle

Simulation #1 – Hyperion – Séparation Fréquentielle

Ce projet vise à optimiser le phénomène d’effondrement de la réponse impulsionnelle de deux circuits couplés à la même fréquence de résonance dans le cadre du projet Hyperion. Cette page sera complétée ultérieurement et donnera lieu à un article. 

Pour l’instant je manque de temps pour terminer cette étude, je vais essayer d’en trouver sur le second semestre. Actuellement le modèle Simscape tourne mais je dois pousser plus loin avec les équations de couplage et d’inductance mutuelle pour gagner en performance (15 minutes sur 8 xeons actuellement). Je dois trouver une solution pour designer un primaire qui résonne le plus haut possible (~80 kHz) et pour un secondaire qui respecte les contraintes de design d’une bobine Tesla.

Je vais mettre en place un repo git pour le code présent sur tout le site, ça commence à m’énerver de devoir l’intégrer en permanence en manuel.

Télécharger le projet Matlab



%% Importing the Simscape Simulation
sys = 'N:\Matlab\Tesla\tesla.slx';
open_system(sys)

%% Coupling Study or Inductance Study ? 
coupling_study = 0;
inductance_study = 1;
if coupling_study ~= inductance_study
    if coupling_study == 1
        primary_ind_mat = 30;
        coupling_start = 0.1; %µF
        coupling_stop = 9.9; %µF
        coupling_mat = linspace(0.1,9.9,10)/10;
        n_pts = 90000 ; % Coupling need more precision over the frequency range
    elseif inductance_study == 1
        primary_ind_start = 3; %µF
        primary_ind_stop = 550; %µF
        primary_ind_mat = logspace(log(primary_ind_start)/log(10),log(primary_ind_stop)/log(10),50); 
        coupling_mat = 0.3;
        n_pts = 10000 ; % Number of points
    end
end

%% Defining secondary Simscape simulation parameters
secondary_ind = 67.73; %mF
auto_cap = 37.4; %pF
cap_tore = 10; %pF
primary_cap = 0.1; %µF
secondary_leak = 100; %Ohms
io = getlinio('tesla'); %Linearisation Inputs

%% Define Bodeplot settings, then plot
opts = bodeoptions; 
opts.FreqUnits = 'kHz'; 
opts.PhaseVisible = 'on';
opts.Grid = 'on';
opts.MagUnits = 'abs';
opts.MagScale = 'linear';
lower_freq_plot = 10; %kHz
higther_freq_plot = 500 ; %kHz
clf
w = linspace(2*pi*lower_freq_plot*1E3,2*pi*higther_freq_plot*1E3,n_pts);

%% Linearise and plot
index_plot = 1;
all_resonances = [];
for coupling = coupling_mat
    for primary_ind = primary_ind_mat
        linsys = linearize('tesla',io);
        [gpeak,fpeak] = getPeakGain(linsys,0.00000001);
        resonance = [gpeak (fpeak/(2*pi))*10^-3];
        all_resonances = [all_resonances;resonance];
        bodeplot(linsys,opts,w);
        index_plot = index_plot +1;
        hold on
    end
end
axes_handles = findall(gcf, 'type', 'axes');


%% Plot Resonance Peak (Black), mark the main Peak (red), plot tilte and legend and link resonance points
resonance = num2cell(all_resonances,1); % Separate pGain and pFreq 
max_resonance = max(resonance{1}); % Get the main resonance peak
index = 1;
for gpeak = transpose(resonance{1})
        fpeak = resonance{2}(index);
        if max_resonance == gpeak
            scatter(axes_handles(3),fpeak,gpeak,20,'red','filled'); % Plot the main peak
        else
            scatter(axes_handles(3),fpeak,gpeak,20,'black','filled'); % Plot other peaks
        end
        index = index +1;
end
plot(axes_handles(3),resonance{2},resonance{1},'-')
if coupling_study == 1
    max_coupling = coupling_mat(all_resonances==max_resonance);
    legend(axes_handles(3),split(num2str(round(coupling_mat,2))),'Location','northeastoutside'); % Coupling legend
    title(axes_handles(3),{['Coupling study at I = ' num2str(primary_ind_mat) 'µH'];['Max. Resonance found at C = ' num2str(max_coupling)]},'FontSize',12,'Color','black');
elseif inductance_study == 1
    max_ind = primary_ind_mat(all_resonances==max_resonance);
    legend(axes_handles(3),split(num2str(round(primary_ind_mat,2))),'Location','northeastoutside'); % Inductance legend
    title(axes_handles(3),{['Inductance study at C = ' num2str(coupling_mat)];['Max. Resonance found at f = ' num2str(fpeak) ' kHz for I = ' num2str(max_ind) ' µH']},'FontSize',12,'Color','black');
end 
ylim (axes_handles(3),[0 max_resonance+500])

hold on

Laisser un commentaire