G´ en´ erateur PWM triphas´ e - VHDL
MC-ENSL1 - Projet B
J. Villemejane - julien.villemejane@u-pec.fr
IUT Cr´eteil-Vitry D´epartement GEII Universit´e Paris-Est Cr´eteil
Ann´ee universitaire 2013-2014
Plan du cours
1 Commande de moteurs triphas´es Moteur synchrone
Commande en fr´equence - onduleur Commande MLI ou PWM
Syst`eme complet
2 Annexes
Composant g´en´erique Conversion de types ROM
Biblioth`eque de maths
Objectifs
G´en´erateur PWM
R´ealiser l’architecture d’ung´en´erateur de signaux triphas´es PWM (Pulse Width Modulation) pour la commande en fr´equence d’un moteur synchrone, `a l’aide d’un composant programmable de type FPGA.
Signaux sinusoidaux triphas´es
Fr´equence variable (0,5 `a 10 Hz, par pas de 0,5 Hz) Affichage multiplex´e pour la fr´equence
Commande de moteurs triphas´ es
Moteur synchrone
Moteur triphas´e constitu´e : d’unrotor: aimant permanent ou bobine d’unstator: 3 enroulements (ou multiple de 3)
permettant de g´en´erer des champs magn´etiques
Champ tournant `a la vitesse des signaux ´electriques
Commande de moteurs triphas´ es
Moteur synchrone
Moteur triphas´e constitu´e : d’unrotor: aimant permanent ou bobine d’unstator: 3 enroulements (ou multiple de 3)
permettant de g´en´erer des champs magn´etiques
Champ tournant `a la vitesse des signaux ´electriques
Commande de moteurs triphas´ es
Commande en fr´equence - onduleur
Utilisation d’unonduleur de tension
Commande en tout ou rien
Commande de moteurs triphas´ es
Commande en fr´equence - onduleur
Utilisation d’unonduleur de tension
Commande en tout ou rien
Commande de moteurs triphas´ es
Commande MLI ou PWM - 1/4
Commande de moteurs triphas´ es
Commande MLI ou PWM - 2/4
Que vaut la p´eriode de sortie TM LI par rapport `a la fr´equence d’entr´ee FOSC en fonction du nombre de bits de sortie du compteur et la valeur de pr´edivisionP REDIV ?
Commande de moteurs triphas´ es
Commande MLI ou PWM - 2/4
Que vaut la p´eriode de sortie TM LI par rapport `a la fr´equence d’entr´ee FOSC en fonction du nombre de bits de sortie du compteur et la valeur de pr´edivisionP REDIV ?
Commande de moteurs triphas´ es
Commande MLI ou PWM - 3/4
Quelle relation doit-il y avoir entre la fr´equence de la modulante et la fr´equence du signal de r´ef´erence ?
Comment peut-on g´en´erer num´eriquement le signal de r´ef´erence ?
Commande de moteurs triphas´ es
Commande MLI ou PWM - 3/4
Quelle relation doit-il y avoir entre la fr´equence de la modulante et la fr´equence du signal de r´ef´erence ?
Comment peut-on g´en´erer num´eriquement le signal de r´ef´erence ?
Commande de moteurs triphas´ es
Commande MLI ou PWM - 4/4
Quelle est la fr´equence du signal de r´ef´erence en fonction de la fr´equence d’entr´ee FOSC, de la valeur de pr´edivisionPREDIV2et du nombrekde fils d’adresse de la ROM ?
Commande de moteurs triphas´ es
Commande MLI ou PWM - 4/4
Quelle est la fr´equence du signal de r´ef´erence en fonction de la fr´equence d’entr´ee FOSC, de la valeur de pr´edivisionPREDIV2et du nombrekde
Commande de moteurs triphas´ es
Syst`eme complet
Annexes
Composant g´en´erique
D´ecalaration d’un composant additionneur g´en´erique (N repr´esentant le nombre de bits de l’additionneur - valeur par d´efaut de 8).
component ADD
g e n e r i c( N : p o s i t i v e r a n g e 0 t o 16 := 8 ) ; p o r t( A : i n s t d l o g i c v e c t o r (N−1 downto 0 ) ;
B : i n s t d l o g i c v e c t o r (N−1 downto 0 ) ; S : o u t s t d l o g i c v e c t o r (N−1 downto 0 ) ) ; end component;
Instanciation au niveau de l’architecture d’un syst`eme
i n s t A D D : ADD g e n e r i c map(N=>12)
p o r t map(A=>OP1 , B=>OP2 , S=>S ) ;
Annexes
Conversion de types
integerto integer(unsigned) : convertit un entier non sign´e en une valeur enti`ere
unsigned to unsigned(integer) : convertit une valeur enti`ere en un entier non sign´e
std logic vector std logic vector(unsigned, N) : convertit un entier non sign´e vers un vecteur binaire de N bits
unsigned unsigned(std logic vector) : convertit un vecteur binaire en un entier non sign´e
Annexes
ROM
R´ealisation d’une ROM de capacit´e16 x 8 bits(4 fils d’adressage et 8 fils de donn´ees)
e n t i t y rom5v8 i s
P o r t ( a d r e s s e : i n STD LOGIC VECTOR ( 3 downto 0 ) ; d a t a : o u t STD LOGIC VECTOR ( 7 downto 0 ) ) ; end rom5v8 ;
a r c h i t e c t u r e B e h a v i o r a l o f rom5v8 i s s u b t y p e v a l e u r i s i n t e g e r r a n g e 0 t o 2 5 5 ;
t y p e rom i s a r r a y( i n t e g e r r a n g e 0 t o 1 5 ) o f v a l e u r ; s i g n a l r o m s i n : rom ;
b e g i n
−− r e m p l i s s a g e a v e c l e s 16 p r e m i e r s e n t i e r s l o o p 1 : f o r i IN 0 TO 15 GENERATE
r o m s i n ( i )<= i ; END GENERATE l o o p 1 ;
d a t a <= s t d l o g i c v e c t o r ( t o u n s i g n e d (
r o m s i n ( t o i n t e g e r ( u n s i g n e d ( a d r e s s e ) ) ) , 8 ) ) ; end B e h a v i o r a l ;
Annexes
Biblioth`eque de maths
integernatural(real) : convertit un r´eel en un entier real ceil(real) : arrondit un r´eel sans conversion de type real real(integer) : transforme une variable enti`ere en un r´eel real sin(real) : donne la valeur du sinus donn´e en radians MATH PI : valeur de PI
Exemple d’une conversion d’un entier vers un reel
s i g n a l i : i n t e g e r r a n g e 0 t o 1 5 ; s i g n a l r : r e a l r a n g e 0 . 0 t o 1 5 . 0 ;
r <= REAL ( i ) ;