COMMANDE D`UN MOTEUR A COURANT CONTINU VIA FPGA

publicité
‫الجمـهوريــة الجزائريــة الديمقراطيــة الشعبيــة‬
REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR
ET DE LA RECHERCHE SCIENTIFIQUE
‫وزارة التعليــم العالــي و البحــث العلمـي‬
UNIVERSITE DES FRERES MENTOURI CONSTANTINE
‫جامعـــــــة اإلخوة منتوري قسنطينـــــــــة‬
Faculté des Sciences de la Technologie
Département : Electrotechnique
‫كلـيــة علوم التكنولوجيا‬
‫قسم االلكتروتقني‬
N° d’ordre : ….
Série : ….
Mémoire
Présenté en vue de l’obtention du
Diplôme de Master en Electrotechnique
Option
Electrotechnique
Thème
COMMANDE D’UN MOTEUR A COURANT
CONTINU VIA FPGA
Présenté par :
DERGHAL Smail
Encadreur :
Dr. MEHAZZEM Fateh
Devant le jury :
Président
Examinateurs
: Dr. KAIKAA Mohamed yazid
: Prof. KHEZZAR Abdelmalek
Dr. BABAA Fatima
Membre de jury : Prof. KERDOUN Djallel
Soutenue le 17/06/2015
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Remerciements
Commande d’un MCC via FPGA
1
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Dédicace
Commande d’un MCC via FPGA
2
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
SOMMAIRE
Introduction générale
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
1.
Introduction ................................................................................................................................................2
2.
Les FPGA ..................................................................................................................................................2
3.
2.1.
L’architecture ....................................................................................................................................3
2.2.
Historique ..........................................................................................................................................4
Le langage de programmation VHDL .......................................................................................................5
3.1.
Définition du VHDL...........................................................................................................................5
3.2.
Historique de VHDL ..........................................................................................................................5
3.3.
Structure d'un module VHDL (Unité de conception) .........................................................................5
3.4.
Notions de base...................................................................................................................................5
3.5.
Syntaxe ...............................................................................................................................................7
3.6.
Les instructions port et generic ...........................................................................................................7
3.7.
Les directions......................................................................................................................................7
3.8.
Les objets ............................................................................................................................................7
3.9.
Notation des littéraux .........................................................................................................................8
3.10.
Les types principaux en synthèse ...................................................................................................8
3.11.
Les bibliothèques ............................................................................................................................8
3.12.
Les opérations dans VHDL ...........................................................................................................9
3.13.
Les types manipulés par VHDL ..................................................................................................10
3.14.
Les constantes...............................................................................................................................10
3.15.
Les variables .................................................................................................................................10
3.16.
Les signaux ...................................................................................................................................11
3.17.
Les commentaire en VHDL..........................................................................................................11
3.18.
Les processus ...............................................................................................................................11
3.19.
Les principales caractéristiques du langage VHDL .....................................................................12
3.19.1.
Un langage s'appliquant à plusieurs niveaux de descriptions ................................... 12
3.19.2.
Fonctionnement concurrent ...................................................................................... 12
3.19.3.
Fonctionnement séquentiel ....................................................................................... 13
3.20.
4.
Différences entre un langage de programmation et VHDL .........................................................13
Modèle System Generator .......................................................................................................................14
4.1.
Brève description .............................................................................................................................14
Commande d’un MCC via FPGA
1
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
5.
4.2.
Méthode de développement .............................................................................................................14
4.3.
Simulink ..........................................................................................................................................14
4.4.
Xilinx System Generator .................................................................................................................15
Conclusion ................................................................................................................................................18
CHAPITRE II : Commande des Moteurs à Courant Continue via Les Hacheurs
1.
Introduction ..............................................................................................................................................20
2.
La Machine à Courant Continu (MCC) ...................................................................................................20
2.1.
La Force électromotrice (f.e.m.) E ................................................................................. 21
2.2.
Couple électromagnétique .............................................................................................. 21
2.3.
Le moteur à excitation indépendante ............................................................................ 21
2.4.
2.5.
3.
2.3.1.
Modèle électrique ..........................................................................................................21
2.3.2.
Bilan énergétique et rendement .....................................................................................22
Le moteur à excitation série .......................................................................................... 22
2.4.1.
Modèle électrique ..........................................................................................................22
2.4.2.
Bilan des puissances et rendement ................................................................................23
Quelques considérations pour le moteur à courant continu .......................................... 23
2.5.1.
Utilisation des moteurs à courant continu .....................................................................23
2.5.2.
Démarrage des moteurs à courant continu.....................................................................23
LES HACHEURS ...................................................................................................................................24
3.1.Les interrupteurs électroniques ........................................................................................... 24
3.2.
3.1.1.
Le transistor bipolaire ....................................................................................................24
3.1.2.
Transistor MOSFET ......................................................................................................25
3.1.3.
GTO ...............................................................................................................................26
3.1.4.
IGBT ..............................................................................................................................26
3.1.5.
La diode à jonction ........................................................................................................26
Hacheur série (abaisseur) .............................................................................................. 27
3.2.1.
Principe de fonctionnement ...........................................................................................27
3.2.2.
Etude du hacheur série alimentant un moteur à courant continu ..................................28
3.3.
Hacheur parallèle (Elévateur) ....................................................................................... 29
3.4.
Hacheur réversible ........................................................................................................ 32
3.4.1.
Hacheur réversible en courant .......................................................................................32
3.4.2.
Hacheur réversible en tension........................................................................................33
Commande d’un MCC via FPGA
2
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
3.5.
4.
5.
Hacheur en Pont ou 4 quadrants ................................................................................... 33
3.5.1.
Schéma du montage .......................................................................................................33
3.5.2.
Les 04 quadrants ............................................................................................................34
3.5.3.
Analyse du fonctionnement en commande continue ....................................................35
3.5.4.
Valeur moyenne de la tension aux bornes de la charge .................................................35
3.5.5.
Chronogrammes ............................................................................................................35
3.5.6.
Fonctionnement dans les 4 quadrants ............................................................................36
Structure de commande ............................................................................................................................36
4.1.
Génération d'une MLI (PWM) ....................................................................................... 36
4.2.
Principe de la commande MLI ....................................................................................... 37
Conclusion ................................................................................................................................................37
CHAPITRE III : Implémentation et résultats
1.
Introduction ................................................................................................................................ 39
2.
Cachier des charges .................................................................................................................... 39
3.
Parite matérielle ......................................................................................................................... 39
4.
3.1.
Présentation du banc d’essai ........................................................................................... 39
3.2.
Schéma bloc global ......................................................................................................... 40
3.3.
Les composants ............................................................................................................... 40
a)
Les alimentations ............................................................................................................ 40
b)
Les inductances .............................................................................................................. 41
c)
Capteur de vitesse (Encodeur Incrémental).................................................................... 41
d)
L’oscilloscope ................................................................................................................ 42
e)
L’Hacheur un quadrant – Elévateur .............................................................................. 42
f)
MCC ............................................................................................................................... 44
g)
La carte DSPace 1104 .................................................................................................... 44
h)
La carte FPGA – Altera DE2 ......................................................................................... 45
Partie logicielle........................................................................................................................... 47
4.1.
Génération de la PWM sous Matlab/simulink ................................................................ 47
4.2.
Solution sous FPGA pour Générer PWM ....................................................................... 47
a)
Génération PWM avec VHDL ......................................................................................... 47
b) Génération PWM avec SYSGEN .................................................................................... 50
Commande d’un MCC via FPGA
3
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
5.
6.
Résultats ..................................................................................................................................... 51
5.1.
Résultats Avec DSPace ................................................................................................... 51
a)
L’allure des courants d’induit et inducteur avec les rapports cycliques =0.3 et =0.7 ............ 51
b)
L’allure de la vitesse avec les rapports cycliques =0.3 et =0.7......................................... 52
5.2.
Résultat Avec FPGA ....................................................................................................... 52
a)
Allure du signal PWM (MLI) ......................................................................................... 52
b)
L’allure des courants d’induit et inducteur avec les rapports cycliques = 0.3 et = 0.7 ........ 53
c)
L’allure de la vitesse avec les rapports cycliques = 0.3 et = 0.7 ....................................... 54
5.3.
Comparaison .................................................................................................................... 55
Conclusion ................................................................................................................................. 55
CONCLUSION ET PERSPECTIVES
ANNEXES
BIBLIOGRAPHIE
Commande d’un MCC via FPGA
4
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Liste des figures
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
Figure I- 1 : Flot classique de conception FPGA. ................................................................................... 3
Figure I- 2 : Structure d’un circuit FPGA ............................................................................................... 3
Figure I- 3 : La structure typique d'une description VHDL .................................................................... 6
Figure I- 4 : les différents portes logiques .............................................................................................. 9
Figure I- 5 : Schéma d’un exemple pour le fonctionnement concurrent............................................... 12
Figure I- 6 : Le bloc System Generator ................................................................................................. 15
Figure I- 7 : La bibliothèque de Simulink ............................................................................................ 15
Figure I- 8 : Le bloc Gateway In ........................................................................................................... 15
Figure I- 9 : Le bloc Gateway Out ........................................................................................................ 16
Figure I- 10 : Aperçu de Xilinx System Generator ............................................................................... 16
Figure I- 11 : Bloc de Black Box .......................................................................................................... 17
Figure I- 12 : Le boc de Mcode ............................................................................................................. 17
Figure I- 13 : Exemple sur le Mcode & Black box ............................................................................... 17
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Figure II- 1 : Représentation des deux parties principales de la MCC ................................................ 20
Figure II- 2 : Modèle électrique d'une MCC ........................................................................................ 21
Figure II- 3 : Modèle électrique du moteur à excitation indépendante ................................................. 21
Figure II- 4 : Bilan énergétique du moteur à excitation indépendante .................................................. 22
Figure II- 5 : Modèle électrique du moteur à excitation série ............................................................... 22
Figure II- 6 : Bilan énergétique du moteur à excitation série ............................................................... 23
Figure II- 7 : Transistor bipolaire .......................................................................................................... 24
Figure II- 8 : Transistor MOSFET ........................................................................................................ 25
Figure II- 9 : Thyristor GTO ................................................................................................................. 26
Figure II- 10 : Transistor bipolaire à grille isolée (IGBT) .................................................................... 26
Figure II- 11 : Schéma d'un Hacheur abaisseur .................................................................................... 27
Figure II- 12 : Oscillogramme de la tension aux bornes de la charge................................................... 27
Figure II- 13 : Schéma d’un hacheur série alimentant un MCC ........................................................... 28
Figure II- 14 : Oscillogramme du courant d’un hacheur série .............................................................. 28
Figure II- 15 : Schéma d’un hacheur élévateur (boost)......................................................................... 29
Commande d’un MCC via FPGA
1
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Figure II- 16 : Schéma d’un Hacheur Boost quand K conduit .............................................................. 29
Figure II- 17 : Evolution de courant de l’inductance L (séquence 1) ................................................... 29
Figure II- 18 : Schéma d’un Hacheur Boost quand D conduit .............................................................. 30
Figure II- 19 : Evolution de courant de l’inductance L (séquence 2) ................................................... 30
Figure II- 20 : Hacheur Boost dans la séquence de commutation......................................................... 31
Figure II- 21 : Hacheur réversible en courant ....................................................................................... 32
Figure II- 22 : Les 02 modes de fonctionnements d’un Hacheur réversible en courant. ...................... 32
Figure II- 23 : Hacheur réversible en tension........................................................................................ 33
Figure II- 24 : Schéma d'un Hacheur 4 quadrants ................................................................................. 33
Figure II- 25 : Les 4 quadrants de fonctionnement de la machine à courant continu ........................... 34
Figure II- 26 : Un signal MLI (PWM) .................................................................................................. 37
CHAPITRE III : Impleméntation et résultats
Figure III- 1 : Banc d’essai.................................................................................................................... 39
Figure III- 2 : Schéma bloc global ........................................................................................................ 40
Figure III- 3 : Alimenation d’induit ...................................................................................................... 40
Figure III- 4 : Alimentation Hacheur .................................................................................................... 40
Figure III- 5 : Alimenation stabilisé pour alimenter l’optocoupleur et le Driver .................................. 41
Figure III- 6 : Inductance de lissage ...................................................................................................... 41
Figure III- 7 : Encodeur de vitesse ........................................................................................................ 41
Figure III- 8 : Oscilloscope de type Tektronix TDS 1002C-EDU ........................................................ 42
Figure III- 9 : Schéma d’un hacheur élevateur (boost) ......................................................................... 42
Figure III- 10 : Hacheur Boost SEMIKRON ........................................................................................ 43
Figure III- 11 : Hacheur Boost réalisé localement (front de la carte) ................................................... 43
Figure III- 12 : Hacheur Boost réalisé localement ( l'arrière de la carte) .............................................. 43
Figure III- 13a : La machine à courant continu..................................................................................... 44
Figure III- 13b : les caractéristiques du MCC ....................................................................................... 44
Figure III- 14 : la carte DSPace............................................................................................................. 44
Figure III- 15 : Control panel ................................................................................................................ 45
Figure III- 16 : Diagramme de bloc de la carte ALTERA DE2 ............................................................ 45
Figure III- 17: La carte Altera DE2....................................................................................................... 46
Figure III- 18 : La carte Altera Cyclone II EP2C35F672C6 ................................................................. 46
Figure III- 19 : Modèle simulink pour générer PWM ........................................................................... 47
Commande d’un MCC via FPGA
2
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Figure III- 20 : Le bloc PWM ............................................................................................................... 47
Figure III- 21 : Schéma RTL du signal PWM ...................................................................................... 49
Figure III- 22 : Génération PWM avec System generator .................................................................... 50
Figure III- 23 : Illustration Comment programmer le PWM ................................................................ 50
Figure III- 24 : L'allure sur oscilloscope du courant d’induit avec (alpha = 0.3) ................................. 51
Figure III- 25 : L'allure sur oscilloscope du courant d’induit avec (alpha = 0.7) ................................. 51
Figure III- 26 : L'allure sur control desk du courant d’induit avec (alpha = 0.7) ................................. 51
Figure III- 27 : L'allure sur Control Desk du courant d’induit avec (alpha = 0.3) ................................ 51
Figure III- 28 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7) ................................................ 52
Figure III- 29 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3) ................................................ 52
Figure III- 30a : Signal MLI (PWM) avec (alpha = 0.3) ...................................................................... 53
Figure III- 30b : Signal MLI (PWM) avec (alpha = 0.7) ...................................................................... 53
Figure III- 31 : L'allure du courant d’induit avec (alpha = 0.3) ............................................................ 53
Figure III- 32 : L'allure du courant d’induit avec (alpha = 0.7) ............................................................ 54
Figure III- 33 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3) ................................................ 54
Figure III- 34 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7) ................................................ 54
Commande d’un MCC via FPGA
3
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Introduction générale
Ce mémoire a été réalisé dans le cadre de la formation Master II, option électrotechnique, au sein
du laboratoire d'électrotechnique de Constantine. L'objectif de ce projet est la commande d’un moteur
à courant continu via une carte FPGA.
Les moteurs et les générateurs (dynamos) à courant continu furent les premières machines
électriques utilisées par les ingénieurs au milieu du 19ièmesiècle pour produire de la puissance motrice
particulièrement dans le transport ferroviaire (tramways, TGV), et maintenant restent très utilisés dans
le domaine de l’automobile (ventilateurs, lève-vitre, etc.)
Les FPGAs, Field Programmable Gate Array ou réseau de portes programmables. Ce sont des
circuits intégrés programmables (ou plutôt reconfigurables) plusieurs fois et de plus en plus
dynamiquement! Ils permettent d’émuler un circuit afin de le valider avant la gravure silicium.
Ce mémoire présente notre projet qui consiste à commander un moteur à courant continu par un
signal modulé en largeur d’impulsion (MLI). La commande a été programmée en langage VHDL en
utilisant une carte FPGA (ALTERA Cyclone II).
Ce mémoire est divisé en trois chapitres, organisés comme suit:

Dans le premier chapitre nous avons présentés des notions générales sur les FPGAs, son
langage de programmation VHDL et on a parlé d’un nouveau outil, utilisé pour faciliter la
programmation, c’est le System Generator (SYSGEN).

Dans le deuxième chapitre nous avons présenté une étude théorique du moteur à courant
continu et aussi des convertisseurs continu/continu ou bien les Hacheurs.

Dans le troisième chapitre, nous avons présenté notre application concernant la commande
d’un moteur à courant continu via une carte FPGA. Une description détaillée des parties
matérielles et logicielles de l’application a été donnée, ainsi qu’aux différents résultats
pratiques obtenus par les deux cartes Altera et DSPace. Ces résultats concernent les deux
solutions (Simulink et VHDL-Sysgen) pour générer le signal PWM.

Enfin, dans la dernière partie, nous terminons par une conclusion générale sur cette étude ainsi
que les perspectives envisageables pour un travail futur.
Commande d’un MCC via FPGA
1
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
CHAPITRE 1
Prototypage rapide sous FPGA - SYSGEN
Commande d’un MCC via FPGA
1
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
1. Introduction
La densité croissante des circuits programmables actuels, notamment des FPGA (Field
Programmable Gate Array), permet le prototypage rapide des circuits numériques à grande
complexité. Aussi, il est possible de tester rapidement la validité de concepts architecturaux nouveaux:
l'implémentation complète d'un processeur sur des circuits FPGA est aujourd'hui à notre portée,
entraînant ainsi plus de possibilités d'évaluation que celles offertes par des simulateurs logiciels.
La part de marché des FPGA dans le marché globale des circuits matériels pour l’électronique
numérique ne cesse d’augmenter. Les évolutions technologiques et architecturales qui ont eu
successivement lieu depuis le début des années 2000 ont fait de ces circuits de réels et rentables
alternatives aux classiques ASIC. Avec ces évolutions c’est tout un nouveau domaine de
l’électronique numérique qui s’est ouvert. Aujourd’hui les FPGA sont utilisés dans tous les domaines,
des systèmes embarqués aux systèmes de communications, ils sont au cœur d’un important champ de
recherche académique et industrielle.
2. Les FPGA[1]
Les FPGA (Field Programamble Gate Array) sont des circuits numériques configurables, dédiés à
l’électronique numériques. A l’état initial ils ne peuvent rien faire mais disposent d’une importante
quantité (dépendant de la technologie utilisée) de ressources matérielles opérationnelles dont on peut
configurer la fonction. Ces ressources sont, principalement, des blocs élémentaires logiques (pour
réaliser des fonctions booléennes), des mémoires RAM, des opérateurs arithmétiques (qui travaillent
en virgule fixe), des ressources de routage interne et des entrées/sorties. Ces ressources configurables
sont reliées par un réseau dense de lignes de routage et de lignes de transport des horloges. Ces lignes
de routage sont aussi configurables.
En plus de ces ressources, un FPGA est composé d’une mémoire interne de configuration. Chaque
point de cette mémoire correspond à la configuration d’un élément d’une des ressources
opérationnelles. Cette mémoire est, dans la plupart des cas, réalisée avec une des trois technologies
suivantes : ANTIFUSIBLE (la plus ancienne, configurable une seule fois), FLASH (non-volatile) ou
SRAM (volatile, la plus utilisée, représente plus de 80 % du marché).
Comme le montre la figure 1, pour réaliser une application avec un FPGA, il faut décrire le circuit
électronique à réaliser avec un langage de description matérielle comme le VHDL (Very High Speed
Integrated Circuit Hardware Description Langage). Puis il faut synthétiser cette description en circuit
électronique. Cette étape et les suivantes peuvent se faire avec des logiciels gratuits, fournis par le
fabricant de circuit. Enfin après une étape de placement et routage qui prend en compte l’architecture
du FPGA, un fichier de configuration appelé bitstream est généré. Celui-ci permet de spécifier au
FPGA lors de la configuration la position des points de la mémoire de configuration.
Parmi les principaux fabricants de FPGA dans le monde on peut citer : Xilinx (N°1 du marché des
FPGA, 53% de part de marché), Altera (N°2 du marché des FPGA, 36 % de part de marché)
Commande d’un MCC via FPGA
2
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
Figure I- 1 : Flot classique de conception FPGA.
2.1. L’architecture [2]
Structurés sous forme de matrices, les FPGA sont composés d’éléments logiques de base, constitués
de portes logiques, présentes physiquement sur le circuit. Ces portes sont reliées par un ensemble
d’interconnexions modifiables : d’où l’aspect programmable du circuit.
Figure I- 2 : Structure d’un circuit FPGA
Commande d’un MCC via FPGA
3
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
La structure du FPGA est composée :
 De cellules d’entrées sorties modifiables qui servent d’interfaces entre les broches du circuit
et le cœur du FPGA pour adapter les signaux suivants :
o Alimentation
o Signaux d’horloge
o Signaux de configuration du FPGA
o Signaux de test
 De blocs logiques ou éléments logiques contenant les fonctions logiques combinatoires et
séquentielles.
 La partie combinatoire permet de réaliser des fonctions de complexité moyenne avec
des portes classiques ET, OU et NON de deux à une dizaine d’entrées.
 La partie séquentielle comporte une ou deux bascules généralement de type D.
Compte tenu du nombre d’éléments logiques et de leur structure, leur association
permet de réaliser tous les types de bascule. L’intérêt est de créer des mémoires
élémentaires à un bit.
 De réseaux d’interconnexions : Ces réseaux relient entre eux les blocs logiques et les blocs
d’entrées/sorties.
2.2. Historique [1]
En 1984 la société américaine Xilinx fut précurseur du domaine en lançant le premier circuit
FPGA commercial, le XC2000. Ce composant avait une capacité maximum de 1500 portes logiques.
La technologie utilisée était alors une technologie aluminium à 2µm avec 2 niveaux de métallisation.
Xilinx sera suivi un peu plus tard, et jamais lâché, par son plus sérieux concurrent Altera qui lança en
1992 la famille de FPGA FLEX 8000 dont la capacité maximum atteignait 15000 portes logiques.
Depuis les années 2000 des évolutions majeures ont été apportées. Les technologies utilisées pour
les FPGA sont les mêmes que celles utilisées pour les ASIC(1). Par exemple, la technologie cuivre est
mise en œuvre pour la réalisation des métallisations au sein des FPGA. Elle permet une réduction
d’environ 70% des temps de propagation des signaux le long des métallisations par rapport à la
technologie aluminium.
En 2000, les technologies utilisées étaient des technologies CMOS 0,15µm avec 8 niveaux de
métallisation, aujourd’hui la technologie utilisée est la technologie CMOS 40 nm avec plus de 10 ou
12 niveaux de métallisation en cuivre.
En 2000 et 2001 les deux concurrents Xilinx et Altera ont franchi une nouvelle étape au niveau de
la densité d’intégration en sortant respectivement leurs circuits Virtex et Apex-II dont les capacités
maximums avoisinaient les 4 millions de portes logiques équivalentes avec en plus l’introduction de
larges bancs de mémoire embarquée. Aujourd’hui, les fréquences de fonctionnement de ces circuits
sont de l'ordre de quelques centaines de méga Hertz.
1)
Un ASIC est un circuit électronique réalisé sur mesure. Ce sont les circuits les plus performants
mais aussi les plus chers et longs à réaliser.
Commande d’un MCC via FPGA
4
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
3. Le langage de programmation VHDL [3][4][5]
3.1. Définition du VHDL [3]
Le VHDL (Very high speed - or scale - integrated circuits Hardware Description Language) est
utilisé pour la modélisation et la synthèse de circuits numériques. La modélisation permet de simuler
le comportement d'un circuit numérique, tandis que la synthèse permet de le programmer (si
nécessaire).
Lors du développement d'un CPLD ou d'un FPGA, la simulation du comportement de ce dernier
est effectuée à l'aide d'un modèle. Celui-ci est déterminé directement par le logiciel programmation
(fourni par un constructeur de CPLD) utilisé, à partir de la description VHDL entrée (simulation
fonctionnelle) et en fonction du composant cible et de ses temps de propagation (simulation
temporelle). Il reste seulement à définir les chronogrammes des signaux d'entrée du composant pour
vérifier que le fonctionnement est bien celui souhaité.
3.2. Historique de VHDL [4]
Le VHDL a été développé dans les années 80 aux USA et est devenu une norme IEEE (n° 1076)
en 1987. Révisée en 1993 pour supprimer quelques ambiguïtés, cette norme est vite devenue un
standard en matière d’outils de description de fonctions logiques. Le VHDL est principalement utilisé
pour concevoir des ASIC, programmer des composants du type PLD, CPLD, FPGA…, et concevoir
des modèles de simulation numérique ou des bancs de test.
3.3. Structure d'un module VHDL (Unité de conception)
L’unité de conception (design unit) est le plus petit module compilable séparément. VHDL offre cinq
types d’unités de conception : la déclaration d’entité, le corps d’architecture, la déclaration de
configuration, la déclaration de paquetage et le corps de paquetage.
AN : Module = Entity + Architecture
3.4. Notions de base [3]
Ce langage ne fait théoriquement pas de distinction entre majuscules et minuscules. Certains outils
de synthèse font cependant une distinction pour quelques cas particuliers (description de l'état haute
impédance ‘Z’ – et non ‘z’ - avec le logiciel Max+plus II par exemple). Pour une meilleure lisibilité
les mots réservés ont été écrits ici en minuscules et en gras, les noms donnés par l’utilisateur en
majuscules.
En VHDL les commentaires sont précédés par « -- » et s’arrêtent au retour à la ligne.
La structure typique d'une description VHDL est donnée ci-après :
Commande d’un MCC via FPGA
5
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
-- déclaration des ressources externes.
library NOM_DE_LA_BIBLIOTHEQUE ;
use ELEMENT_DE_LA_BIBLIOTHEQUE ;
les ressources externes
-- description de l’entité avec des entrées et des sorties, caractérisée par des paramètres
entity NOM_DE_L’ENTITE is
generic (PARAMETRES : « type »:=VALEURS_FACULTATIVES ) ;
port ( NOM_DES_ENTREES_SORTIES : « direction » « type ») ;
end NOM_DE_L’ENTITE ;
-- description de l’architecture à l’intérieure de l’entité ;
-- à une entité peut correspondre plusieurs architectures
architecture NOM_DE_L’ARCHITECTURE of NOM_DE_L’ENTITE is
-- déclaration si nécessaire des objets internes
NOM_DES_OBJETS_INTERNES : « type »;
-- déclaration si nécessaire des types
type NOM_DES_TYPES is (VALEURS_POSSIBLES) ;
-- description du fonctionnement
begin
DESCRIPTION ;
end NOM_DE_L’ARCHITECTURE ;
l’entité
l’architecture
les ressources internes de
l’architecture
Comme on peut le voir, la structure comprend une entité décrivant les entrées sorties, et une
architecture associée à l'entité décrivant le fonctionnement.
Figure I- 3 : La structure typique d'une description VHDL
Commande d’un MCC via FPGA
6
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
Exemple de programme :
entity ET is
port (E1, E2 : in bit;
S : out bit );
end ET;
architecture ARCH_ET of ET is
begin
S <= E1 and E2;
end ARCH_ET;
A une entité peuvent correspondre plusieurs architectures. De cette manière, il devient possible de
modifier la structure interne d'une description sans modifier la vue externe, cette propriété du VHDL
devenant très intéressante dès lors que plusieurs description sont imbriquées les unes dans les autres.
Les entités et architectures sont des unités de conception, dites respectivement primaires et secondaire.
3.5. Syntaxe
On notera au passage la présence de points virgules à la fin de chaque ligne de déclaration et après
chaque instruction. Lorsqu'une liste d'entrées, de sorties ou de paramètres est énumérée, la séparation
se fait par des virgules.
Comme dans la plupart des langages informatique, il est fortement conseillé de se servir des
tabulations pour améliorer la lisibilité. Les outils de synthèse proposent en général l'utilisation de
couleurs différentes.
3.6. Les instructions port et generic
L'instruction port permet de décrire les entrées et sorties.
Facultative l'instruction generic permet de spécifier certains paramètres de l'entité, comme par
exemple la largeur d'un bus.
3.7. Les directions
Elles permettent de préciser les sens des connexions entrantes ou sortantes de l'entité.
in
: entrée
out
: sortie
inout
: entrée-sortie.
3.8. Les objets
Les objets sont des ressources internes à une unité de conception, qui n'apparaissent pas comme entrée
ou sortie de l'entité. Il existe trois sortes d'objets :
signal
: le signal représente une connexion interne, déclaré dans une entité ou une architecture.
Le signal permet de pallier les limitations des directions inout.
variable : la variable est généralement utilisée comme index dans la génération de boucle et n'a
habituellement pas de correspondance avec un signal physique. Elle ne peut être déclarée que dans un
process ou un sous-programme.
Commande d’un MCC via FPGA
7
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
constant : permet une meilleure lisibilité du programme. Un composant définit avec une constante de
N bits pourra facilement passer de 8 à 64 bits (grâce à l'instruction generic par exemple).
3.9. Notation des littéraux
- bits et caractères : entre apostrophes ; exemple '0'.
- chaîne de bits et chaîne de caractères : entre guillemets ; exemple "01110".
- nombre décimaux : exemple pour la valeur mille ; 1000, 1_000, 1E3, 1.00E3.
- nombre hexadécimaux : entre guillemets précédés de x ; exemple x"1AFF".
3.10. Les types principaux en synthèse
La notion de type est très importante en VHDL, chaque entrée, sortie, signal, variable ou constante,
est associé à un type.
integer
: nombre entier pouvant aller de –231 à 231 (suivant les compilateurs), peut être limité
entre deux extremums par la déclaration :
« integer range MIN to MAX ;»
La déclaration d'un entier sans préciser de valeurs limites équivaut donc à créer un bus de 32 bits à
l'intérieur du composant cible.
bit
: deux valeurs possibles : 0 ou 1
bit_vector : un vecteur de bits est un bus déclaré par exemple pour une largeur de N bits par
bit_vector(0 to N) ou bien bit_vector(N downto 0).
boolean
: ce type est utilisé pour les conditions (dans une boucle par exemple) et comprend deux
valeurs, true (vrai) ou false (faux).
3.11. Les bibliothèques
Ce sont des répertoires -au sens informatique du terme- où se trouvent des fichiers contenant des
unités de conception, c'est à dire :
- des entités et architectures associée,
- des spécifications de paquetage, ainsi que la description du corps associé,
- des configurations.
Ces ressources n'auront donc pas besoin d'être décrite dans le programme principal. Il suffira d'appeler
la bibliothèque avec la syntaxe :
libraryNOM_DE_LA_BIBLIOTHEQUE ;
Les paquetages : Un paquetage permettra d'utiliser sans avoir à les redécrire essentiellement des
objets (signaux, constantes), des types et sous-types, des sous-programmes et des composants.
L'appel du paquetage se fait après l'appel de la bibliothèque qui le contient. On indique alors le nom
du fichier contenant le paquetage par l'instruction qui suit :
use NOM_DE_LA_BIBLIOTHEQQUE . NOM_DU_PAQUETAGE.all ;
Commande d’un MCC via FPGA
8
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
Il existe des paquetages prédéfinis fournis avec les outils de synthèse :
- le paquetage standard qui contient la déclaration de tous les types prédéfinis de base.
- le paquetage std_logic_1164 contenu dans la bibliothèque ieee qui contient entre autre la définition
des types std_logic et std_logic_vector.
- le paquetage std_logic_arith (très semblable au paquetage numeric_std) de la bibliothèque ieee qui
permet des conversions de type (entier vers std_logic et inversement).
- les paquetages std_logic_signed et std_logic_unsigned de ieee permettant des opérations
arithmétiques signées ou non sur des types std_logic.
On rappelle qu’un std_logic_vector sera considéré comme codé en binaire naturel si le paquetage
ieee.std_logic_unsigned à été déclaré et comme codé en complément à 2 si le paquetage
ieee.std_logic_signed a été déclaré.
3.12. Les opérations dans VHDL [4]
L'opération d'affectation
<= ---- Affectation
Les opérations arithmétiques :
+ ---- Addition
- ---- Subtraction
* ---- Multiplication
/ ---- Divide
mod / rem ---- Modulus
** ---- Power Operator (i.e. 2**8 returns 256)
Les opérations logiques :
Utilisées pour les objets de types Bit, booléen ou tableau uni dimensionnel de ces types.
NOT
---- Invert a single-bit signal or each bit in a bus
AND
---- AND two single bits or each bit between two buses
OR
---- OR two single bits or each bit between two buses
XOR
---- XOR two single bits or each bit between two buses
XNOR ---- XNOR two single bits or each bit between two buses
Figure I- 4 : les différents portes logiques
Les opérations de comparaison (les opérateurs relationnels) :
NOT ---- Not True
AND ---- Both Inputs True
OR ---- Either Input True
=
---- Inputs Equal
---> sur tous les opérateurs (sauf file)
/=
---- Inputs Not Equal
---> sur tous les opérateurs (sauf file)
<
---- Less-than
Commande d’un MCC via FPGA
9
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
<=
>
>=
---- Less-than or Equal
---- Greater-than
---- Greater-than or Equal
3.13. Les types manipulés par VHDL [4]
Un type (type) est caractérisé par un ensemble de valeurs et un ensemble d’opérations. Il existe quatre
classes de types:
 Les types scalaires (scalar) : entier, réel, énuméré, physique.
 Les types composites (composite) : tableau, enregistrement.
 Le type accès (access) : accès (pointeur) à des objets d’un type donné.
 Le type fichier (file) : fichier, séquence de valeurs d’un type donné.
Les types prédéfinis sont :
STD_LOGIC
--'U','X','0','1','Z','W','L','H','-'
STD_LOGIC_VECTOR
--Natural Range of STD_LOGIC
BOOLEAN
--True or False
INTEGER
--32 or 64 bits
NATURAL
--Integers >= 0
POSITIVE
--Integers > 0
REAL
--Floating-point
BIT
--'0','1'
BIT_VECTOR(Natural)
--Array of bits
CHARACTER
--7-bit ASCII
STRING(POSITIVE)
--Array of charachters
TIME
--hr, min, sec, ms, us, ns, ps, fs
DELAY_LENGTH
--Time >= 0
Exemples de types non prédéfinis :
-- types entiers:
type Byte is range 0 to 255; -- intervalle ascendant
type Bit_Index is range 31 downto 0; -- intervalle descendant
-- types réels:
type Signal_Level is range -15.0 to +15.0; -- intervalle ascendant
type Probability is range 0.0 to 1.0; -- intervalle ascendant
3.14. Les constantes
Une constante (constant) a par définition une valeur fixe définie une fois pour toute:
constant PI: Real := 3.1416;
constant INDEX_MAX: Integer := 10*N; -- N doit être déclaré avant
constant Delay: Delay_Length := 5 ns;
3.15. Les variables
Une variable (variable) est un objet dont la valeur est modifiable par affectation. Une déclaration de
variable définit son nom, son type et éventuellement sa valeur initiale:
variable count: Natural;
-- valeur initiale: count = 0 (= Natural’Left)
variable isHigh: Boolean;
Commande d’un MCC via FPGA
10
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
-- valeur initiale: isHigh = False (= Boolean’Left)
variable currentState: State := Idle; -- initialisation explicite
variable Memory: Bit_Matrix(0 to 7, 0 to 1023);
3.16. Les signaux
Un signal (signal) est un objet représentant une forme d’onde temporelle logique (une suite discrète de
paires temps/valeurs). Les valeurs prises par le signal dépendent du type associé au signal.
La déclaration de signal de base définit le nom du signal, son (sous-)type et éventuellement sa valeur
initiale:
signal nom: (sous-) type [ := valeur-initiale ];
Une déclaration de signal ne peut apparaître que dans le domaine des instructions concurrentes.
Un signal ne peut pas être d’un type fichier ou d’un type accès.
Exemples de déclarations de signaux:
signal S: Bit_Vector(15 downto 0);
-- valeur initiale par défaut: (others => ’0’)
signal CLK: Bit := ’0’; -- valeur initiale explicite
3.17. Les commentaire en VHDL
Les commentaires en langage VHDL commence toujours par ( -- )
Exemple :
-- Company: <Company Name>
3.18. Les processus [4]
Un processus (process) définit une portion de code dont les instructions sont exécutées en
séquence dans l’ordre donné. Chaque processus s’exécute de manière asynchrone par rapport aux
autres processus et aux instances de composants.
Syntaxe:
[ étiquette : ]
process [ ( nom-signal { , nom-signal } ) ] [ is ]
{ déclaration-locale }
begin
{ instruction-séquentielle }
end process [ étiquette ] ;
La liste optionnelle de signaux entre parenthèses après le mot-clé process définit la liste de sensibilité
(sensitivity list) du processus. Un événement sur l’un de ces signaux a pour conséquence une
activation du processus et une exécution de ses instructions. Un processus ayant une liste de
sensibilité ne peut pas contenir d’instructions wait.
Les déclarations locales suivantes sont admises: type, sous-type, constante, variable, fichier, alias,
sous-programme (en-tête et corps), clause use. Les variables locales conservent leur valeur d’une
activation du processus à une autre.
Les instructions séquentielles admises sont: assertion, conditionnelle (if), de sélection (case), de
boucle (loop, next, exit), assignation de signal et de variable, de synchronisation (wait), appel de
procédure.
Commande d’un MCC via FPGA
11
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
3.19. Les principales caractéristiques du langage VHDL [5]
3.19.1. Un langage s'appliquant à plusieurs niveaux de descriptions
Le langage VHDL couvre tous les niveaux partant des portes logiques de base jusqu'aux systèmes
complets (plusieurs cartes, chacune comprenant plusieurs circuits). Il s'applique tout aussi bien au
niveau structurel qu'au niveau comportemental, en passant par le niveau transferts de registres ou RTL
(Register Transfer Logic).
La description structurelle de bas niveau :
Le circuit est décrit par sa structure, sous forme d’une liste de composants instanciés et des
interconnexions les reliant. En fait, c’est l’équivalent littéral d’un schéma représentant
l’interconnexion de portes élémentaires issues d'une bibliothèque.
La description structurelle de haut niveau :
Le circuit est découpé en blocs fonctionnels de haut niveau qui sont reliés entre eux. Il s’agit
toujours d’un schéma, mais il représente des composants qui peuvent être écrit en comportemental ou
en RTL (mais aussi en structurel bas niveau). On retrouve en général ce type de description dans le
design supérieur d’une description hiérarchique (top level design).
3.19.2. Fonctionnement concurrent [5]
Le comportement d'un circuit peut être décrit par un ensemble d'actions s'exécutant en parallèle.
C'est pourquoi VHDL offre un jeu d'instructions dites concurrentes. Une instruction concurrente est
une instruction dont l'exécution est indépendante de son ordre d'apparition dans le code VHDL.
Par exemple, prenons le cas d'un simple latch, comme la montre la figure :
Figure I- 5 : Schéma d’un exemple pour le fonctionnement concurrent
Les deux portes constituant ce latch fonctionnent en parallèle. Une description possible de ce circuit
est donnée dans le code suivant (seule l'architecture est donnée).
Commande d’un MCC via FPGA
12
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
architecture comportement of VERROU is
begin
Q <= S nand NQ;
NQ <= R nand Q;
end comportement;
Ces deux instructions s'exécutent en même temps. Elles sont concurrentes ; leur ordre d'écriture n'est
pas significatif ; quel que soit l'ordre de ces instructions, la description reste inchangée.
3.19.3. Fonctionnement séquentiel [5]
Les instructions concurrentes qui viennent d’être présentées pourraient suffire à définir un langage
de description matériel. Cependant, certains circuits sont plus faciles à décrire en utilisant des
instructions séquentielles similaires à des instructions de langages classiques de programmation. En
VHDL, les instructions séquentielles ne s’utilisent qu’à l’intérieur des processus. Un processus est un
groupe délimité d’instructions, doté de trois caractéristiques essentielles :
 Le processus s’exécute à chaque changement d’état d’un des signaux auxquels il est déclaré
sensible.
 Les instructions du processus s’exécutent séquentiellement.
 Les modifications apportées aux valeurs de signaux par les instructions prennent effet à la fin
du processus.
L’exemple de la description suivante montre une architecture (seule) d’un latch D contenant un
processus qui est exécuté lors du changement d’état de l’horloge CLK.
architecture comportement of basc_D is
begin
Process (CLK)
Begin
If ( CLK= ‘1’) then
Q <= D;
End if ;
End process ;
end comportement;
3.20. Différences entre un langage de programmation et VHDL [5]
VHDL n’est pas un langage de programmation comme le C, c’est un langage de description matériel.
Il est important de bien comprendre la différence entre les deux :

Un langage de programmation est destiné à être traduit en langage machine puis à être
exécuté par un microprocesseur.
Commande d’un MCC via FPGA
13
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Un langage de description matériel comme VHDL décrit une réalité matérielle, c’est-à- dire
le fonctionnement d’un système numérique. Il va être traduit (synthétisé) en un ensemble de
circuits logiques combinatoires et séquentiels qui vont être implémentés dans un circuit
intégré. Il n’y a aucun microprocesseur pour exécuter la description VHDL dans un circuit
intégré.
4. Modèle System Generator [6] [7]
4.1. Brève description [6]
Dans le cadre de cette recherche, le développement du prototype s'effectue avec le logiciel XSG.
Il s'agit d'un toolbox développé par Xilinx pour être intégré dans l'environnement Matlab-Simulink et
qui laisse l'usager créer des systèmes hautement parallèles pour FPGA. Les modèles créés sont
affichés sous forme de blocs, et peuvent être raccordés aux autres blocs et autres toolbox de MatlabSimulink.
Une fois le système complété, le code VHDL généré par l'outil XSG reproduit exactement le
comportement observé dans Matlab. Pour le prototypage rapide, le choix de cet outil est facilement
explicable. Le système de contrôle devant être vérifié et simulé souvent et rapidement pendant tout le
développement, il est beaucoup plus simple d'analyser les résultats avec Matlab qu'avec les outils
habituellement associés au VHDL, tel que Modelsim. Aussi, le modèle peut ensuite être couplé à des
moteurs virtuels et des simulations en boucle fermée sont réalisables. Quand le prototype fonctionne,
le passage vers la plateforme matérielle pour des tests sur le terrain est rapide, ce qui rend la validation
du prototype un projet réalisable à court terme.
4.2. Méthode de développement [6]
Avec une banque de résultats provenant de la référence établie, le développement des blocs du
prototype peut se faire. L'outil XSG est utilisé afin de produire un modèle qui va tout de suite
fonctionner sur le matériel une fois achevé et validé.
L'avantage d'utiliser XSG pour le prototypage rapide devient plus évident lorsqu'il est nécessaire de
tester un bloc achevé. Il suffit de brancher aux entrées les données intermédiaires obtenues de la
référence. En simulant, on recueille les données à la sortie pour ensuite les comparer avec les données
de la référence. Notons qu'il peut y avoir une certaine erreur, car une précision arbitraire selon le
nombre de bits des opérandes est employée.
4.3. Simulink [7]
Simulink de MathWorks qui étend MATLAB, est fondée sur le modèle d'un programme de
conception et de simulation de haut niveau pour les systèmes embarqués et dynamiques. Avec son
environnement graphique et des bibliothèques de blocs, il permet la mise en œuvre, la simulation et le
test de manière intuitive des systèmes très simples à des systèmes encore plus complexes. La version
MATLAB utilisée dans ce projet est R2011a.
Commande d’un MCC via FPGA
14
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
4.4. Xilinx System Generator [7]
System Generator est un outil qui étend Simulink pour la mise en œuvre des algorithmes d’une
autre façon de haut niveau, qui peut automatiquement être mis en œuvre dans un FPGA.
La version utilisée dans ce travail est (ISE Design Suite 14.2). Figure I-10 montre un aperçu de
System Generator (Xilinx) où les différentes parties sont expliquées ci-dessous:
1. Bloc System Generator :
Ce jeton doit toujours être dans un system generator. Dans les options de compilation un
bitstream ou HDL Netlist peut être créé et l'objectif pour une co-simulation est définie ici. Les options
de l’horloge comme l’horloge de l’FPGA et la période du système Simulink sont également mis dans
ce bloc.
Figure I- 6 : Le bloc System Generator
2. La bibliothèque de Simulink
Le bloc ‘Xilinx Blockset’ peut être atteint à partir d’ Ici. Tous les blocs comme par exemple
des retards (delays) , additionneurs (adders), registres, etc., sont ici pour être choisi.
Figure I- 7 : La bibliothèque de Simulink
3. Le bloc Gateway In
La frontière entre les blocs Simulink et les blocs Xilinx.
Figure I- 8 : Le bloc Gateway In
Commande d’un MCC via FPGA
15
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
4. Le bloc Gateway Out
C’est la frontière extérieure entre les blocs Xilinx et les blocs Simulink. La spécification sur
la cartographie de broches d'E / S peut être aussi réalisé dans ce bloc.
Figure I- 9 : Le bloc Gateway Out
System Generator
( MATLAB –Simulink )
3
4
1
2
Figure I- 10 : Aperçu de Xilinx System Generator
Remarque :
Une conception intégrée peut être créé avec les différents blocs dans le bloc Xilinx Blockset.
Certains blocs spéciaux méritent une mention pour leur possibilité de mettre en œuvre des blocs créés
des fonctions déjà écrit, par exemple ‘VHDL’ ou ‘m-code’ de MATLAB. Une brève introduction sur
les deux de ces blocs se trouve ci-dessous :

Le bloc Black Box
Le bloc Black Box, permet d’importer et de mettre en œuvre une fonction écrit en VHDL ou
Verilog dans la conception. Quand on mettre le bloc Black Box dans la conception, vous êtes
Commande d’un MCC via FPGA
16
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
questionner à choisir votre fichier HDL comme
ajouter dans le code avant l'utilisation.
ou
. Certainsspéciale additionsdoit être
Figure I- 11 : Bloc de Black Box

Le bloc MCode
Le Bloc MCode, permet de passer les valeurs d'entrée d'une fonction de MALTAB pour
l'évaluation dans Xilinx de type point fixe. Les entrées et les sorties de la fonction devient les ports
d’entrée et de sortie de bloc. Quand le processus est déclenchée, le m-code, qui est le bloc utilisé est
traduit de manière directe en équivalent comportementale VHDL / Verilog.
Figure I- 12 : Le boc de Mcode
La figure suivant représente un résumé des trois différents approches considéré - Avec pur blocs
(additionneurs, des multiplicateurs, registres, etc.), avec la fonction de m-Code comme un bloc de
MCODE et comme une Black box créé le code VHDL.
function y=triangle(t);
T=4
n=length(t)
for k=1:n;
m=floor(t(k)/T)
if t(k)>=m*T&t(k)<=T/2+m*T;
y(k)=2-2*(t(k)-m*T)
else
y(k)=-2+2*(t(k)-2-m*T)
end
end
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY Gate_OR3 IS
PORT (x,y: IN std_logic;
F: OUT std_logic);
END Gate_OR3;
ARCHITECTURE Gate_OR3_beh OF
Gate_OR3 IS
BEGIN
PROCESS(x, y, z)
BEGIN
F <= x OR y OR z;
END PROCESS;
END Gate_OR3_beh;
Figure I- 13 : Exemple sur le Mcode & Black box
Commande d’un MCC via FPGA
17
CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN
5. Conclusion
Le circuit programmable de type FPGA est l’élément le plus important dans ce projet. C’est la
solution choisie pour la commande des MCC dans notre cas. C’est pourquoi on a étudié profondément
ce circuit. Nous avons présenté aussi le langage de programmation VHDL et ses notions de base
nécessaires pour programmer un FPGA. A la fin nous avons vu une autre méthode pour faciliter la
programmation des FPGA, le modèle System Generator, qui est développé par Xilinx dans
l'environnement Matlab-Simulink.
Commande d’un MCC via FPGA
18
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
CHAPITRE 2
Commande Des Moteurs à Courant Continu
Via Les Hacheurs
Commande d’un MCC via FPGA
19
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
1. Introduction
Les moteurs à courant continu sont très utilisés dans les systèmes automatiques, qui nécessitent
une régulation précise de la vitesse de rotation. Le principe de la régulation de vitesse consiste à
choisir le bon convertisseur, qui est un hacheur, avec sa commande adéquate, la commande MLI.
Il y a plusieurs façons de précéder pour varier la vitesse d'un moteur à courant continu. On peut la
faire modifier en variant la tension d'alimentation à ses bornes mais dans ce cas une partie importante
de l'énergie est consommée par le dispositif d’alimentation. Pour cette raison, on préfère l'alimenter de
façon discontinue avec un hacheur et faire ainsi varier la tension moyenne à ses bornes. On parle alors
de Modulation par Largeur d'Impulsions (MLI), très utilisée dans le domaine de la régulation de
vitesse de rotation d’un moteur à courant continu.
2. La Machine à Courant Continu (MCC) [8]
La machine à courant continu est constituée de deux parties :
 Une partie fixe, le stator, qui crée le champ magnétique ; c'est l'inducteur. Cet inducteur
peut-être constitué d'aimants permanents ou d'une bobine alimentée par un courant continu.
 Une partie mobile, le rotor, qui est l'induit de la machine. Le rotor de la machine est constitué
de conducteur et lorsque le rotor tourne, il se crée aux bornes de l'ensemble des conducteurs
une tenson induite E.
Pour faire fonctionner une machine à courant continu, on peut brancher l'inducteur en série avec
l'induit : on parle alors de machine série. Si l'inducteur est alimenté de façon séparée par rapport à
l'induit, on parle de machine à excitation indépendante.
La machine à courant continu est une machine réversible. Elle peut fonctionner soit en génératrice,
soit en moteur.
Figure II- 1 : Représentation des deux parties principales de la MCC [9]
Commande d’un MCC via FPGA
20
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
2.1. La Force électromotrice (f.e.m.) E
L'inducteur crée le flux magnétique ϕ en Weber [Wb].
Le rotor est composé de N conducteurs et tourne à la vitesse
angulaire Ω en [rad/s]
On montre que l'expression de la f.e.m. E est :
Si on pose
alors,
ϕΩ
(II. 1)
Avec : ϕ en [Wb] , Ω en [rad/s], E : f.e.m induite en [V]
Si le flux est constant, la f.e.m. induite E est proportionnelle
à la vitesse de rotation n soit :
Figure II - 2 : Modèle électrique
d'une MCC
2.2. Couple électromagnétique
Lorsqu'il circule une intensité I dans l'induit, la puissance électromagnétique est
Le rotor tournant à la vitesse Ω , il existe un couple électromagnétique
tel que
Ω
On montre alors que l'expression du couple électromagnétique est :
(II. 2)
c'est-à-dire que le couple électromagnétique est proportionnel à l'intensité qui circule dans l'induit.
2.3. Le moteur à excitation indépendante [8]

Modèle électrique
L'inducteur est alimenté par une tension continue u et est traversé par le courant continu i (si
l'inducteur n'est pas à aimants permanents).
L'induit est alimenté par une tension continue U et traversé par une intensité I.
Modèle électrique du moteur à excitation indépendante :
Pour ce moteur, le flux ϕ est directement proportionnel
au courant d'excitation i.
Équation de fonctionnement pour l'induit :
(II. 3)
Figure II- 3 : Modèle électrique du moteur
à excitation indépendante
Commande d’un MCC via FPGA
21
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Bilan énergétique et rendement
Le moteur absorbe la puissance électrique
( Si le moteur est à aimant permanent, u.i = 0 )
Au niveau de l'excitation (l'inducteur), il se crée des pertes par effet Joule
Pour l'induit, les pertes par effet Joule sont
La puissance électromagnétique
Lors d'un essai à vide,
les pertes magnétiques ou pertes fer
, on peut déterminer les pertes collectives
ainsi que les pertes mécaniques
soit :
qui représentent
On définit le couple de pertes par
Figure II- 4 : Bilan énergétique du moteur à excitation indépendante
La puissance utile disponible sur l'arbre du moteur est :
Le rendement du moteur à courant continu est
(II. 4)
2.4. Le moteur à excitation série [8]
 Modèle électrique
L'inducteur est placé en série avec l'induit. L'inducteur et l'induit sont donc traversés par la même
intensité I.
Modèle électrique du moteur à excitation série:
Équation de fonctionnement :
(II. 5)
Figure II- 5 : Modèle électrique du moteur à
excitation série
Commande d’un MCC via FPGA
22
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Bilan des puissances et rendement
Le moteur absorbe la puissance électrique
Au niveau de l'excitation (l'inducteur), il se crée des pertes par effet Joule
Pour l'induit, les pertes par effet Joule sont
La puissance électromagnétique
Lors d'un essai à vide,
, on peut déterminer les pertes collectives
les pertes magnétiques ou pertes fer ainsi que les pertes mécaniques
soit :
qui représentent
On définit le couple de pertes par
La puissance utile disponible sur l'arbre du moteur est :
Figure II- 6 : Bilan énergétique du moteur à excitation série
Le rendement du moteur à courant continu est
(II. 6)
2.5. Quelques considérations pour le moteur à courant continu [8]

Utilisation des moteurs à courant continu
Le principal avantage de ces moteurs, c'est qu'il est très facile de faire varier la vitesse de rotation
par modification de la tension d'alimentation U en utilisant des ponts redresseurs commandés ou des
hacheurs.

Démarrage des moteurs à courant continu
Nous avons vu que la f.e.m
Or, au démarrage, n = 0 d'où E = 0.
Pour un moteur à excitation séparée,
(II. 7)
Le courant de démarrage et très important.
Ce courant est source de détérioration du moteur, on essaie de limiter ce courant soit par adjonction
d'une résistance de démarrage qu'on diminue progressivement soit par augmentation progressive de la
tension d'induit. Dès que le moteur commence à tourner,
et décroît rapidement jusqu'à sa
valeur nominale I.
Si le moteur doit démarrer en charge avec une charge qui présente un couple résistant
l'intensité de démarrage doit être
,
(II. 8)
Commande d’un MCC via FPGA
23
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Remarque importante: Pour démarrer un moteur à excitation indépendante, on doit commence
par mettre l'induit sous tension et ensuite seulement mettre l'inducteur sous tension. Si le moteur est à
vide, il ne faut jamais couper la tension de l'inducteur avant celle de la tension d'induit au risque de
voir l'emballement du moteur.
Pour un moteur à excitation série, le moteur doit démarrer en charge.
3. LES HACHEURS [10]
Un hacheur permet d’obtenir une tension unidirectionnelle de valeur moyenne réglable à partir
d’une source de tension continue. C’est un convertisseur continu-continu (tension Ve continue courant is continu) dont le symbole est :
Un hacheur peut être réalisé à l’aide d’interrupteurs électroniques commandables à l’ouverture et à la
fermeture tels que les thyristors GTO ou les transistors bipolaires ou à effet de champ à grille isolée.
3.1. Les interrupteurs électroniques [11]

Le transistor bipolaire
Le transistor bipolaire est un composant électronique semi-conducteur construit généralement
dans un bloc de Silicium. Il comporte 3 zones : soit deux zones N et une zone P, il s'agit alors d'un
transistor NPN ; soit deux zones P et une zone N, il s'agit alors d'un transistor PNP.
𝑖𝐶
Figure II- 7 : Transistor bipolaire
Caractéristique de transfert :
Transistor passant = saturé
Transistor bloqué
0
Courant et tension sont unidirectionnels positifs.
𝑉𝐶𝐸
Le transistor en commutation est soit bloqué, il se
comporte comme un interrupteur ouvert entre les bornes C
et E ; soit saturé, il se comporte comme un interrupteur
fermé entre les bornes C et E.
Commande d’un MCC via FPGA
24
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
L'état du transistor est déterminé par la valeur du courant de base


:
Etat bloqué :
Le transistor est bloqué si le courant de base est nul : = 0.
Le courant est nul.
La tension
est alors imposée par le reste du circuit.
Le transistor se comporte comme un interrupteur ouvert entre les
bornes C et E.
Etat saturé :
Le transistor est saturé si le courant de base est supérieur au courant de saturation du transistor
(valeur donnée par le constructeur) :
Alors la tension
est nulle.
La valeur de l'intensité du courant de collecteur est imposée
par la charge.
Le transistor se comporte comme un interrupteur fermé entre les
bornes C et E.
Conclusion : Le transistor bipolaire est un interrupteur électronique commandable à l'ouverture et
à la fermeture : l'utilisateur peut toujours choisir l'état de l'interrupteur et ceci grâce aux courant de
base, appelé courant de commande. Il est unidirectionnel : le courant de collecteur ne peut circuler
que dans un seul sens.

Transistor MOSFET
Un transistor à effet de champ (à grille) métal-oxyde est un type de transistor à effet de champ ; on
utilise souvent le terme MOSFET, acronyme anglais de metal oxide semiconductor field effect
transistor. Comme tous les transistors ou même les tubes à vide, le MOSFET module le courant qui le
traverse à l'aide d'un signal appliqué à son électrode d'entrée ou grille. Il trouve ses applications dans
les circuits intégrés numériques, en particulier avec la technologie CMOS, ainsi que dans
l'électronique de puissance.
Les MOSFET se divisent en deux catégories, les MOSFET à déplétion (depletion mode), les
MOSFET à inversion (enhancement mode) selon leur mode d'opération.
Chaque MOSFET est aussi caractérisé par la polarité de ses porteurs de charges qui détermine s'il
est de type P ou N.
Figure II- 8 : Transistor MOSFET
Commande d’un MCC via FPGA
25
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

GTO
Le Thyristor GTO (ou plus simplement GTO), de l'anglais Gate Turn-Off Thyristor, c’est-à-dire
thyristor blocable par la gâchette, est un interrupteur électronique utilisé dans les dispositifs de forte
puissance de l'électronique de puissance.
Les applications usuelles du GTO sont les onduleurs, redresseurs et hacheurs pour la vitesse
variable et la conversion d'énergie.
Le GTO est un composant électronique dont la mise en conduction et le blocage sont commandés.
C'est l'un des interrupteurs commandés de l'électronique de
puissance pour les applications concernant les fortes tensions
(quelques kV) et les forts courants (quelques kA). Son usage
est fonctionnellement similaire à celui d'un transistor utilisé en
commutation. Il est d'ailleurs directement en concurrence avec
Figure II- 9 : Thyristor GTO
l'IGBT pour ces applications.

IGBT
Le transistor bipolaire à grille isolée (IGBT, de l’anglais Insulated Gate Bipolar Transistor) est un
dispositif semi-conducteur de la famille des transistors qui est utilisé comme interrupteur électronique
de puissance, principalement dans les montages de l’électronique de puissance.
Figure II- 10 : Transistor bipolaire à grille isolée (IGBT)
Les caractéristiques de l’IGBT font que dans les années 2000 il s’est largement imposé dans tous
les domaines de l’électronique de puissance face aux autres types de composants pour les gammes de
tension 600 V à 3 300 V, et qu’il perce dans les tensions supérieures face au GTO, ainsi que dans les
tensions inférieures face au MOSFET, bien qu’il soit plus lent.

𝑖𝐷
La diode à jonction
La diode à jonction est un composant électronique semiconducteur construit généralement dans un bloc de Silicium. Elle
comporte 2 zones : une zone P, l'anode et une zone N, la cathode.
Diode passante
Diode bloquée
0
𝑉𝐷
La diode est passante lorsque le reste du circuit tend à imposer une tension positive aux bornes de la
diode (tension directe). Elle se comporte comme un interrupteur électronique fermé idéal ( = 0).
Commande d’un MCC via FPGA
26
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
La diode est bloquée lorsque le reste du circuit impose une tension négative aux bornes de la diode
(tension inverse), le courant dans la diode est alors nul. Elle se comporte comme un interrupteur
ouvert.
Conclusion : L'état de la diode dépend du reste du circuit : la diode n'est pas un interrupteur
commandable. La diode est unidirectionnelle : le sens positif de circulation du courant ne peut être
que celui fléché.
3.2. Hacheur série (abaisseur) [11]

Principe de fonctionnement
Il est appelé aussi abaisseur de tension, dévolteur, Buck converter.
3.2..1.
Schéma de principe dans le cas d'une charge résistive
C'est par exemple le mode d'alimentation
d'un four électrique. L’interrupteur H est un
interrupteur commandable à l'ouverture et à la
fermeture.
(II. 9)
(II. 10)
(II. 11)
3.2..2.
Le rapport cyclique
Figure II- 11 : Schéma d'un Hacheur abaisseur
Le hacheur est commandé périodiquement.
On appelle T période de hachage et f fréquence de hachage.
On appelle
la durée de fermeture de l'interrupteur sur une période et
l'interrupteur sur une période. On a évidemment :
la durée d'ouverture de
Le rapport cyclique α est définit comme le rapport de la durée de fermeture et de la période de
hachage :
, le rapport cyclique est compris entre 0 et 1 : 0 ≤ α ≤ 1
3.2..3.
Valeur moyenne de la tension aux bornes de la charge
La tension aux bornes de la charge est hachée, d’où le nom du montage.
On applique la méthode des aires :
Où :
A est l'aire de la zone hachurée :
la valeur moyenne:
(II. 12)
Figure II- 12 : Oscillogramme de la tension
aux bornes de la charge
Commande d’un MCC via FPGA
27
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Le rapport cyclique est toujours inférieur à 1, de ce fait la valeur moyenne de la tension aux bornes
de la charge est toujours inférieure à la valeur de la tension de source. Ce hacheur est aussi appelé
hacheur dévolteur ou buck converter (pour les pays anglo-saxons).

Etude du hacheur série alimentant un moteur à courant continu
Pour faire varier la vitesse de rotation d'un moteur à courant continu, il faut faire varier la valeur
de sa tension d'alimentation.
Un moteur à courant continu doit être alimenté par un courant continu. En effet, le couple
électromagnétique est proportionnel au courant ( Tem = K.Φ.I ), si le courant en haché, le couple
électromagnétique aussi ce qui est inacceptable car cela cause des vibrations au moteur et une usure
prématurée. Pour éviter cela, il convient de « lisser » le courant dans le moteur : on rajoute en série
avec le moteur une inductance dite de « lissage ».
Figure II- 13 : Schéma d’un hacheur série alimentant un MCC
 Chronogrammes et analyse du fonctionnement [10]
H fermé
H ouver
(II. 13)
Figure II- 14 : Oscillogramme du courant d’un hacheur série
Ondulation du courant : Le courant dans la charge
varie entre Imin et Imax
(II. 14)
Commande d’un MCC via FPGA
28
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
3.3. Hacheur parallèle (Elévateur) [11]
 Définition
Un convertisseur Boost, ou hacheur parallèle, est un convertisseur statique qui convertit une
tension continue en une autre tension continue de plus forte valeur.
Figure II- 15 : Schéma d’un hacheur élévateur (boost)
 Analyse du fonctionnement
En première approximation, on suppose que la tension aux bornes de la charge,
lissée par le condensateur C.
, est idéalement
Phases de fonctionnement :
 Séquence 1 :
A l’instant t = 0, on amorce l’interrupteur K. La diode D est bloquée, donc l’interrupteur
conduit seul :
= 0 (hypothèse d’un interrupteur parfait).On obtient le schéma équivalent :
Figure II- 16 : Schéma d’un Hacheur Boost quand K conduit
La loi des mailles implique
Le courant
augmente :
–
Donc :
(II. 15)
La loi des mailles implique
ce qui confirme que la diode est bloquée
tant que l’interrupteur K est passant.
Pour l’inductance L, les grandeurs électriques sont telles que :
Figure II- 17 : Evolution de courant de l’inductance L (séquence 1)
Commande d’un MCC via FPGA
29
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Lors de cette phase de fonctionnement, l’inductance emmagasine de l’énergie
électromagnétique : phase d’accumulation inductive.
On remarque immédiatement que cette phase de fonctionnement interdit au rapport cyclique de
prendre la valeur 1, sinon, le courant de source croîtrait de manière infinie.

Séquence de commutation :
A l’instant
, la commande impose le blocage de l’interrupteur K. Le courant dans
l’inductance est alors maximal :
( )
Le blocage de l’interrupteur implique l’interruption brutale du courant dans l’inductance aux
bornes de laquelle apparaît une surtension telle que :
Dès que
la diode s’amorce et le courant commute de
l’interrupteur K vers la diode.
A la fin de la séquence de commutation, la diode conduit seule et ( )
 Séquence 2 :
A l'instant
, la diode conduit seule et ( )
;
Figure II- 18 : Schéma d’un Hacheur Boost quand D conduit
La loi des mailles implique
Le courant
diminue :
, Donc :
(
)
Pour l’inductance L, les grandeurs électriques sont telles que :
Figure II- 19 : Evolution de courant de l’inductance L (séquence 2)
Lors de cette phase de fonctionnement, l’inductance restitue l’énergie électromagnétique
préalablement stockée.
Remarques :
 La valeur du courant en fin de séquence 2 est minimale :
 Lors de la séquence 2, l’inductance doit restituer l’énergie stockée lors de la séquence 1.
Commande d’un MCC via FPGA
30
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Ceci implique que la tension à ses bornes est nécessairement négative lors de cette
séquence :
–
donc
, il s’agit bien d’un hacheur survolteur.

Séquence de commutation :
A l’instant
, on amorce l’interrupteur K alors que
La diode D et l’interrupteur K sont amorcés ensemble, cela provoque un court circuit du
condensateur de sortie :
Lorsque
, la diode se
bloque, le transistor conduit seul,
on retrouve alors la séquence 1.
Figure II- 20 : Hacheur Boost dans la séquence de commutation
 Observation des oscillogrammes
 Valeur moyenne de la tension aux bornes de la charge :
, Comme
, on retrouve que
: le hacheur est bien survolteur.
 Ondulation du courant dans l'inductance
, Si l’on suppose le courant de forme triangulaire alors :
Pendant le temps de fermeture,
de l’interrupteur K :
(II. 16)
(II. 17)
Commande d’un MCC via FPGA
31
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Donc l’ondulation du courant,
vérifie la relation suivante :
Donc
(II. 18)
On remarque évidemment que plus l’inductance est grande, plus l’ondulation du courant est faible.
 Ondulation de tension aux bornes de la charge
∫
La deuxième relation implique que, si
est périodique,
et
, On en déduit que :
Pendant le temps de fermeture, du transistor :
donc ;
(II. 19)
3.4. Hacheur réversible [11]
Les structures que nous avons vu précédents (Hacheur série ou Parallele) ne sont pas réversibles,
ni en tension, ni en courant. L'énergie va donc toujours de la source vers la charge. Il est possible de
modifier ces dispositifs pour inverser le sens de parcours de l'énergie. Ainsi, une source peut devenir
une charge et inversement. Ce type de comportement se rencontre usuellement dans les systèmes
électriques. Ainsi, un moteur en sortie d'un hacheur représente une charge. Cependant, si on veut
réaliser un freinage, le moteur va devenir génératrice, ce qui va entraîner un renvoi d'énergie à la
source.

Hacheur réversible en courant
Il existe deux modes de fonctionnements :


soit le transfert de l’énergie s’effectue
de la source vers la charge alors la
machine à courant continu fonctionne
en moteur.
soit le transfert de l’énergie s’effectue
de la charge vers la source alors la
machine à courant continu fonctionne
en génératrice. Il s’agit d’une phase
de freinage de la MCC.
Figure II- 21 : Hacheur réversible en courant
Figure II- 22 : Les 02 modes de fonctionnements d’un Hacheur réversible en courant.
Commande d’un MCC via FPGA
32
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Hacheur réversible en tension
Lors de la première phase de
fonctionnement, dans l'intervalle de
temps [0 , αT] : T1 et T2 sont fermés
D1 et D2 ouvertes. Uc = +E.
Figure II- 23 : Hacheur réversible en tension
Lors de la seconde phase de
fonctionnement, sur l'intervalle de
temps [αT , T],T1 et T2 sont ouvertes
et D1, D2 sont fermés. Uc = -E.
(II. 20)
3.5. Hacheur en Pont ou 4 quadrants [11]
Ce hacheur est à la fois réversible en courant et en tension. Il permet d’alimenter un moteur à
courant continu et de le faire fonctionner dans les 4 quadrants du plan couple-vitesse, c’est-à-dire de la
faire tourner dans les deux sens de rotation et autoriser la récupération d’énergie lors des phases de
freinage.

Schéma du montage
Figure II- 24 : Schéma d'un Hacheur 4 quadrants
Le montage est constitué d’une source de tension continue E réversible en courant, de l’induit
d’une machine à courant continu (MCC) + son inductance de lissage L et de 4 interrupteurs
électroniques K1, K2, K3, K4 commandés à l’ouverture et à la fermeture et bidirectionnels en courant.
La machine à courant continu est susceptible de fonctionner en moteur, le transfert d’énergie
s’effectue alors de la source E vers la MCC, ou en génératrice, le transfert d’énergie s’effectue alors
de la MCC vers la source E.
Les interrupteurs sont constitués d’un transistor ou d’un IGBT + son circuit de commande, et d’une
diode branché en antiparallèle qui permet d’assurer la possibilité du retour du courant.
Commande d’un MCC via FPGA
33
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Les 04 quadrants
Les
04
quadrants
de
fonctionnement de la machine à
courant continu dans le plan
ou
sont donnés sur la figure cicontre.
Figure II- 25 : Les 4 quadrants de fonctionnement de la machine à courant continu
Quadrant 1 : la machine tourne en marche avant et fonctionne en moteur.
Quadrant 2 : la machine tourne en marche avant et fonctionne en génératrice.
Quadrant 3 : la machine tourne en marche arrière et fonctionne en moteur.
Quadrant 4 : la machine tourne en marche arrière et fonctionne en génératrice.
 Commande continue
Ce mode de commande est le plus souvent utilisé avec ce type de hacheur.
 De 0 à αT les interrupteurs K1 et K3 sont fermés alors que K2 et K4 sont ouverts ;
 De αT à T les interrupteurs K2 et K4 sont fermés alors que K1 et K3 sont ouverts.


Avantages
Inversion rapide de la tension et du
courant.
Pas besoin de détection du signe du
courant.


Inconvénients
2 fois plus de commutations par période.
Variation de la tension de sortie deux fois
plus grande ce qui augmente l’ondulation
du courant de sortie.
Commande d’un MCC via FPGA
34
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Analyse du fonctionnement en commande continue
Pour 0 ≤ t < αT, on commande la fermeture de K1 et K3 donc
 Si
, le courant circule par T1 et T3.
 Si
, le courant circule par D1 et D3.
Pour


Si
Si

:
, on commande la fermeture de K1 et K3 donc
, le courant circule par D2 et D4.
, le courant circule par T2 et T4.
:
Valeur moyenne de la tension aux bornes de la charge
La méthode des aires :
(II. 21)
Cette tension est donc réglable de – E à + E

Chronogrammes
Chronogrammes pour
et la machine à courant continu fonctionnant en moteur : quadrant 1
Commande d’un MCC via FPGA
35
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Remarque : pour α < ½ la machine à courant continu fonctionne en moteur : quadrant 3

Fonctionnement dans les 4 quadrants
La tension aux bornes de la charge vérifie la relation :
Or
donc :
De plus
Ω
et
On en déduit que la vitesse de rotation est donnée par la relation :
Ω
(II. 22)
4. Structure de commande
Circuit de commande
Circuit de puissance
Hacheur
Machine à courant continu
MCC
Pour faire varier la vitesse d'un moteur on peut faire varier la tension d'alimentation à ses bornes
mais dans ce cas une partie importante de l'énergie est consommée par le dispositif d’alimentation, on
préfère l'alimenter de façon discontinue avec un hacheur et faire ainsi varier la tension moyenne à ses
bornes. On parle alors de Modulation par Largeur d'Impulsions (MLI), ou Pulse Width Modulation
(PWM).
4.1. Génération d'une MLI (PWM)
Une Modulation à Largeur d'Impulsion est un signal à période constante mais à rapport cyclique
réglable. La MLI (ou PWM) est utilisée dans la famille des variateurs de fréquence : les
cycloconvertisseurs, les onduleurs, les redresseurs et les hacheurs.
Son application dans les variateurs de vitesse de moteur à courant continu ou dans la commande de
chauffage est très courante.
Le variateur de fréquence étant très utilisé dans l'industrie, l'étude des MLI devient très importante.
Commande d’un MCC via FPGA
36
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
4.2. Principe de la commande MLI [12]
Le Principe de base de la Modulation de la Largeur d’impulsion MLI est fondé sur le découpage
d’une pleine onde rectangulaire. Ainsi, la tension de sortie est formée par une succession de créneau
d’amplitude égale à la tension continue d’alimentation et de largeur variable. La technique la plus
répondue pour la production d’un signal MLI est de comparer entre deux signaux :
 Le premier, appelé signal de référence, est un signal continue
 Le second, appelé signal de la porteuse, définit la cadence de la commutation des interrupteurs
statiques du convertisseur. C’est un signal de haute fréquence par rapport au signal de
référence ;
 L’intersection de ces signaux donne les instants de commutation des interrupteurs.
Figure II- 26 : Un signal MLI (PWM)
5. Conclusion
Nous avons présenté dans ce chapitre des généralités sur la machine à courant continu, et on peut
recenser deux types d’excitation très répandus dans les utilisations des MCC: la machine à excitation
indépendante et la machine à excitation série.
En même temps, on a parlé des convertisseurs continu/continu (les hacheurs) et ses différentes
types utilisés pour commander la vitesse de la MCC : abaisseur (buck), élévateur (boost), réversible en
courant et en tension, et enfin l’hacheur en pont (04 quadrant).
A la fin nous avons vu aussi la stratégie de commande en utilisant la modulation à largeur
d'impulsion (MLI) ou Pulse Width Modulation (PWM).
Commande d’un MCC via FPGA
37
CHAPITRE III : Implémentation et résultats
CHAPITRE 3
Implémentation et résultats
Commande d’un MCC via FPGA
38
CHAPITRE III : Implémentation et résultats
1. Introduction
Ce chapitre est réservé à la présentation des aspects pratiques de notre application. Commençant
par la description du banc d’essais, jusqu’aux résultats pratiques. Dans la première partie, on présente
une description détaillée de la partie matérielle utilisée (moteur à courant continu, la carte FPGA
Altera DE2, la carte DSPace…).
Ensuite, dans la deuxième partie, on présente les deux solutions (Simulink et VHDL-Sysgen) pour
générer le signal PWM sous les deux cartes ( Altera DE2 et DSPace 1104). A la fin, on fait une
comparaison entre les différents résultats obtenus par les deux cartes.
2. Cachier des charges
Il s’agit de la commande en vitesse d’un MCC via un hacheur un quadrant (hacheur élévateur).
L’implémentation de la commande est réalisée sous deux plateformes différentes : DSPace 1104 et
FPGA Altera DE2.
3. Parite matérielle
3.1. Présentation du banc d’essai
Notre banc d’essai est composé d’une machine à courant continu, d’un capteur de vitesse
(encodeur incrémental), d’un hacheur un quadrant (SEMIKRON), de deux inductances,
d’une alimentation variable, d’une carte Dspace 1104, et d’une carte FPGA Altera DE2.
L’alimentation d’inducteur
Le moteur à courant
continu
Capteur de courant
L’alimentation d’induit
Encodeur de vitesse
Bobine de lissage
Figure III- 1 : Banc d’essai
Commande d’un MCC via FPGA
39
CHAPITRE III : Implémentation et résultats
3.2. Schéma bloc global
Alimentation variable
Hacheur Boost
Alimentation
d’inducteur
Capteur de courant
induit
Inductance
de lissage
Hacheur Boost
Altera Cyclone II
Ou DSPAce 1104
Circuit de
commande
MCC
inducteur
Inductance
de lissage
Encodeur
de vitesse
Figure III- 2 : Schéma bloc global
La carte Altera DE2 générer le signal de commande PWM qui entrée dans le ciruit de commande
(opto-coupleur + Driver) pour assuré un isolation galvanique (isolation électrique) et augmenter le
signal de commande puis envoyer vers l’IGBT de l’hacheur Boost.
En met deux inductances avant l’entré de l’hacheur et aprés la sortie de l’induit pour lisser le courant ;
on ajoute aussi un capteur de courant en série avec l’induit et un encodeur de vitesse pour mésurer la
vitesse de rotation du MCC.
3.3. Les composants
a) Les alimentations
Figure III- 3 : Alimentation d’induit
Figure III- 4 : Alimentation Hacheur
Commande d’un MCC via FPGA
40
CHAPITRE III : Implémentation et résultats
Figure III- 3 : Alimenation stabilisé pour
alimenter l’optocoupleur et le Driver
b) Les inductances
Figure III- 4 : Inductance de lissage
c)
Capteur de vitesse (Encodeur Incrémental)
Figure III- 5 : Encodeur de vitesse
Commande d’un MCC via FPGA
41
CHAPITRE III : Implémentation et résultats
d) L’oscilloscope
Figure III- 6 : Oscilloscope de type Tektronix TDS 1002C-EDU
e)
L’ Hacheur un quadrant – Elévateur [13][14]
La carte Altera DE2 générer le signal de commande PWM qui entrée dans un optocoupleur pour
assuré une isolation galvanique (isolation électrique) entre la carte FPGA et le circuit de commande,
Le Driver augmente le signal de commande et envoyer vers les IGBTs.
Remarque :
 Les pins de la carte Altera DE2 fournir une tension de 3.3Volts.
 Pour commander un IGBT, nous nécessitons une tension de 15 Volts.
Donc,
On ajoute un Driver pour amplifier le signal PWM qui les pins d’Altera envoyer de 3.3V à
15V.
L’hacheur fait la conversion DC/DC pour faire varier la vitesse de la MCC.
Figure III- 7 : Schéma d’un hacheur élevateur (boost)
Commande d’un MCC via FPGA
42
CHAPITRE III : Implémentation et résultats
Figure III- 8 : Hacheur Boost SEMIKRON
Alimentation 15V dc
Pour l’opto-coupleur
Alimentation
d’Hacheur boost
+15V DC
L’entré du
signal PWM
Les bornes de
l’inductance
bornes sortie
vers l’induit
Diode
(+) IN
(+) OUT
Opto-coupleur
Radiateur
IGBT
GND
(-) IN
(-) OUT
Figure III- 9 : Hacheur Boost réalisé localement (front de la carte)
Figure III- 10 : Hacheur Boost réalisé localement ( l'arrière de la carte)
Commande d’un MCC via FPGA
43
CHAPITRE III : Implémentation et résultats
f)
MCC
les caractéristiques de moteur à courant continu :
 P = 1000 W
; la puissance du moteur.
 U = 220 V
; la tension d’induit.
 I = 5.7 A
; le courant d’induit.
 Uexc = 220 V
; la tension d’inducteur.
 Iexc = 0.32 A
; le courant d’inducteur.
 n = 3000 RPM (Round Per Minute) , la vitesse en tr/min.
Figure III- 13a : La machine à courant continu
g)
Figure III- 11b : les caractéristiques du MCC
La carte DSPace 1104 [15]
La DS1104 est une carte installée dans le PC, associée à deux logiciels: le premier, Matlab/Simulink
qui permet sa programmation à l’aide des librairies Simulink; le second, Control Desk, qui permet
l’envoi des commandes et la génération de l’interface pour la visualisation en temps réel des différents
signaux.
La carte dispose d'un processeur principal MPC8240, avec un cœur PowerPC 603e, avec une horloge
interne de 250 MHz et une capacité mémoire de 8 Mo en Flash et de 32 Mo en SDRAM. Elle dispose
également de :
 8 convertisseurs analogiques numériques (ANC) (4 en 16 bits, 4 en 12 bits),
 8 convertisseurs numériques analogiques de 16 bits pouvant délivrer une tension +/-10V,
 2 codeurs incrémentaux,
 20 entrées sorties numériques,
 d’un DSP esclave (TMS320F240)
 3 timers (32 bits) pouvant fonctionner de
manière indépendante.
 d’une liaison série.
Figure III- 14 : la carte DSPace
Commande d’un MCC via FPGA
44
CHAPITRE III : Implémentation et résultats
Figure III- 15 : Control panel
h) Carte FPGA – Altera DE2 [16]
La carte dont on dispose dans le laboratoire de la faculté est l’ALTÈRA CYCLONE II.
Elle utilise un gros FPGA (33.216 LE) comme cœur et dispose de mémoire (SRAM,
SDRAM et Flash), de convertisseurs audio, vidéo et TV, ainsi que d'interfaces IrDA,
Ethernet et USB ; cette carte est munie d'afficheurs LED et LCD et d'un grand nombre de
boutons poussoirs et des interrupteurs.
Figure III- 16 : Diagramme de bloc de la carte ALTERA DE2
Cette carte dispose des éléments suivants :
 Un FPGA Altera Cyclone II 2C35.
 Un circuit de mémoire Flash série Altera EPCS16, cette mémoire permet de stocker de
manière nonvolatile la configuration du FPGA.
 Horloges : Oscillateurs 27 et 50 MHz et entrée externe (SMA).
 Une interface USB-Blaster pour la programmation.
Commande d’un MCC via FPGA
45
CHAPITRE III : Implémentation et résultats















Les mémoires : 512-Kbyte de SRAM, 8-Mbyte de SDRAM, 4-Mbyte de mémoire Flash.
Un connecteur SD Card.
4 boutons poussoirs.
18 interrupteurs.
18 LEDs utilisateur rouges , 9 LEDs utilisateur vertes.
8 Affaicheur 7-segment.
Un CODEC 24-bit CD-quality avec jacks entrée ligne, sortie ligne et microphone-in
Un CNA VGA (10-bit high-speed triple DACs) avec connecteur VGA-out
Un décodeur TV (NTSC/PAL) avec connecteur TV-in
Un contrôleur 10/100 Ethernet avec connecteur
Un contrôleur USB Hôte/Esclave avec connecteurs USB type A et type B
Un E/R RS-232 avec connecteur 9-broches
Un connecteur PS/2 souris/clavier
Un E/R IrDA
2 connecteurs d’extension 40-broches avec diodes de protection
Figure III- 17: La carte Altera DE2
Figure III- 18 : La carte Altera Cyclone II EP2C35F672C6
Commande d’un MCC via FPGA
46
CHAPITRE III : Implémentation et résultats
4. Partie logicielle
4.1. Génération de la PWM sous Matlab/simulink
RTI Data
1000
In1
fréquence d'hachage
In2
1
cte1
PWM
Figure III- 19 : Modèle simulink pour générer PWM
1
In1
10
K Ts
z-1
Gain3
rem(u(1),u(2))
boolean
Bad Link
Data Type Conversion
DS1104BIT_OUT_C12
2*pi
Relay
Fcn
2*pi
2
2*pi
In2
Gain1
Figure III- 20 : Le bloc PWM
4.2. Solution sous FPGA pour Générer PWM
a) Génération PWM avec VHDL [17]
Le code VHDL permettant la génération de la PWM est le suivant :
Partie 1 :
-- PFE COMMANDE D'UN MCC VIA FPGA
-- objectif: un signal PWM(MLI)!
--------------------------------------- clk fpga Altera Cyclone II = 50 MHz -- T=1/clk = 20ns
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity pwm_dc is
port ( clk
: in std_logic;
reset : in std_logic;
btn1 : in std_logic;
btn2 : in std_logic;
pwm : out std_logic
);
end pwm_dc;
--l’horloge de la carte FPGA
--bouton pour remettre le programme à zéro.
--bouton pour diminuer le rapport cyclique (alpha)
--bouton pour augmenter le rapport cyclique (alpha)
-- **la commande MLI (PWM)**
Commande d’un MCC via FPGA
47
CHAPITRE III : Implémentation et résultats
architecture Behavioral of pwm_dc is
constant period
: integer:=50000;
constant alpha_max : integer:=45000;
constant alpha_min : integer:=5000;
constant alpha_in : integer:=10;
signal
signal
signal
signal
-- 50000*20ns=1ms /la pré-division de l’horloge /fréq.d’hachage
-- 45000*20ns = 0.9 ms
-- 5000*20ns = 0.1 ms
--10*20ns = 0.0002 ms
-- Le pas d’augmentation ou de diminution du rapport cyclique
pwm_reg, pwm_next
: std_logic;
alpha, alpha_next
: integer := 0;
counter, counter_next
: integer := 0; --variables d’aides pour le calcul ou pour la mémorisation.
tick
: std_logic; -- un signal sous forme d’impulsion de période 50000*20ns=1ms
Cette première partie du programme contient l’entité où sont déclarées les entrées et sorties du
programme :
:









 Les entrées :
Clk : l’horloge de la carte ALTÈRA qui est de 20 ns.
Reset : bouton pour remettre le programme à zéro.
btn1, btn2 : boutons pour augmenter et diminuer le rapport cyclique.
pwm : la commande MLI (PWM)
 Les variables internes :
period : constante le long du programme pour la pré-division de l’horloge de notre programme.
alpha_max, alpha_min : La valeur maximum et minimum du rapport cyclique et qui restent aussi
constantes le long du programme.
alpha_in : Le pas d’augmentation ou de diminution du rapport cyclique par l’appuie les boutons
appropriés.
pwm_reg, pwm_next, alpha, alpha_next, counter, counter_next : variables d’aides pour le calcul
ou pour la mémorisation.
Tick : un signal sous forme d’impulsion de période 50000*20ns = 1 ms .
Partie 2 :
-- la pré-division de l’horloge pour avoir un signal PWM de période 1ms
-----------------------------------------------------------------------------------------------begin
process(clk,reset)
begin
if (reset='1') then
pwm_reg <= '0';
counter <= 0;
alpha <= 0;
elsif (clk='1' and clk' event) then
pwm_reg <= pwm_next;
counter <= counter_next;
alpha <= alpha_next;
end if;
Commande d’un MCC via FPGA
48
CHAPITRE III : Implémentation et résultats
end process;
counter_next <= 0 when counter = period else
counter+1;
tick <= '1' when counter = 0 else
'0';
La deuxième partie du programme consiste à la pré-division de l’horloge pour avoir un signal
PWM de période 1ms, au lieu de 20 ns.
Partie 3 :
-- la modification du rapport cyclique (alpha) du signal PWM
---------------------------------------------------------------------------------process(btn1,btn2,tick,alpha)
begin
alpha_next <= alpha;
if (tick = '1') then
if (btn1 = '0') and (alpha > alpha_min) then
alpha_next <= alpha - alpha_in;
elsif (btn2 = '0') and (alpha < alpha_max) then
alpha_next <= alpha + alpha_in;
end if;
end if;
end process;
pwm <= pwm_reg;
pwm_next <= '1' when counter < alpha else
'0';
end Behavioral;
--********** ************* THE END *****************************
La troisième partie du programme est consacrée à la modification du rapport cyclique du signal PWM,
en appuyant sur les boutons btn1,btn2 pour augmenter et diminuer le rapport cyclique.
Figure III- 12 : Schéma RTL du signal PWM
Commande d’un MCC via FPGA
49
CHAPITRE III : Implémentation et résultats
b) Génération PWM avec SYSGEN
0.7*256
Sy stem
Generator
signal de référence
(signal continu)
In
Gateway In
a
ab
b
Out
Gateway Out
PWM
Relational
++
signal de la porteuse
(sawtooth)
Out
Gateway Out2
comparaison
Figure III- 22 : Génération PWM avec System generator
Pour déterminer les instants de fermeture et d'ouverture des interrupteurs, on utilise la technique
(MLI), que consiste à comparer le signal de référence (modulante) de forme continu, à un signal
triangulaire (porteuse).




Fréquence d'horloge : elle dépend de type de carte FPGA ; dans notre cas la carte Alera DE2
utilisé :
Fréquence avec prédiviseur (Prescale):On utilise :
Timer (Compteur ): La résolution du timer dépend du timer choisi :
On utilise 8 bits (soit
)
Valeur de débordement : fixé en fonction du rapport cyclique souhaité
Exemple : valeur = 192 donc rapport cyclique = (192/256)=0.75=75%
Figure III- 23 : Illustration Comment programmer le PWM.
Commande d’un MCC via FPGA
50
CHAPITRE III : Implémentation et résultats
5. Résultats
5.1. Résultats Avec DSPace
Ci-dessous les résultats obtenus concernant la commande du MCC sous l’environnement
Matlab/Simulink/Dspace
a) L’allure des courants d’induit et inducteur avec les rapports cycliques =0.3 et =0.7
Figure III- 24 : L'allure sur oscilloscope du
courant d’induit avec (alpha = 0.3)
Figure III- 25 : L'allure sur oscilloscope du
courant d’induit avec (alpha = 0.7)
3
2.5
2
1.5
1
0.5
0
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4
x 10
Figure III- 26 : L'allure sur control desk du courant d’induit avec (alpha = 0.7)
1
0.5
0
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4
x 10
Figure III- 27 : L'allure sur Control Desk du courant d’induit avec (alpha = 0.3)
Commande d’un MCC via FPGA
51
CHAPITRE III : Implémentation et résultats
b) L’allure de la vitesse avec les rapports cycliques =0.3 et =0.7
2000
1800
1600
1400
1200
1000
800
0
0.5
1
1.5
2
2.5
3
3.5
4
4
Figure III- 28 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7)
La Vitesse environ 1920 tr/mn
x 10
2000
1800
1600
1400
1200
1000
800
0
0.5
1
1.5
2
2.5
3
3.5
4
4
Figure III- 29 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3)
La Vitesse environ 980 tr/mn
x 10
5.2. Résultat Avec FPGA
Ci-dessous les résultats obtenus concernant la commande du MCC sous l’environnement
QuartusII/FPGA.
a) Allure du signal PWM (MLI)
E (Tension d’alimentation) (V)
60V
Alpha
0.3
0.7
85.7
200.0
Uch_théorique (V)
104
205
Uch_mésuré (V)
Tableau III- 1 : les résultats obtenu avec VHDL_FPGA
Commande d’un MCC via FPGA
52
CHAPITRE III : Implémentation et résultats
Tension d’alimentation
E = E% × Esource
E = 26% × 230V
E = 60V
Uch quand (Alpha = 0.3)
Uch quand (Alpha = 0.7)
Figure III- 30a : Signal MLI (PWM)
avec (alpha = 0.3)
Figure III- 30b : Signal MLI (PWM) avec
(alpha = 0.7)
b) L’allure des courants d’induit et inducteur avec les rapports cycliques =0.3 et =0.7
3
2.5
2
1.5
1
0.5
0
-0.5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
Figure III- 31 : L'allure du courant d’induit avec (alpha = 0.3)
2
4
x 10
Commande d’un MCC via FPGA
53
CHAPITRE III : Implémentation et résultats
4
3.5
3
2.5
2
1.5
1
0.5
0
-0.5
-1
-1.5
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
4
x 10
Figure III- 32 : L'allure du courant d’induit avec (alpha = 0.7)
c) L’allure de la vitesse avec les rapports cycliques =0.3 et =0.7
2000
1800
1600
1400
1200
1000
800
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
4
x 10
Figure III- 33 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3)
La Vitesse environ 1358 tr/mn
3000
2500
2000
1500
1000
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
4
Figure III- 34 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7)
La Vitesse environ 2800 tr/mn
x 10
Commande d’un MCC via FPGA
54
CHAPITRE III : Implémentation et résultats
5.3. Comparaison
Le tableau III- 2 représente une comparaison sur l’ondulation de courant d’induit Δia entre la carte
Altera Cyclone II et la carte DSPace 1104. Ces valeurs sont prises sur les courbes précédentes (Figure
III-26 & 27) (Figure III-31 & 32)
Ondulation de Courant d’induit Δia (A)
Alpha = 0.3
Alpha = 0.7
Altera Cyclone II
0.4 A
0.4 A
DSPace 1104
0.4 A
0.5 A
Tableau III- 2 : l’ondulation de courant d’induit Δia dans les 02 cartes
On observe que l’ondulation du courant d’induit est presque la même avec les deux cartes,
donc il n’y pas de différence pour la commande d’un MCC que ce soit par la carte Altera ou bien par
la carte DSPace.
Le tableau III- 3 représente une comparaison sur la vitesse de rotation Ω entre celle obtenue par la
carte Altera Cyclone II et celle obtenue par la carte DSPace 1104. Ces valeurs sont prises sur les
courbes précédentes (Figure III-28 & 29) (Figure III-33 & 34)
La vitesse Ω (tr/mn)
Alpha = 0.3
Alpha = 0.7
Altera Cyclone II
1385
2800
DSPace 1104
980
1920
Tableau III- 3 : La vitesse de rotation Ω du MCC VIA les 02 cartes
Dans cette comparaison, on voit une nette différence entre les résultats obtenus par les deux cartes.
La différence revient qu’au niveau de la carte Dspace, il ya un gain multiplié par Alpha.
Par manque de temps, on n’a pas pu vérifier cette anomalie.
6. Conclusion
Dans ce chapitre nous avons présentés deux solutions pour la génération du signal PWM afin de
commander la variation de vitesse d’un MCC via un hacheur Boost. La première a travers un carte
Dspace et la deuxième via une carte FPGA. Des résultats expérimentaux ont été exposés afin de
valider nos deux solutions.
Commande d’un MCC via FPGA
55
Conclusion et perspectives
CONCLUSION ET PERSPECTIVES
Ce travail a été pour nous, le premier pas vers un monde nouveau et complexe, mais très
intéressant notre recherche bibliographique dans les domaines de l’électronique, de l’électrotechnique
et de l’informatique tel que ‘les interrupteurs électroniques, les hacheurs, les machines à courant
continu et la programmation vhdl ’, nous a permis d’enrichir nos connaissances et de développer notre
base théorique.
Dans le cadre de la préparation du Diplôme de Master en Electrotechnique, Ce travail vise à
présenter une étude théorique et expérimentale. Il s’agit de la programmation d’une commande MLI
numérique destinée à varier la vitesse d’un moteur à courant continu à travers un hacheur élévateur.
Pour cela, il a été demandé de suivre un cahier de charge qui consiste à fournir une onde MLI par
deux outils de programmation (Matlab/Simulink) et (VHDL-Sysgen).
Durant l’élaboration de ce travail, notre expertise s’est renforcé dans :
 Réalisation d’un Hacheur un quadrant Boost
 Programmation de la MLI via Simulink, VHDL, et SYSGEN
Perspectives
 Réalisation d’un hacheur 04 quadrants.
 Réalisation de la commande en vitesse du MCC en boucle fermée, en intégrant la routine
de lecture de l’encodeur incrémental et du régulateur PI, via VHDL et SYSGEN.
Commande d’un MCC via FPGA
58
Annexes
ANNEXES
Commande d’un MCC via FPGA
Annexes
Annexe A
Introduction à Quartus II
Etape 1 : Création d’un projet
1. Démarrer le logiciel Quartus II V7.2
Menu ‘démarrer’ de Windows 7  Tous les programmes  Altera  Quartus II 7.2 Web
Edition  Quartus II 7.2 Web Edition.exe
2. Création un nouveau projet : File  New Project Wizard
3. Sélectionner le répertoire de travail et le nom de projet [ Figure 1]
Working Directory
E:\pwm_dc
Project Name
Pwm_dc
Top-Level De ign Entity
Pwm_dc
4. Sélectionner la famille et les paramètre de la carte. [ Figure 2]
La famille, sélectionner Cyclone II.
Et à la liste de ‘available devices’, sélectionner EPC235F672C6
Figure 1 : New projet
5. Next  Next  Finish
Figure 2 : la famille et les paramètre de la carte
Etape 2 : Création, ajouter et compiler le fichier de design.
1. Crée un nouveau ‘Desgin File’ [Figure 3]
File  New  sélectionner ‘VHDL File’ à l’onglet ‘Device Design Files’
Commande d’un MCC via FPGA
Annexes
2. Copie et coller notre code VHDL pour
générer le signal PWM dans la fenêtre de
‘VHDL.vhd’[Figure 4]
Puis sauvegarder ce fichier : File  Save(CRTL + S).
Garder le nom pardéfaut et clicker Sur ‘Enregistrer’.
Figure 2 : la fenêtre code VHDL
Figure 1 : VHDL File
3. Compilation le fichier VHDL
Processing  Start Compilation (CTRL + L) ou cliquer directement sur l’icon
la barre d’outils.
Ignorer les avertissements (warnings) qui apparaît.
Figure 3 : Compilation
Figure 4 : Résultat de compilation
Commande d’un MCC via FPGA
dans
Annexes
Figure 5 : rapport de compilation
Etape 3 : Assignation des pins
1. Assignments  ‘Pin Planner’ ou bien ‘Assignment Editor’
Figure 6 : Assignation des pins
Figure 7 : Tous les pins aprés l'assignation
2. Enregistrer les assignations des pins : File  save
Commande d’un MCC via FPGA
Annexes
Etape 3 : Comment programmer la carte Altera DE2
1. Connecter la carte Altera DE2 Cyclone II comme les figures suivants monter :
Figure 8 : Comment connecter la carte Altera ?
2. Pour envoyer notre programme vers la carte : Cliquer sur l’icon ‘Programmer’
sur la barre
d’outils.
3. Dans ‘Hardware Setup’ sélectionner ‘USB-Blaster’.
4. A la fin cliquer sur le botton ‘Start. Et attendre la barre de progress jusqu’a 100%.
La programmation est complète.
Figure 9 : fenêtre de programmation
Commande d’un MCC via FPGA
Annexes
Annexe B
Réalisation d’un Hacheur Boost
Figure 10 : Schéma de l'hacheur boost
Figure 11 : Hacheur Boost réalisé
Notre circuit de puissance contient :
o L’interrupteur principale « IGBT » de type AUIRG4PH50S
Figure 12 : IGBT de type AUIRG4PH50S
Commande d’un MCC via FPGA
Annexes
o Une inductance de lissage (L) [16]
Figure 13 : Inductance de lissage
Dimensionnement de la bobine de stockage :
(
)
A partir de :
(
)
Pour trouver l’ondulation maximale du courant il suffit de résoudre l’équation :
(
(
(
)
(
(
)
)
))
α = 0.5
Le dimensionnement de l’inductance L, à partir d’une ondulation en courant donnée, s’effectue à
l’aide l’équation suivante :
o Une diode (D) de type 1N4007
o Un Radiateur de refroidissement pour protéger l’IGBT à l’augmentation de température.
Commande d’un MCC via FPGA
Annexes
Notre circuit de commande contient :
o Un Opto-coupleur de type HCPL-3120
+ 15V
Pin J22
de carte Altera DE2
Vers IGBT
GND
GND
Figure 14 : Opto-coupleur HCPL-3120
o Une Résistance de 36 Ohm, placé avant la grille de l’IGBT
Commande d’un MCC via FPGA
Annexes
Annexe C
L’encodeur de vitesse en quadrature
Un encodeur est un dispositif électromécanique capable de mesurer le mouvement ou la position.
La plupart des encodeurs utilisent des capteurs optiques pour fournir des signaux électriques sous
forme de trains d'impulsions, lesquels peuvent, à leur tour, être interprétés comme mouvement,
direction ou position.
Figure 15 : Encodeur de vitesse
Les encodeurs rotatifs servent à mesurer le déplacement rotatif d'un axe. La figure 18 montre
les composants de base d'un encodeur rotatif : une diode électroluminescente (LED), un disque et un
capteur de lumière de l'autre côté du disque. Le disque, monté sur l'axe rotatif, comporte des motifs
encodés de secteurs opaques et transparents. Lorsque le disque tourne, les segments opaques bloquent
la lumière alors que ceux où le verre est clair la laissent passer. Ceci génère des impulsions d'onde
carrée qui peuvent ensuite être interprétées comme position ou mouvement.
Figure 16 : Composants d'un encodeur optique
Commande d’un MCC via FPGA
Bibliographie
BIBLIOGRAPHIE
Commande d’un MCC via FPGA
Bibliographie
Bibliographie
[1] Lilian BOSSUET, Les circuits matériels reconfigurables – FPGA ‘Les FPGA, Technologie,
architecture et utilisation’, 2010
[2] Johanna MARIANI, Programmation et Utilisation du FPGA pour la validation et la vérification de
circuits électroniques, Mémoire d'ingénieur, 2011
[3] Denis RABASTE, Programmation des CPLD et FPGA en VHDL avec Quartus II, aide mémoire,
IUFM d’Aix-Marseille, 2011
[4] Kamel MESSAOUDI, Cours VHDL (Informatique industrielle), Master I Electrotechnique,
Universitie de constantine, 2013
[5] C.ALEXANDRE, FPGA EPRM ,Conservatoire National des Arts et Métiers, Support de cours
2013/2014
[6] Jean-Gabriel MAILLOUX, Prototypage rapide de la commande vectorielle sur fpga a l'aide des
outils simulink - system generator, mémoire d’ingénieur, Université Du Québec, 2008
[7] Maria BORGST RÖM, Case study of a Rapid Control Prototyping system based on Xilinx System
Generator, Mémoire de master, Royal Institute Of Technology, 2010
[8] Y.MOREL, La Machine A Courant Continu (Cours et Exercices), Article, 2004
[9] Claude CHEVASSU, Machines électriques ‘Cours et Problèmes’, Ecole nationale supérieure
maritime, livre, 2011
[10] F.BOUCHAFAA,CONVERTISSEURS DC/DC, Support de cours, Université des Sciences et de
Technologie Houari Boumediene, 2010
[11] BTS Electrotechnique, Cours disponible librement à l’adresse :http://physique.vije.net/BTS
[12] Amin AYAD, Etude et réalisation d’une commande MLI pilotant un hacheur série, mémoire
de master, Université Abou Bekr Belkaid Tlemcen, 2014
[13] Othmane BOUTELDJA, Prédétermination des caracteristiques d’un systeme pv raccorde au
reseau, Mémoire de master, Universitie de constantine, 2013
[14] Tarek BOUGUERRA, Optimisation d’un système photovoltaïque Application en continu et en
Alternatif, Mémoire de magister, Universitie de constantine, 2014
Commande d’un MCC via FPGA
Bibliographie
[15] Iman BENCHABANE, Karima BENZAID, Synchronisation des Systèmes et cryptographie
chaotiques, Mémoire de master, Universitie de constantine, 2011
[16] DE2_UserManuall, Altera Corporation, http://www.altera.com
[17] Ettouhami ELYAZIDI, Commande d’un moteur à courant continu par la carte Altera, mémoire
de master, Université Cadi Ayyad, Marrakech, 2014
Commande d’un MCC via FPGA
CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs
Pour plus d’information sur ce projet, permettez moi de vous invitez à
visiter mon channel sur YouTube :
SMAIL DERGHAL
MASTER II ELECTROTECHNIQUE
Commande d’un MCC via FPGA
1
Téléchargement