Technique de modulation par étalement de spectre pour moteur synchrone à aimants permanents

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.

Étiquettes: MATLAB Simulink msap moteur-synchrone-aimants-permanents svpwm

Publié le 13 juin à 21h58