Applications maquette d'étude EP10K20GÉNÉRATEUR PWM SVM TRIPHASÉ POUR
MOTEUR BLDC
SCHÉMAS ET DESCRIPTIONS POUR EPLDL'acronyme SVM provient de "Space Vector Modulation". Il s'agit d'un procédé de PWM permettantd'appliquer au moteur une tension entre phases de forme sinusoïdale et d'amplitude égale à la tensionDC appliquée aux 3 bras de l'interface de puissance. Le gain est de 15% par rapport au procédé PWMsinusoïdal conventionnel.
1. ObjectifsÉtudier, mettre en œuvre et tester des structures proches de celles intégrées dans les microcontroleursMICROCHIP destinées à piloter des moteurs BLDC (brushless à courant continu).Le moteur utilisé pour les tests est en fait une machine "synchro" de PRECILEC qui comportent unstator et un rotor triphasé à 1 paire de pôles (modèle 50MT33). Le rotor est alimenté en DC entre 2phase pour le magnétiser, le stator est alimenté par une source DC de 12V via 3 bras PWM.
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 2/25 TS électronique - 31/08/06
2. Principe de la modulation SVOn utilise la structure classique des 3 bras de commutateurs commandés par 3 comparateurs. Le signalde référence est de forme triangulaire et de fréquence FPWM très grande devant la fréquence des signauxua, ub et uc (au moins 20x).
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 3/25 TS électronique - 31/08/06
Dans ces conditions on peut écrire (commutateurs parfaits) :
amoy u2EUan , bmoy u
2EUbn et cmoy u
2EUcn
Les valeurs instantanées de ua, ub et uc doivent rester à l'intérieur des valeurs crêtes de laporteuse ("carrier).
En éliminant les composantes harmoniques (fréquences multiples de FPWM), et si FPWM est très grandedevant la fréquence des signaux ua, ub et uc, on peut confondre Uanmoy et Uan.
2.1 PWM sinusoïdalOn produit 3 consignes sinusoïdales déphasées de 120° :
ωtsinmua
32ωtsinmub
34ωtsinmuc
m : indice de modulation compris entre 0 et 1Il en résulte :
ωtsinm2EUaN
32ωtsinm
2EUbN
34ωtsinm
2EUcN
CQFDLes tensions entre phases sont :
6ωtsinm3
2EUab
65ωtsinm3
2EUbc
23ωtsinm3
2EUca
L'amplitude maximum entre phases est donc de 32E , soit 86,6% de E pour m=1.
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 4/25 TS électronique - 31/08/06
2.2 Modulation Space VectorLes 6 commutateurs peuvent prendre 23
états différents représentés dans la figureci-contre.Ces 8 états sont codés de S0 à S7. Lamodulation "SV" consiste à piloter lescommutateurs en PWM pour passerprogressivement d'un état au suivant.
Les 3 sorties a, b et c alimentent les 3phases du moteur qui créent des champsmagnétiques déphasés de 120°.On peut alors représenter l'orientation duchamp magnétique pour chacun des 8états. Ces états se transforment alors envecteurs de tension ( 0U
à 7U
sur la
figure ci-contre).Les états S0 et S7 ne créent pas de champmagnétique, les vecteurs 0U
et 7U
ont
donc une longueur nulle.Les autres vecteurs ont une longueur de 1et respectent les relations suivantes :
41 UU
52 UU
63 UU
0UUU 531
Objectif : créer un vecteur U
de longueurconstante qui suit, pour sa valeur maxi, le
cercle en pointillé de rayon 23 .
Pour cela on module en conséquence les rapports cycliques de conduction des commutateurs danschacun des 6 secteurs.En notant T0 à T7 la durée de chaque état S0 à S7 sur une période PWM, on obtient la relation vectoriellesuivante (on suppose que la fréquence PWM est très grande devant la vitesse de rotation du vecteur U
:
7S
76
S
65
S
54
S
43
S
32
S
21
S
10
S
0 UTT
UTT
UTT
UTT
UTT
UTT
UTT
UTT
U
Avec TS=T0+T1+T2+T3+T4+T5+T6+T7 : période PWM
Pour respecter cette relation à la lettre et donc atteindre l'objectif, il faut calculer les durées T0 à T7 pourchaque position angulaire de U
. On en déduit les consignes de tension ua, ub et uc nécessaires.
Ce procédé n'est pas utilisé car il provoque de trop nombreux changements d'états (32 par périodePWM) et les pertes par commutation deviennent excessives.Solution adoptée : Le diagramme vectoriel est divisé en 6 secteurs de 60° Dans chaque secteur, seuls 4 vecteurs iU
sont utilisés pour produire U
(les 2 vecteurs qui
encadrent le secteur, ainsi que 0U
et 7U
) :
secteur I : 7S
72
S
21
S
10
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T1+T2+T7 : période PWM
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 5/25 TS électronique - 31/08/06
secteur II : 7S
73
S
32
S
20
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T2+T3+T7
secteur III : 7S
74
S
43
S
30
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T3+T4+T7
secteur IV : 7S
75
S
54
S
40
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T4+T5+T7
secteur V : 7S
76
S
65
S
50
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T5+T6+T7
secteur VI : 7S
71
S
16
S
60
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T6+T7+T7
A un instant donné, l'angle magnétique du moteur se trouve dans un des 6 secteurs. On calcule alorsles rapports cycliques nécessaires pour placer le vecteur U
dans cette position.
Cette solution ne nécessite que 12 changements d'états par période PWM (pertes plus faibles) et réduitaussi le nombre de calculs nécessaires.Par exemple, dans le secteur I :
7S
72
S
21
S
10
S
0 UTT
UTT
UTT
UTT
U
Avec TS=T0+T1+T2+T7 : période PWM
Quand le vecteur U
se déplace de 0° à 60°, la durée T1 de S1 varie du max à 0 tandis que ladurée T2 de S2 varie de 0 au max.On choisit généralement : T0 = T7 pour des raisons de symétrie et limiter les composantesharmoniques.Pour obtenir un vecteur U
de longueur m (m est l'indice de modulation), on calcule T0, T1, T2 et
T7 à partir du diagramme vectoriel :
tω
3πsinm
32
3πsinm
32
TT
S
1
tωsinm3
2sinm3
2TT
S
2
2
TTTTT
TT 21S
S
7
S
0
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 6/25 TS électronique - 31/08/06
On en déduit :
S
0TT
PWMa
S
01T
TTPWMb
S
7S
S
210T
T-TT
TTTPWMc
Pour ne pas obtenir des durées T0 et T7 négatives (irréalisables !), le vecteur U
doit rester àl'intérieur de l'hexagone. Le cas limite est obtenu à = 30°: on obtient T1=T2=TS/2 et T0=T7=0
quand le vecteur U
est sur le cercle en pointillé de rayon 23 .
L'indice de modulation m doit donc rester inférieur à mmax =23 = 0,866
Pour cette valeur mmax, on obtient :
amplitude de Ua , Ub et Uc = E0,433E43m
2E
max
amplitude de Uab, Ubc et Uca = Em32E
max
Conclusion : les amplitudes sont augmentées de 15,5% par rapport au PWM sinusoïdalconventionnel.
2.3 Durées des états des commutateurs dans chaque secteurUne simple transposition d'angle permet de calculer les durées T0 à T7 des états S0 à S7 dans chacun dessecteurs :
Secteur I Secteur II Secteur III(0 /3) (/3 2/3) (2/3 )
3πm.sin
32
TT
S
1
32.πm.sin
32
TT
S
2 m.sin3
2TT
S
3
m.sin3
2TT
S
2
3m.sin
32
TT
S
3
32m.sin
32
TT
S
4
S
21S
S
7
S
02.T
TTTTT
TT
S
32S
S
7
S
02.T
TTTTT
TT
S
43S
S
7
S
02.T
TTTTT
TT
Secteur IV Secteur V Secteur VI( 4/3) (4/3 5/3) (5/3 2)
34πm.sin
32
TT
S
4
35πm.sin
32
TT
S
5 2m.sin3
2TT
S
6
m.sin3
2TT
S
5
34m.sin
32
TT
S
6
35m.sin
32
TT
S
1
S
54S
S
7
S
02.T
TTTTT
TT
S
65S
S
7
S
02.T
TTTTT
TT
S
16S
S
7
S
02.T
TTTTT
TT
On constate que les calculs donnent des résultats identiques dans chaque secteur ce qui simplifie laréalisation du modulateur.
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 7/25 TS électronique - 31/08/06
2.4 Succession des états des commutateurs dans chaque secteurLes solutions sont multiples, mais on s'impose le critère suivant : pas de changement d'état simultanéde 2 bras. On obtient les résultats suivants :
Etats S0 (000) S1 (100) S2 (110) S7 (111) S2 (110) S1 (100) S0 (000)Durées T0/2 T1/2 T2/2 T7 T2/2 T1/2 T0/2
UaN
UbN
UcN
Etats S0 (000) S3 (010) S2 (110) S7 (111) S2 (110) S3 (010) S0 (000)Durées T0/2 T3/2 T2/2 T7 T2/2 T3/2 T0/2
UaN
UbN
UcN
Etats S0 (000) S3 (010) S4 (011) S7 (111) S4 (011) S3 (010) S0 (000)Durées T0/2 T3/2 T4/2 T7 T4/2 T3/2 T0/2
UaN
UbN
UcN
Etats S0 (000) S5 (001) S4 (011) S7 (111) S4 (011) S5 (001) S0 (000)Durées T0/2 T5/2 T4/2 T7 T4/2 T5/2 T0/2
UaN
UbN
UcN
Etats S0 (000) S5 (001) S6 (101) S7 (111) S6 (101) S5 (001) S0 (000)Durées T0/2 T5/2 T6/2 T7 T6/2 T5/2 T0/2
UaN
UbN
UcN
Etats S0 (000) S1 (100) S6 (101) S7 (111) S6 (101) S1 (100) S0 (000)Durées T0/2 T1/2 T6/2 T7 T6/2 T1/2 T0/2
UaN
UbN
UcNTS
Sect
eur V
Sect
eur V
ISe
cteu
r ISe
cteu
r II
Sect
eur I
IISe
cteu
r IV
2.5 Calculs des rapports cycliques dans chaque secteurCes calculs étant numériques, il est nécessaire de fixer la résolution de l'angle magnétique du moteur.Dans l'exemple qui suit la résolution choisie est de 360/(6x256)=0,234°.Il serait possible de calculer les 3 rapports cycliques de chaque bras pour les 6x256=1536 anglesélémentaires et les ranger dans une table en mémoire morte. Cette solution est rejetée car la taille de latable excède les possibilités de l'EPLD. Celle-ci n'intègre que 12288 bits alors que la table nécessite1536x3x8 bits (3 rapports cycliques codés sur 8 bits) = 36864 bits.
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 8/25 TS électronique - 31/08/06
Les symétries dans le diagramme vectoriel permettent de réduire la taille de la table, mais au détrimentde calculs supplémentaires que l'EPLD doit exécuter.Les 2 tables utilisées permettent de déterminer les rapports cycliques TA/TS et TB/TS dans un secteur :
Table TA :
3πsinm
32
TT
S
A
Table TB : sinm3
2TT
S
B pour 3
0
La correspondance entre les temps Ti et TA ou TB est donnée dans le tableau ci-dessous :
UaN UbN UcNSect. Période PWM TA TB PWMa PWMb PWMc
I TS = T1+T2+T0+T7 T1 T2S
0TT
S
A0
S
10T
TTT
TT
S
0S
S
7ST
TTT
TT
II TS = T2+T3+T0+T7 T2 T3S
B0
S
30T
TTT
TT
S
0TT
S
0S
S
7ST
TTT
TT
III TS = T3+T4+T0+T7 T3 T4S
0S
S
7ST
TTT
TT
S
0TT
S
A0
S
30T
TTT
TT
IV TS = T4+T5+T0+T7 T4 T5S
0S
S
7ST
TTT
TT
S
B0
S
50T
TTT
TT
S
0TT
V TS = T5+T6+T0+T7 T5 T6 S
A0
S
50T
TTT
TT
S
0S
S
7ST
TTT
TT
S
0TT
VI TS = T6+T1+T0+T7 T6 T1S
0TT
S
0S
S
7ST
TTT
TT
S
B0
S
10T
TTT
TT
Le rapport cyclique T0/TS est calculé comme suit :
S
B
S
A
S
BAS
S
7
S
0TT
TT
121
2.TTTT
TT
TT
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 9/25 TS électronique - 31/08/06
2.6 Simulation ExcelLe tableur Excel est utilisé pour valider les tables de valeurs des rapports cycliques. Le fichier"Table_TA_TB_T0.xls" comporte les tables et les formules de calcul décrites précédemment.On obtient les résultats suivants sur 360° magnétiques :
Les 3 rapports cycliques
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
0 60 120 180 240 300 360
PWMaPWMb PWMc
Les 3 tensions inter-phases (relativement à E)
-1
-0,8
-0,6
-0,4
-0,2
0
0,2
0,4
0,6
0,8
1
0 60 120 180 240 300 360
Ua-Ub
Ua-Ub
Uc-Ua Ub-Uc
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 10/25 TS électronique - 31/08/06
3. Schéma principal
Note : le moteur actuellement utilisé n'étant pas équipé de capteurs à effet Hall, on utilise un simulateur("Simul_Hall") qui produit les 3 signaux H1, H2 et H3 déphasés de 60°. La fréquence est réglable avecle codeur incrémental et détermine la vitesse de rotation du moteur.
Fonction : le codeur incrémental règle indépendamment la tension appliquée au moteur (quand LINE1est à "0") et la vitesse de rotation du moteur (quand LINE1 est à "1"). Les signaux PWM1D à PWM3Upilotent une interface de puissance (voir schéma plus loin) qui produit les 3 tensions inter-phasessinusoïdales d'alimentation des 3 stators du moteur.Avec le moteur utilisé (1 paire de pôles), la vitesse de rotation est réglable entre 0 et 1384tr/mn avecune résolution de 21,97tr/mn.La consigne de niveau (NV) a une résolution de 8 bits.
Le signal d'horloge CLK_18M432 est produit par l'oscillateur à quartz OSC1 et vaut 18,432MHz.
4. Gene_CLKOn cherche à rendrel'ensemble du schémasynchrone avec l'horloge18,432MHz.La fonction "Gene_CLK"produit des signaux devalidation d'horloge (durée =1 période 18,432MHz) avecune fréquence déterminée enfonction des besoins : EN_2K25 : 2,25KHz EN_72K : 72kHz EN_4M608 : 4,608MHz
VCCCLK_18M432 INPUT
EN_72KOUTPUT
EN_2K25OUTPUT
EN_4M608OUTPUT
CLK OUT
Div_256
inst1
CLK
EN
OUT
Div_32
inst3
CLK EN_CLK
DIV_4
inst
PIN_110 VCCCODA INPUT
PIN_109 VCCCODB INPUT
PIN_91
VCCCLK_18M432 INPUT
PIN_90 VCCLINE1 INPUT
PIN_48PWM1DOUTPUT
PIN_49PWM1UOUTPUT
PIN_50PWM2DOUTPUT
PIN_51PWM2UOUTPUT
PIN_53PWM3DOUTPUT
PIN_54PWM3UOUTPUT
PIN_103COL1OUTPUT
PIN_164CLK_CNAOUTPUT
PIN_75TESTOUTPUT
PIN_76TEST1OUTPUTPIN_78TEST2OUTPUT
PIN_74SYNCOUTPUT
PIN_62H1OUTPUT
PIN_63H2OUTPUT
PIN_64H3OUTPUT
PIN_71PIN_72PIN_73
SECT[2..0]OUTPUTPIN_166PIN_167PIN_168PIN_169PIN_171PIN_172PIN_173PIN_174
MAGN_POS[7..0]OUTPUT
DELAY[5..0]
DELAY
inst4
LIMIT[5..0]
LIMIT
inst5
GND
EN_CODCODACODBCLK_18M432EN_2K25
H1H2H3
Simul_Hall
inst3
PDC1[7..0]PDC2[7..0]PDC3[7..0]DELAY[5..0]CLK_18M432CLK_EN
PTMR[7..0]TEST
PWM1DPWM1UPWM2DPWM2UPWM3DPWM3U
Generateur_PWM
inst1
CLK_18M432 EN_2K25EN_72K
EN_4M608
Gene_CLK
inst2
EN_CODCODACODBCLK_18M432EN_2K25
NIV[7..0]
Reg_Niveau
inst10
NOT
inst11
H1H2H3M[7..0]LIM[5..0]CLK_18M432EN_72K
SYNCPOS[7..0]
SECT[2..0]PWM1[7..0]PWM2[7..0]PWM3[7..0]
Gene_3_SVM
inst
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 11/25 TS électronique - 31/08/06
4.1 DIV_4subdesign DIV_4(CLK : input;EN_CLK : output;
)variableQ[1..0] : DFF;
beginQ[].clk=CLK;Q[].d=Q[].q+1;EN_CLK=Q[].q==0;
end;
4.2 DIV_256SUBDESIGN Div_256(CLK : INPUT;OUT : OUTPUT;
)VARIABLE Q[7..0] : DFF;BEGINQ[].CLK=CLK;Q[].D=Q[].Q+1;OUT=Q[].Q==0;
END;
4.3 DIV_32SUBDESIGN Div_32(CLK : INPUT;EN : input;OUT : OUTPUT;
)VARIABLE Q[4..0] : DFFE;BEGINQ[].CLK=CLK;Q[].ena=EN;Q[].D=Q[].Q+1;OUT=(Q[].Q==0)&EN;
END;
5. Simul_Hall
Les signaux CODA et CODB produits par le codeur incrémental passent par des fonctions anti-rebondsindispensables compte-tenu de la fréquence d'horloge.Le sens de chaque cran est détecté par la fonction "decod_a_b" : DIR indique le sens au moment du sur CLK : "1" : CW et "0" : CCW
VCCCODB INPUT
VCCCODA INPUT
VCCCLK_18M432 INPUT
VCCEN_2K25 INPUT
VCCEN_COD INPUT
H1OUTPUT
H2OUTPUT
H3OUTPUT
INENCLK
OUT
Anti_rebonds
inst2
INENCLK
OUT
Anti_rebonds
inst3
NOT
inst12
NOT
inst13
A
B
DIR
CLK
decod_a_b
inst15
UD
CLK
POS[6..0]
SENS
CPT_UD
inst5
AND2
inst4
FREQ[6..0]
CLK
H1
H2
H3
NCO_H
inst
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 12/25 TS électronique - 31/08/06
Les sur CLK sont comptés ou décomptés par la fonction CPT_UD : POS[6..0] : nombre de crans. Initialisé à 0 au moment de la configuration de l'EPLD. SENS : indique le sens du nombre de crans ("0" : CW, "1" : CCW)
La fonction CPT_UD pilote un oscillateur numérique commandé (NCO) qui produit en interne unsignal carré de fréquence proportionnelle à POS[]=FREQ[] :
FREQ[]2
FF 23
CLK_18M432H . Soit une résolution de 2,19Hz et une fréquence max de 138,4Hz
Cette fréquence est appliquée à un compteur 3 bits modulo 6 dont les sorties sont décodées pourproduire les 3 signaux H1, H2 et H3 déphasés de 60°.La fréquence de ces signaux est donc réglable de 0Hz à 23,07Hz avec une résolution de 0,366Hz.
5.1 Anti_rebonds
Les 2 premières bascules D permettent d'éliminer les effets des rebonds plus courts que 2 périodesd'horloge validées : soit 2/2,25kHz = 889µS
5.2 Decod_a_bSUBDESIGN decod_a_b(
A, B : INPUT;DIR, CLK : OUTPUT;
)VARIABLEDIR_FF : DFF;
BEGINDIR_FF.CLK = B;DIR_FF.D = A;DIR = DIR_FF.Q;CLK = A & B;
END;
L'information de direction est échantillonnée sur A au de B.Le signal CLK est produit par une fonction ET entre A et B.
5.3 CPT_UDsubdesign CPT_UD(UD, CLK : input;POS[6..0] : output;SENS : output;
)variable Q[7..0] : dff;beginQ[].clk=CLK;if UD then Q[].d=Q[].q+1;
else Q[].d=Q[].q-1;end if;if Q7.q then POS[6..0]=!Q[6..0];
else POS[6..0]= Q[6..0];end if;SENS=Q7.q;
end;
Les sur CLK sont comptés ou décomptés par la fonction CPT_UD :
VCCIN INPUT
VCCEN INPUT
VCCCLK INPUT
OUTOUTPUT
PRN
CLRN
D
ENA
Q
DFFE
inst
PRN
CLRN
D
ENA
Q
DFFE
inst2
AND2
inst3
OR2
inst4
AND2
inst5
AND2
inst6
OR2
inst7
PRN
CLRN
D
ENA
Q
DFFE
inst8
NOT
inst9
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 13/25 TS électronique - 31/08/06
POS[6..0] : nombre de crans. Initialisé à 0 au moment de la configuration de l'EPLD. SENS : indique le sens du nombre de crans ("0" : CW, "1" : CCW)
5.4 NCO_Hsubdesign NCO_H( FREQ[6..0] : input;
CLK : input;H1,H2,H3 : output;
)
variableREG[22..0] : dff;FREQW[22..0] : node;QH[2..0] : dff;
beginFREQW[22..7]=gnd; FREQW[6..0]=FREQ[6..0];REG[].d = REG[].q + FREQW[];REG[].clk = CLK;QH[].clk = REG22.q;if QH[].q==5 then QH[].d=0;
else QH[].d=QH[].q+1;end if;H1=(QH[].q==0) or (QH[].q==1) or (QH[].q==2);H2=(QH[].q==1) or (QH[].q==2) or (QH[].q==3);H3=(QH[].q==2) or (QH[].q==3) or (QH[].q==4);
end;La structure est classique. Le registre et l'additionneur ont une taille de 23 bits pour obtenir la résolutionde réglage voulue.La sortie REG22.q est utilisée comme signal d'horloge d'un compteur 3 bits modulo 6. Les 3 sorties sontdécodées pour produire les 3 signaux H1, H2 et H3 déphasés de 60°.
6. Reg_Niveau
La structure est similaire à la fonction "Simul_Hall", mais elle ne comporte pas de fonction NCO.La fonction de comptage des crans diffère aussi; elle ne nécessite pas de commentaires supplémentaires.
VCCCODB INPUT
VCCCODA INPUT
VCCCLK_18M432 INPUT
VCCEN_2K25 INPUT
VCCEN_COD INPUT
NIV[7..0]OUTPUT
INENCLK
OUT
Anti_rebonds
inst2
INENCLK
OUT
Anti_rebonds
inst3
NOT
inst12
NOT
inst13
A
B
DIR
CLK
decod_a_b
inst15
AND2
inst4
up/downupdow nclock q[7..0]
Cpt_UD_Niv
inst1
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 14/25 TS électronique - 31/08/06
7. Gene_3SVM
La fonction produit 3 signaux numériques SVM codés en Bd sur 8 bits et déphasés de 120°. Ils sontsynchronisés sur les signaux des capteurs à effet Hall : H1, H2 et H3. Leurs niveaux sont réglables avecles entrées NIV1, NIV2 et NIV3 codées en C2 (-128 à +127).La structure utilise 2 ROM (taille = 256 octets) contenant les tables TA et TB (voir §2).Les ROM sont adressées par M_POS[7..0] qui représente la position angulaire du moteur dans un des 6secteurs. Le codage sur 8 bits donne une résolution de 60/256=0,235° magnétique.Le secteur actuel est donné par SECT[2..0] qui évolue entre 0 et 5. Cette information est utilisée par lafonction "CAL_SVM" qui calcule les rapports cycliques permettant de produire la tensiond'alimentation adéquate du moteur.La fonction "Modulation" multiplie les valeurs TA[] et TB[] (en BN) avec l'indice de modulation M[] etréalise donc le réglage de niveau. On ne garde que l'octet de poids fort du résultat.La fonction "LIMIT_PWM" évite d'obtenir les rapports cycliques extrêmes de 0% et 100% et bloquer lehachage des courants dans le moteur.
VCCLIM[5..0] INPUT
VCCCLK_18M432 INPUT
VCCEN_72K INPUT
VCCH1 INPUT
VCCH2 INPUT
VCCH3 INPUT
SYNCOUTPUT
PWM1[7..0]OUTPUT
PWM2[7..0]OUTPUT
PWM3[7..0]OUTPUT
SECT[2..0]OUTPUT
POS[7..0]OUTPUT
address[7..0] q[7..0]
ROM_TA
inst7
address[7..0] q[7..0]
ROM_TB
inst8
SECT[2..0]
TA[7..0]
TB[7..0]
PWM_R[7..0]
PWM_Y[7..0]
PWM_B[7..0]
CALC_SVM
inst9
IN1[7..0]
IN2[7..0]
IN3[7..0]
LIM[5..0]
CLK
EN
OUT1[7..0]
OUT2[7..0]
OUT3[7..0]
LIMIT_3PWM
inst4
H1H2H3CLK_18M432EN_72K
SECT[2..0]PULSE_H
M_POS[7..0]
Capteur_Hall
inst TA[7..0]TB[7..0]M[7..0]
TAM[7..0]TBM[7..0]
Modulation
inst1VCC
M[7..0] INPUT
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 15/25 TS électronique - 31/08/06
7.1 Capteur_Hall
7.1.1 Anti_rebondsFonctions déjà décrites (§5.1)7.1.2 Pulse_Hall
Cette fonction détecte les changements d'états de H1, H2 et H3 pour produire : sur PULSE_0 : une impulsion de largeur 1/FCLK au de H1 sur PULSE_H : une impulsion de largeur 1/FCLK au ou de H1, H2 ou H3
Le signal PULSE_0 met à zéro de façon synchrone le compteur de secteurs et réalise donc lasynchronisation 360°" de l'alimentation du moteur.Le signal PULSE_0 met à zéro de façon synchrone le compteur de position dans un secteur pourl'initialiser à chaque détection de secteur.
IMPORTANT : on peut améliorer la fonction de synchronisation en codant les signaux H1, H2 et H3et en affecter le compteur de secteurs à chaque transition. Le plus simple serait de remplacer lecompteur par une machine d'états qui produit 3 signaux similaires à H1, H2 et H3.
VCCCLK_18M432 INPUT
VCCH1 INPUT
VCCH2 INPUT
VCCH3 INPUT
VCCEN_72K INPUT
PULSE_HOUTPUT
SECT[2..0]OUTPUTINENCLK
OUT
Anti_rebonds
inst
INENCLK
OUT
Anti_rebonds
inst4
INENCLK
OUT
Anti_rebonds
inst5
down countersloaddata[15..0]
clock
q[15..0]cout
Div_prog_16b
inst9
up countersclr
clockclk_encnt_en
q[7..0]cout
Cpt_Magn_pos
inst10NOT
inst11
DFFdata[15..0]clock
enableq[15..0]
Periode_H
inst8
OR2
inst12
H1H2H3CLK
PULSE_0PULSE_H
Pulse_Hall
inst6
up countermodulus 6sclr
clockclk_en
q[2..0]
Cpt_Sect_SVM
inst13
up countersclr
clock
cnt_en
q[15..0]
Cpt_Mesure_TH
inst7
M_POS[7..0]OUTPUT
VCCH1 INPUT
VCCH2 INPUT
VCCH3 INPUT
VCCCLK INPUT
PULSE_HOUTPUT
PULSE_0OUTPUT
CLRN
DPRN
Q
DFF
inst
XOR
inst1
OR3
inst2
CLRN
DPRN
Q
DFF
inst3
XOR
inst4
CLRN
DPRN
Q
DFF
inst5
XOR
inst6
AND2
inst7
NOT
inst8
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 16/25 TS électronique - 31/08/06
7.1.3 Cpt_Sect_SVMIl est incrémenté au début de chaque secteur grâce au signal PULSE_H.7.1.4 Cpt_Magn_posCompteur 8 bits synchrone à raz synchrone.La sortie COUT permet de bloquer le compteur quand il atteint 255.Il est incrémenté à un rythme tel que son état évolue entre 0 et une valeur aussi proche que possible de255 dans un secteur. Le rythme est calculé à la fin de chaque secteur par les fonctions"Cpt_Mesure_TH", "Periode_H" et "Div_prog_16b".7.1.5 Cpt_Mesure_THCe compteur est incrémenté au rythme de 72kHz grâce au signal EN_72K.Il est mis à 0 de façon synchrone avec PULSE_H, donc au début de chaque secteur. Son état juste avantcette raz est donc proportionnel à la durée TSECT du dernier secteur :
Etat final Cpt_Mesure_TH = 72000.TSECT
Exemples : Vitesse de rotation magnétique TSECT Etat final Cpt_Mesure_TH66,7 tours/mn 150mS 108003333 tours/mn 3mS 216
La vitesse de rotation magnétique doit être comprise entre 11 tr/mn et 7200 tr/mn pour éviter ledépassement du compteur et obtenir un résultat supérieur à 100 (précision meilleure que 1%).7.1.6 Periode_HSa fonction est simplement de mémoriser le résultat 72000.TSECT au moment adéquat.7.1.7 Div_prog_16bIl s'agit d'un décompteur synchrone 16 bits à prépositionnement synchrone. L'horloge est le signalCLK_18M432 de fréquence 18,432MHz.La sortie COUT passe à "1" quand le compteur est à 0. Sa fréquence est donc de :
SECTSECTSECT
CLK_18M432COUT T
256T72000
184320001T72000
FF
Cette fréquence incrémente le compteur "Cpt_Magn_pos" qui est mis à zéro au début de chaque secteur,donc avec une périodicité de TSECT.Ainsi, quand le moteur tourne à vitesse constante, le compteur atteint tout juste la valeur 255 à la fin dechaque secteur, quelle que soit cette vitesse : CQFD.
7.2 ROM_TACette ROM de 256 octets contient la table TA vue au §2.5. Elle est mise à l'échelle :
Table TA :
3π
2567..0M_POS
3πsin256
TT
ROMS
A pour 0 M_POS[] 255
Extrait du fichier "Table_TA.mif" (adresse à gauche, donnée à droite) :WIDTH = 8;DEPTH = 256;ADDRESS_RADIX = DEC;DATA_RADIX = DEC;CONTENTBEGIN0 : 222 ;1 : 221 ;2 : 221 ;3 : 220 ;…252 : 4 ;253 : 3 ;254 : 2 ;255 : 1 ;END;
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 17/25 TS électronique - 31/08/06
7.3 ROM_TBCette ROM de 256 octets contient la table TB vue au §2.5. Elle est mise à l'échelle :
Table TB :
3π
2567..0M_POSsin256
TT
ROMS
B pour 0 M_POS[] 255
Extrait du fichier "Table_TB.mif" (adresse à gauche, donnée à droite) :WIDTH = 8;DEPTH = 256;ADDRESS_RADIX = DEC;DATA_RADIX = DEC;CONTENTBEGIN0 : 0 ;1 : 1 ;2 : 2 ;3 : 3 ;4 : 4 ;…250 : 218 ;251 : 219 ;252 : 220 ;253 : 220 ;254 : 221 ;255 : 221 ;END;
7.4 Calc_SVMCette fonction effectue les calculs décrits dans le tableau du §2.5 pour obtenir les 3 rapports cycliquesPWMa, PWMb et PWMc. Les calculs dépendent du secteur dans lequel se trouve l'axe magnétique dumoteur; cette information est fournie par SECT[2..0].Dans le tableau du §2.5, les valeurs des rapports cycliques PWMa, PWMb et PWMc sont comprisesentre 0 et 1. Dans la solution proposée, les rapports cycliques correspondants PWM_R, PWM_Y etPWM_B sont des entiers positifs codés sur 8 bits, donc de valeurs comprises entre 0 et 255.subdesign CALC_SVM(SECT[2..0]:input;TA[7..0]:input;TB[7..0]:input;PWM_R[7..0]:output;PWM_Y[7..0]:output;PWM_B[7..0]:output;
)variableT0_x2[7..0]:node;T0[7..0] :node;
beginT0_x2[]=255-TA[]-TB[]+1; -- +1 pour éviter les dépassementsT0[6..0]=T0_x2[7..1]; T0[7]=GND;case SECT[] iswhen 0 => PWM_R[]=T0[];
PWM_Y[]=T0[]+TA[];PWM_B[]=255-T0[];
when 1 => PWM_R[]=T0[]+TB[];PWM_Y[]=T0[];PWM_B[]=255-T0[];
when 2 => PWM_R[]=255-T0[];PWM_Y[]=T0[];PWM_B[]=T0[]+TA[];
when 3 => PWM_R[]=255-T0[];PWM_Y[]=T0[]+TB[];PWM_B[]=T0[];
when 4 => PWM_R[]=T0[]+TA[];
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 18/25 TS électronique - 31/08/06
PWM_Y[]=255-T0[];PWM_B[]=T0[];
when 5 => PWM_R[]=T0[];PWM_Y[]=255-T0[];PWM_B[]=T0[]+TB[];
end case;end;
7.5 ModulationLa fonction "Modulation" multiplie les valeurs TA[] et TB[] (en BN) avec l'indice de modulation M[] etréalise donc le réglage de niveau. On ne garde que l'octet de poids fort du résultat.
7.6 Limit_3PWMCette fonction évite d'obtenir les rapports cycliques extrêmes de 0% et 100% et bloquer le hachage descourants dans le moteur.subdesign LIMIT_3PWM(IN1[7..0]:input;IN2[7..0]:input;IN3[7..0]:input;LIM[5..0]:input;CLK:input;EN :input;OUT1[7..0]:output;OUT2[7..0]:output;OUT3[7..0]:output;
)variableLIM8[7..0]:node;OUT1[7..0]:dffe;OUT2[7..0]:dffe;OUT3[7..0]:dffe;
beginLIM8[7..6]=GND; LIM8[5..0]=LIM[5..0];OUT1[].clk=CLK; OUT1[].ena=EN;OUT2[].clk=CLK; OUT2[].ena=EN;OUT3[].clk=CLK; OUT3[].ena=EN;if IN1[]>255-LIM8[] then OUT1[]=255-LIM8[];
else if IN1[]>=LIM8[] then OUT1[]=IN1[];else OUT1[]=LIM8[];
end if;end if;if IN2[]>255-LIM8[] then OUT2[]=255-LIM8[];
else if IN2[]>=LIM8[] then OUT2[]=IN2[];else OUT2[]=LIM8[];
end if;end if;if IN3[]>255-LIM8[] then OUT3[]=255-LIM8[];
else if IN3[]>=LIM8[] then OUT3[]=IN3[];
VCCTA[7..0] INPUT
VCCTB[7..0] INPUT
VCCM[7..0] INPUT
Unsignedmultiplication
dataa[7..0]
datab[7..0]result[7..0]
Multiply_8x8
inst
Unsignedmultiplication
dataa[7..0]
datab[7..0]result[7..0]
Multiply_8x8
inst3
TAM[7..0]OUTPUT
TBM[7..0]OUTPUT
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 19/25 TS électronique - 31/08/06
else OUT3[]=LIM8[];end if;
end if;end;La fonction opère une sorte d'écrêtage sur les 3 entrées :
Si l'entrée est inférieure à LIM[] alors la sortie vaut LIM[] Si l'entrée est supérieure à 255-LIM[] alors la sortie vaut 255-LIM[] Dans les autres cas : sortie = entrée
Les sorties sont synchronisées sur l'horloge CLK_18M432 pour éviter l'apparition d'états parasites.
8. Generateur_PWM
Cette fonction produit les 6 signaux PWM destinés à commander les 6 transistors des 3 bras decommutateurs de l'interface de puissance. Les rapports cycliques de ces signaux sont déterminés par lesniveaux des signaux numériques PCD1[] à PCD3[].Le cœur de la structure est le compteur-décompteur "UD_Counter" qui détermine la période des signauxPWM et la résolution de réglage des rapports cycliques. Elle produit le signal numérique PTMR[] deforme triangulaire.Ce signal est comparé aux 3 entrées PCD1[] à PCD3[] par 3 fonctions "Comp_PWM". Les sortiesrespectives passent à "1" quand le signal PTMR[] est supérieur à PCDx[].Ces sorties pourraient piloter directement les commutateurs des 3 bras s'ils étaient parfaits.Malheureusement les transistors qui les constituent ne commutent pas instantanément et il faut insérerdes temps morts à chaque transition pendant lesquelles les 2 commutateurs du pont sont simultanémentouverts. On améliore ainsi considérablement le rendement du bras.
VCCDELAY[5..0] INPUT
VCCCLK_EN INPUT
VCCPDC1[7..0] INPUT
VCCPDC2[7..0] INPUT
VCCPDC3[7..0] INPUT
VCCCLK_18M432 INPUT
PWM1DOUTPUT
PWM1UOUTPUT
PWM2DOUTPUT
PWM2UOUTPUT
PWM3DOUTPUT
PWM3UOUTPUT
PTMR[7..0]OUTPUT
TESTOUTPUT
CLK_PWMCLK_EN
PTMR[7..0]
UD_Counter
inst
unsigned compare
dataa[7..0]datab[7..0]
agb
Comp_PWM
inst11
unsigned compare
dataa[7..0]datab[7..0]
agb
Comp_PWM
inst12
unsigned compare
dataa[7..0]datab[7..0]
agb
Comp_PWM
inst8
COMP1CLK_PWMCLK_ENDELAY[5..0]
PWM1DPWM1U
Dead_Time
inst2
COMP1CLK_PWMCLK_ENDELAY[5..0]
PWM1DPWM1U
Dead_Time
inst3
COMP1CLK_PWMCLK_ENDELAY[5..0]
PWM1DPWM1U
Dead_Time
inst4
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 20/25 TS électronique - 31/08/06
8.1 UD_Counter
On utilise un compteur-décompteur synchrone dont le mode de fonctionnement est déterminé par l'étatde la bascule RS synchrone : état "0" : Up_Down_Cpt compte. La bascule est mise à "1" de façon synchrone quand l'état du
compteur est 254. Celui-ci passe alors à 255 avant de décompter. état "1" : Up_Down_Cpt décompte. La bascule est mise à "0" de façon synchrone quand l'état du
compteur est 1. Celui-ci passe alors à 0 avant de compter.Conclusion : évolution du compteur : 253-254-255-254-253-252- … 3-2-1-0-1-2-3-…254-255-254-…
Note : le signal CLK_EN ne passe à "1" qu'une période sur 4 de CLK_PWM à cause de la fonction"Div_4" (voir page §4). La fréquence de comptage-décomptage de Up_Down_Cpt est donc de18,432MHz/4 = 4,608MHz.La fréquence du signal numérique PTMP[] est donc de 4,608MHz/(254*2)=9071Hz. Les signaux PWMont la même fréquence : valeur satisfaisante.
8.2 Comparaisons : relevés expérimentaux
PDC1[] proche de 128
Sortie du 1° comparateur
PTMP[] converti par le CNA de lacarte d'étude
VCCCLK_PWM INPUT
VCCCLK_EN INPUT
PTMR[7..0]OUTPUT
PRN
CLRN
S
R
Q
SRFF
inst14
NOT
inst1
up/downupdow nclock
clk_enq[7..0]
Up_Down_Cpt
inst
compare
datab[]=1dataa[7..0]
aeb
Comp_Down
inst13
compare
datab[]=254dataa[7..0]
aeb
Comp_Up
inst12
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 21/25 TS électronique - 31/08/06
PDC1[] proche de 255
Sortie du 1° comparateur
PTMP[] converti par le CNA de lacarte d'étude
PDC1[] proche de 0
Sortie du 1° comparateur
PTMP[] converti par le CNA de lacarte d'étude
8.3 Dead_TimeSchéma original
VCCCOMP1 INPUT
VCCCLK_PWM INPUT
VCCDELAY[5..0] INPUT
VCCCLK_EN INPUT
PWM1DOUTPUT
PWM1UOUTPUT
XOR
inst1
NOT
inst5
AND2
inst3
NOT
inst6
AND2
inst7
down countersloaddata[5..0]
clockclk_encnt_en
q[5..0]cout
Dead_Time_Cpt
inst2
PRN
CLRN
D
ENA
Q
DFFE
inst9
PRN
CLRN
D
ENA
Q
DFFE
inst10
PRN
CLRN
D
ENA
Q
DFFE
inst11
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 22/25 TS électronique - 31/08/06
Schéma de test
Résultats de simulation :
Pour simplifier, on a utilisé une horloge CLK_PWM de 4MHz avec CLK_EN constamment à "1".Le décompteur "Dead_Time_Cpt" est monté en monostable à déclenchement synchrone. Ledéclenchement est provoqué à chaque transition du signal COMP1 par le signal SLOAD produit par la1° bascule D et la porte XOR associée.Le décompteur est prépositionné à la valeur DELAY[] au déclenchement du monostable. La sortieCOUT passe alors à "0" jusqu'à ce que le compteur atteigne l'état 0 : la durée à l'état bas de COUT estde DELAY[]xPériode_CLKPWM.Le signal COUT est combiné avec COMP1R pour produire les signaux D1 et D2 conformes au résultatattendu : temps mort entre les transitions (qd D1 et D2 sont à "0").Les signaux D1 et D2 sont synchronisés avec l'horloge pour supprimer les "glitchs".Le temps mort dure DELAY[] périodes d'horloge.
Note : le retard entre COMP1 et les signaux PWM est sans effet car tous les 6 signaux PWM sontretardés de façon identique.
Attention : la structure ne fonctionne plus si la durée du signal COMP1 est plus courte que le tempsmort désiré.
VCCCOMP1 INPUT
VCCCLK_PWM INPUT
VCCDELAY[5..0] INPUT
VCCCLK_EN INPUT
PWM1DOUTPUT
PWM1UOUTPUT
XOR
inst1
NOT
inst5
AND2
inst3
NOT
inst6
AND2
inst7
down countersloaddata[5..0]
clockclk_encnt_en
q[5..0]cout
Dead_Time_Cpt
inst2
PRN
CLRN
D
ENA
Q
DFFE
inst9
PRN
CLRN
D
ENA
Q
DFFE
inst10
PRN
CLRN
D
ENA
Q
DFFE
inst11
COUTOUTPUT
SLOADOUTPUT
D2OUTPUT
D1OUTPUT
Q[5..0]OUTPUT
COMP1ROUTPUT
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 23/25 TS électronique - 31/08/06
Relevés expérimentaux (DELAY[]=2) :
COMP1
PWM1D
PWM1U
On mesure un temps mort de 435nS, conforme avec la valeur DELAY[] : 2/4,608MHzLe retard de PWM1D est dû aux bascules D de synchronisation.
COMP1
PWM1D
PWM1U
Résultats conformes.
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 24/25 TS électronique - 31/08/06
Une période complète (dans les mêmes conditions) :
PWM1D
PWM1U
PTMR[] converti par le CNA de lacarte d'étude
9. Résultat final (avant interface de puissance)Les 3 sorties PWM1D à PWM3D de l'EPLD sont appliquées à 3 filtres passe-bas du 1° ordre (R=10K,C=100nF) de fréquence de coupure Fc=159Hz. On observe ainsi les valeurs moyennes de ces 3 signaux.
Conditions :LIMIT[]=4DELAY[]=2Synchro externe sur de la sortieH1Bleu = PWM3Rouge = PWM2Noir = PWM1
La fréquence des 3 phases estsuffisamment basse (1,092Hz) pourpasser le filtre passe-bas sansatténuation.
Le résultat est conforme !
Application maquette d'étude EP10K20 – Générateur SVM triphasé pour moteur BLDC
CREMMEL Marcel Page 25/25 TS électronique - 31/08/06
Relevés des tensions différentielles:PWM1-PWM2PMW3-PWM2PWM1-PWM3
Sensibilité : 1 V/div