%% Moteur synchrone à aimants permanents

% v03-v4pdf : code versioning pour suivi des versions A.Hodder
% v03 with R and not Rs
close all; clear; clc  % on ferme tout et clear tout

%% Préambule
% Dans cet exercice, nous allons étudier le moteur synchrone à aimants permanent, alimenté en "commutation par bloc à 120°".
% Les moteurs synchrones à aimants permanents alimentés de cette manière sont habituellement appelés Brushless ou BLDC (BrushLessDC motor) car ils possèdent la même caractéristique couple-vitesse qu'un moteur DC à aimants permanents.
% Avec ce type d'alimentation, l'inductance du stator peut habituellement être négligée car la forme de l'alimentation correspond à des blocs continus de 120° (d'où son nom).
% A noter que, comme seules 2 phases sont alimentées en même temps, la proportionnalité entre couple et courant n'est pas donnée par 3\,k_{\phi}mais par un coefficient appelé k_T.
% Les équations principales sont donc:
% U=R\,I+k_{\Phi}\,\Omega   (1)
% U_i=k_{\Phi}\,\Omega  (2)
% T_{em}=k_T\,I  (3)
% où toutes les grandeurs électriques sont des grandeurs de phase.
%% Donnée
% Un dispositif est constitué d'un moteur synchrone à aimants permanents alimenté en commutation par bloc à 120°.
% La tension d'alimentaiton vaut 48 [V] (tension de phase).
% La résistance statorique est mesurée à 1.03 [\Omega].
% L'électronique de puissance limite le courant à 12 [A].
% Le coefficient k_{\phi} vaut 0.147\, [V s/rad].
% Le coefficient k_T vaut 0.243\, [Nm/A].

U = 48;       % [V] - tension de phase
R = 1.03;    % [Ohm]
IlimPE = 12;  % [A] - Courant limité par Power Electronic (PE)
kphi = 0.147; % [V s/rad]
kT = 0.243;   % [Nm/A]

% Questions
% 1. Quelle est la vitesse théorique maximale que le moteur peut atteindre ?
% 2. Quel est le courant maximum que peut consommer le moteur et le couple correspondant ?
% 3. En supposant une caractéristique de charge proportionnelle à la vitesse, quelle est la vitesse dans ce cas ?
% T_{load}=k_1\,\Omega\,[Nm]

k1 = 5e-3 % [Nm s/rad]

% 4. En supposant une caractéristique de charge proportionnelle au carré de la vitesse, quelle est la vitesse dans ce cas ?
% T_{load}=k_2\,\Omega^2\,[Nm]

k2 = 0.15e-3 %[Nm (s/rad)^2]

%% Figure
% Création de la figure de référence

fig_max_speed = (60/(2*pi))*U/kphi; %3200
fig_max_speed = ceil(fig_max_speed/100)*100
fir_max_Tem = ceil(kT*U/R);

fig_speed = 0:10:fig_max_speed;
fig_Omega = fig_speed*2*pi/60;
fig_I = (U-kphi*fig_Omega)/R;
fig_Tem = kT*fig_I;
fig_I(fig_I>IlimPE)=IlimPE;
fig_Tem_lim = kT*fig_I;
fig_Tload1 = k1*fig_Omega;
fig_Tload2 = k2*fig_Omega.^2;

figure
plot(fig_speed,fig_Tem, 'linewidth',2)
hold on
plot(fig_speed,fig_Tem_lim, 'linewidth',2)
plot(fig_speed,fig_Tload1, 'linewidth',2)
plot(fig_speed,fig_Tload2, 'linewidth',2)
grid on
title('Caractéristique couple-vitesse');
xlabel('Vitesse [tr/min]')
ylabel('Couple [Nm]')
legend('Tem (non limité)', 'Tem (limité)', 'Tload1', 'Tload2')
ylim([0 fir_max_Tem]);
xlim([0 fig_max_speed]);

%% Résolution
% La vitesse correspondant à l'intersection entre la limite de couple dû à la limitation du courant et le couple réel du moteur est appelée "corner speed". Elle correspond au point où le courant moteur vaut le courant limité par l'électronique de puissance.
%% Corner speed

Omega_corner_speed = 
N_corner_Speed = 
I_corner_speed = 
Tem_corner_speed = 

% Affichage de la corner speed

plot(N_corner_Speed, Tem_corner_speed, 'Ok', 'linewidth',2);
plot([N_corner_Speed, N_corner_Speed], [0, Tem_corner_speed], 'k');
legend('Tem (non limité)', 'Tem (limité)', 'Tload1', 'Tload2', 'Corner speed')

%% Question 1

Omega0 = 
N0 = 

% Affichage du point correspondant

text(N0+50,0.05,'1.','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')

%% Question 2

I2 = 
Tem2a = 

Tem2b = 

% Affichage du point correspondant

text(130,Tem2a,'2.a','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')
text(130,Tem2b*1.02,'2.b','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')

%% Question 3

Omega3 = 
N3 = 

% Affichage du point correspondant

Tem3 = k1*Omega3;
text(N3+40,Tem3*1.05,'3.','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')

%% Question 4

Omega4a = 
N4a = 

Omega4b = 
N4b = 

% Affichage des points correspondant

Tem4a = k2*s1^2;
Tem4b = k2*Omega4b^2;
text(N4a+30,Tem4a*1.05,'4.a','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')
text(N4b,Tem4b*1.02,'4.b','fontweight','bold','VerticalAlignment','bottom','HorizontalAlignment','right')

%
%
%
%
%
%
%