Implémentation Simulink de la commande SVPWM avec modulation par étalement de spectre pour moteur synchrone à aimants permanents (MSAP). Cette approche permet de réduire significativement les vibrations et le bruit haute fréquence générés par le moteur.
Principes fondamentaux de la modulasion par étalement de spectre
Les moteurs synchrones à aimants permanents souffrent de problèmes de vibrations et de bruits haute fréquence lors de leur fonctionnement. Ces perturbations proviennent principalement des harmoniques générées par l'onduleur à fréquence de commutation fixe. La technique de modulation par étalement de spectre constitue une solution élégante pour disperser l'énergie spectrale de ces harmoniques, réduisant ainsi les pics de vibration à des fréquences spécifiques.
Architecture du modèle Simulink
La modulation SVPWM (Space Vector Pulse Width Modulation) représente le cœur de la commande MSAP. Cette technique sytnhesize les vecteurs tension spatiaux souhaités en contrôlant les états de commutation de l'onduleur. L'implémentation peut être réalisée selon la structure suivante :
% Paramètres de simulation
Te = 5e-5; % Période d'échantillonnage
fs = 1/Te; % Fréquence d'échantillonnage
N = 2000; % Nombre d'itérations
% Génération des tensions de référence triphasées
for i = 1:N
temps = i * Te;
Ua_ref(i) = 0.7 * sin(2 * pi * 60 * temps);
Ub_ref(i) = 0.7 * sin(2 * pi * 60 * temps - 2*pi/3);
Uc_ref(i) = 0.7 * sin(2 * pi * 60 * temps + 2*pi/3);
end
% Transformation Clarke et Park
for i = 1:N
Ualpha(i) = Ua_ref(i);
Ubeta(i) = (Ua_ref(i) + 2*Ub_ref(i)) / sqrt(3);
amplitude(i) = sqrt(Ualpha(i)^2 + Ubeta(i)^2);
angle(i) = atan2(Ubeta(i), Ualpha(i));
% Détermination du secteur
secteur(i) = floor(angle(i) / (pi/3)) + 1;
if secteur(i) == 0
secteur(i) = 6;
end
end
% Calcul des durées d'application des vecteurs
for i = 1:N
X = sqrt(3) * Ubeta(i) * Te;
Y = (sqrt(3)*Ubeta(i) + 3*Ualpha(i)) * Te / 2;
Z = (-sqrt(3)*Ubeta(i) + 3*Ualpha(i)) * Te / 2;
switch secteur(i)
case 1
T_a = Z; T_b = Y;
case 2
T_a = Y; T_b = -X;
case 3
T_a = X; T_b = Z;
case 4
T_a = -Z; T_b = -Y;
case 5
T_a = -Y; T_b = X;
case 6
T_a = -X; T_b = -Z;
end
% Temporisations avec temps mort
T0 = Te - T_a - T_b;
% Génération des signaux MLI
[MLI_a(i), MLI_b(i), MLI_c(i)] = generer_signaux_mli(T0, T_a, T_b, secteur(i));
end
Ce code génère les tensions de référence triphasées, effectue les transformations nécessaires, détermine le secteur du vecteur tensión, puis calcule les durées d'application pour produire les signaux MLI.
Implémentation des stratégies d'étalement de spectre
Méthode随机 à fréquence aléatoire
Cette première approche fait varier la fréquence porteuse de manière aléatoire dans une plage définie :
% Plage de fréquences porteuses
fc_bas = 8000; % Fréquence minimale
fc_haut = 25000; % Fréquence maximale
for i = 1:N
% Génération d'une fréquence aléatoire
fc(i) = fc_bas + (fc_haut - fc_bas) * rand();
Tc(i) = 1 / fc(i);
% Calcul du rapport cyclique adaptatif
rapport_cyclique(i) = determiner_rapport_cyclique(Ua_ref(i), Ub_ref(i), Uc_ref(i), Tc(i));
% Génération des impulsions
[MLI_a(i), MLI_b(i), MLI_c(i)] = generer_signaux_mli(rapport_cyclique(i), Tc(i));
end
Modulation sinusoïdale自适应
La fréquence porteuse varie selon une loi sinusoïdale autour d'une valeur centrale :
fc_moyenne = 15000; % Fréquence centrale
amplitude_fc = 3000; % Excursion en fréquence
omega_fc = 2 * pi * 0.05; % Pulsation de variation
for i = 1:N
temps = i * Te;
fc(i) = fc_moyenne + amplitude_fc * sin(omega_fc * temps);
Tc(i) = 1 / fc(i);
rapport_cyclique(i) = determiner_rapport_cyclique(Ua_ref(i), Ub_ref(i), Uc_ref(i), Tc(i));
[MLI_a(i), MLI_b(i), MLI_c(i)] = generer_signaux_mli(rapport_cyclique(i), Tc(i));
end
Algorithme hybride personnalisé
Cette stratégie combine plusieurs méthodes selon des critères temporels ou conditionnels :
duree_phase1 = 0.01; % Durée de la première phase
nb_echantillons_phase1 = duree_phase1 / Te;
for i = 1:N
if i <= nb_echantillons_phase1
% Phase sinusoïdale
fc(i) = fc_moyenne + amplitude_fc * sin(omega_fc * i * Te);
else
% Phase aléatoire avec probabilité conditionnelle
if rand() > 0.3
fc(i) = fc_bas + (fc_haut - fc_bas) * rand();
else
fc(i) = fc_moyenne + amplitude_fc * sin(omega_fc * i * Te * 1.5);
end
end
Tc(i) = 1 / fc(i);
rapport_cyclique(i) = determiner_rapport_cyclique(Ua_ref(i), Ub_ref(i), Uc_ref(i), Tc(i));
[MLI_a(i), MLI_b(i), MLI_c(i)] = generer_signaux_mli(rapport_cyclique(i), Tc(i));
end
Validation par simulation
L'exécution du modèle Simulink permet d'analyser les performances vibratoires et acoustiques du moteur. L'analyse spectrlae du courant statorique révèle une dispersion significative de l'énergie harmonique, avec une réduction notable des pics d'harmoniques aux fréquences critiques. Les résultats confirment l'efficacité de la modulation par étalement de spectre pour l'atténuation des vibrations haute fréquence.
Le choix de la méthode d'étalement dépend des contraintes spécifiques de l'application : performances desired, complexité implémentative et ressources de calcul disponibles.