80
مقراطيــة الشعبيــةيــة الجزائريــة الدي الجمـهورREPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE 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 : Dr. KAIKAA Mohamed yazid Examinateurs : Prof. KHEZZAR Abdelmalek Dr. BABAA Fatima Membre de jury : Prof. KERDOUN Djallel Soutenue le 17/06/2015 MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE UNIVERSITE DES FRERES MENTOURI CONSTANTINE Faculté des Sciences de la Technologie Département : Electrotechnique تعلي وزارة ال ــلعال م ا ــ ي و البح ــعلم ث ال ـ ي جامع ـ ـــــ ـ ة ا خوة منتوري قسنطين ـــــــ ــ ةوم التكنولوجي كلـيــة عل ا قسمروتقنيلكت ا

COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

  • Upload
    vongoc

  • View
    371

  • Download
    35

Embed Size (px)

Citation preview

Page 1: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

الجمـهوريــة الجزائريــة الديمقراطيــة الشعبيــةREPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE

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 : Dr. KAIKAA Mohamed yazid

Examinateurs : Prof. KHEZZAR Abdelmalek

Dr. BABAA Fatima

Membre de jury : Prof. KERDOUN Djallel

Soutenue le 17/06/2015

MINISTERE DE L’ENSEIGNEMENT SUPERIEUR

ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE DES FRERES MENTOURI CONSTANTINE

Faculté des Sciences de la Technologie

Département : Electrotechnique

يـث العلمــي و البحــم العالــوزارة التعلي

ةـــــــــقسنطين خوة منتورياإل ةـــــــجامع

اكلـيــة علوم التكنولوجي

االلكتروتقني قسم

Page 2: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 1

Remerciements

Page 3: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 2

Dédicace

Page 4: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 1

SOMMAIRE

Introduction générale

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

1. Introduction ................................................................................................................................................ 2

2. Les FPGA .................................................................................................................................................. 2

2.1. L’architecture .................................................................................................................................... 3

2.2. Historique .......................................................................................................................................... 4

3. 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

Un langage s'appliquant à plusieurs niveaux de descriptions ................................... 12 3.19.1.

Fonctionnement concurrent ...................................................................................... 12 3.19.2.

Fonctionnement séquentiel ....................................................................................... 13 3.19.3.

3.20. Différences entre un langage de programmation et VHDL ......................................................... 13

4. Modèle System Generator ....................................................................................................................... 14

4.1. Brève description ............................................................................................................................. 14

Page 5: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 2

4.2. Méthode de développement ............................................................................................................. 14

4.3. Simulink .......................................................................................................................................... 14

4.4. Xilinx System Generator ................................................................................................................. 15

5. 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.3.1. Modèle électrique .......................................................................................................... 21

2.3.2. Bilan énergétique et rendement ..................................................................................... 22

2.4. Le moteur à excitation série .......................................................................................... 22

2.4.1. Modèle électrique .......................................................................................................... 22

2.4.2. Bilan des puissances et rendement ................................................................................ 23

2.5. 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

3. LES HACHEURS ................................................................................................................................... 24

3.1.Les interrupteurs électroniques ........................................................................................... 24

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

3.2. 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

Page 6: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 3

3.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

4. Structure de commande ............................................................................................................................ 36

4.1. Génération d'une MLI (PWM) ....................................................................................... 36

4.2. Principe de la commande MLI ....................................................................................... 37

5. Conclusion ................................................................................................................................................ 37

CHAPITRE III : Implémentation et résultats

1. Introduction ................................................................................................................................ 39

2. Cachier des charges .................................................................................................................... 39

3. Parite matérielle ......................................................................................................................... 39

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

4. 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

Page 7: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 4

5. 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

6. Conclusion ................................................................................................................................. 55

CONCLUSION ET PERSPECTIVES

ANNEXES

BIBLIOGRAPHIE

Page 8: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 1

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

Page 9: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 2

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

Page 10: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 3

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

Page 11: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 1

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ème

siè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.

Page 12: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 1

CHAPITRE 1

Prototypage rapide sous FPGA - SYSGEN

Page 13: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 2

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é)

Page 14: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 3

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- 1 : Flot classique de conception FPGA.

Figure I- 2 : Structure d’un circuit FPGA

Page 15: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 4

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.

Page 16: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 5

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 :

Page 17: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 6

-- déclaration des ressources externes.

library NOM_DE_LA_BIBLIOTHEQUE ; use ELEMENT_DE_LA_BIBLIOTHEQUE ;

-- 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 ;

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.

les ressources externes

l’entité

l’architecture

les ressources internes de

l’architecture

Figure I- 3 : La structure typique d'une description VHDL

Page 18: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 7

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.

Page 19: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 8

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 ;

Page 20: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 9

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

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

Figure I- 4 : les différents portes logiques

Page 21: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 10

<= ---- 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;

Page 22: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 11

-- 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.

Page 23: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 12

3.19. Les principales caractéristiques du langage VHDL [5]

Un langage s'appliquant à plusieurs niveaux de descriptions 3.19.1.

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).

Fonctionnement concurrent [5] 3.19.2.

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 :

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).

Figure I- 5 : Schéma d’un exemple pour le fonctionnement concurrent

Page 24: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 13

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.

Fonctionnement séquentiel [5] 3.19.3.

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.

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.

architecture comportement of basc_D is

begin

Process (CLK)

Begin

If ( CLK= ‘1’) then

Q <= D;

End if ;

End process ;

end comportement;

architecture comportement of VERROU is

begin

Q <= S nand NQ;

NQ <= R nand Q;

end comportement;

Page 25: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 14

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 Matlab-

Simulink.

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.

Page 26: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 15

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.

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.

3. Le bloc Gateway In

La frontière entre les blocs Simulink et les blocs Xilinx.

Figure I- 6 : Le bloc System Generator

Figure I- 7 : La bibliothèque de Simulink

Figure I- 8 : Le bloc Gateway In

Page 27: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 16

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.

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

Figure I- 9 : Le bloc Gateway Out

1

3

2

System Generator ( MATLAB –Simulink )

4

Figure I- 10 : Aperçu de Xilinx System Generator

Page 28: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 17

questionner à choisir votre fichier HDL comme ou . Certainsspéciale additionsdoit être

ajouter dans le code avant l'utilisation.

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.

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

Figure I- 11 : Bloc de Black Box

Figure I- 12 : Le boc de Mcode

Page 29: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE I : Prototypage rapide sous FPGA - SYSGEN

Commande d’un MCC via FPGA 18

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.

Page 30: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 19

CHAPITRE 2

Commande Des Moteurs à Courant Continu

Via Les Hacheurs

Page 31: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 20

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]

Page 32: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 21

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 :

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 - 2 : Modèle électrique

d'une MCC

Figure II- 3 : Modèle électrique du moteur

à excitation indépendante

Page 33: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 22

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, , on peut déterminer les pertes collectives qui représentent

les pertes magnétiques ou pertes fer ainsi que les pertes mécaniques soit :

On définit le couple de pertes par

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- 4 : Bilan énergétique du moteur à excitation indépendante

Figure II- 5 : Modèle électrique du moteur à

excitation série

Page 34: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 23

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 qui représentent

les pertes magnétiques ou pertes fer ainsi que les pertes mécaniques soit :

On définit le couple de pertes par

La puissance utile disponible sur l'arbre du moteur est :

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)

Figure II- 6 : Bilan énergétique du moteur à excitation série

Page 35: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 24

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.

Caractéristique de transfert :

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.

𝑖𝐶

𝑉𝐶𝐸 Transistor bloqué

Transistor passant = saturé

0

Figure II- 7 : Transistor bipolaire

Page 36: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 25

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

Page 37: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 26

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

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.

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 semi-

conducteur construit généralement dans un bloc de Silicium. Elle

comporte 2 zones : une zone P, l'anode et une zone N, la cathode.

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).

Figure II- 9 : Thyristor GTO

Figure II- 10 : Transistor bipolaire à grille isolée (IGBT)

𝑖𝐷

𝑉𝐷

Diode passante

Diode bloquée

0

Page 38: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 27

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

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 la durée d'ouverture de

l'interrupteur sur une période. On a évidemment :

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- 11 : Schéma d'un Hacheur abaisseur

Figure II- 12 : Oscillogramme de la tension

aux bornes de la charge

Page 39: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 28

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 ».

Chronogrammes et analyse du fonctionnement [10]

H fermé

H ouver

(II. 13)

Ondulation du courant : Le courant dans la charge varie entre Imin et Imax

(II. 14)

Figure II- 13 : Schéma d’un hacheur série alimentant un MCC

Figure II- 14 : Oscillogramme du courant d’un hacheur série

Page 40: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 29

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.

Analyse du fonctionnement

En première approximation, on suppose que la tension aux bornes de la charge, , est idéalement

lissée par le condensateur C.

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 :

La loi des mailles implique – Donc :

Le courant augmente :

(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- 16 : Schéma d’un Hacheur Boost quand K conduit

Figure II- 15 : Schéma d’un hacheur élévateur (boost)

Figure II- 17 : Evolution de courant de l’inductance L (séquence 1)

Page 41: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 30

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 ( ) ;

La loi des mailles implique , Donc :

Le courant diminue :

( )

Pour l’inductance L, les grandeurs électriques sont telles que :

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.

Figure II- 18 : Schéma d’un Hacheur Boost quand D conduit

Figure II- 19 : Evolution de courant de l’inductance L (séquence 2)

Page 42: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 31

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.

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 :

(II. 16)

Pendant le temps de fermeture, de l’interrupteur K :

(II. 17)

Figure II- 20 : Hacheur Boost dans la séquence de commutation

Page 43: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 32

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.

Page 44: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 33

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.

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

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.

Figure II- 23 : Hacheur réversible en tension

Figure II- 24 : Schéma d'un Hacheur 4 quadrants

Page 45: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 34

Les 04 quadrants

Les 04 quadrants de

fonctionnement de la machine à

courant continu dans le plan

ou

sont donnés sur la figure ci-

contre.

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 Inconvénients

Inversion rapide de la tension et du

courant.

Pas besoin de détection du signe du

courant.

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.

Figure II- 25 : Les 4 quadrants de fonctionnement de la machine à courant continu

Page 46: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 35

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 , on commande la fermeture de K1 et K3 donc :

Si , le courant circule par D2 et D4.

Si , 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

Page 47: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 36

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

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.

Circuit de commande Circuit de puissance

Hacheur

Machine à courant continu

MCC

Page 48: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 37

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.

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).

Figure II- 26 : Un signal MLI (PWM)

Page 49: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 38

CHAPITRE 3

Implémentation et résultats

Page 50: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 39

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.

Capteur de courant

L’alimentation d’inducteur

Le moteur à courant

continu

Encodeur de vitesse L’alimentation d’induit

Figure III- 1 : Banc d’essai

Bobine de lissage

Page 51: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 40

3.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

Altera Cyclone II

Ou DSPAce 1104

Alimentation variable

Hacheur Boost

Alimentation

d’inducteur

Hacheur Boost MCC

Circuit de

commande

induit

inducteur

Encodeur

de vitesse

Inductance

de lissage

Inductance

de lissage

Capteur de courant

Figure III- 2 : Schéma bloc global

Page 52: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 41

b) Les inductances

c) Capteur de vitesse (Encodeur Incrémental)

Figure III- 3 : Alimenation stabilisé pour

alimenter l’optocoupleur et le Driver

Figure III- 4 : Inductance de lissage

Figure III- 5 : Encodeur de vitesse

Page 53: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 42

d) L’oscilloscope

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- 6 : Oscilloscope de type Tektronix TDS 1002C-EDU

Figure III- 7 : Schéma d’un hacheur élevateur (boost)

Page 54: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 43

Figure III- 8 : Hacheur Boost SEMIKRON

Alimentation

d’Hacheur boost

Alimentation 15V dc

Pour l’opto-coupleur

+15V DC

GND

Opto-coupleur L’entré du

signal PWM

Les bornes de

l’inductance

bornes sortie

vers l’induit

(+) OUT

(-) OUT

IGBT

(+) IN

(-) IN

Radiateur

Diode

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)

Page 55: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 44

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.

g) 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

Figure III- 13a : La machine à courant continu Figure III- 11b : les caractéristiques du MCC

Page 56: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 45

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.

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.

Figure III- 16 : Diagramme de bloc de la carte ALTERA DE2

Figure III- 15 : Control panel

Page 57: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 46

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

Page 58: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 47

4. Partie logicielle

4.1. Génération de la PWM sous Matlab/simulink

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; --l’horloge de la carte FPGA reset : in std_logic; --bouton pour remettre le programme à zéro. btn1 : in std_logic; --bouton pour diminuer le rapport cyclique (alpha) btn2 : in std_logic; --bouton pour augmenter le rapport cyclique (alpha) pwm : out std_logic -- **la commande MLI (PWM)** ); end pwm_dc;

Relay

10

Gain3

2*pi

Gain1

rem(u(1),u(2))

Fcn

K Ts

z-1

boolean

Data Type Conversion

Bad Link

DS1104BIT_OUT_C12

2*pi

2*pi

2

In2

1

In1

Figure III- 20 : Le bloc PWM

1000

fréquence d'hachage

1 cte1

RTI Data

In1

In2

PWM

Figure III- 19 : Modèle simulink pour générer PWM

Page 59: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 48

architecture Behavioral of pwm_dc is constant period : integer:=50000; -- 50000*20ns=1ms /la pré-division de l’horloge /fréq.d’hachage constant alpha_max : integer:=45000; -- 45000*20ns = 0.9 ms constant alpha_min : integer:=5000; -- 5000*20ns = 0.1 ms constant alpha_in : integer:=10; --10*20ns = 0.0002 ms -- Le pas d’augmentation ou de diminution du rapport cyclique signal pwm_reg, pwm_next : std_logic; signal alpha, alpha_next : integer := 0; signal counter, counter_next : integer := 0; --variables d’aides pour le calcul ou pour la mémorisation. signal 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;

Page 60: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 49

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

Page 61: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 50

b) Génération PWM avec SYSGEN

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%

0.7*256

signal de référence

(signal continu)

++

signal de la porteuse

(sawtooth)

comparaison

a

b

a b

Relational

PWM

Out

Gateway Out2

Out

Gateway Out

In

Gateway InSy stem

Generator

Figure III- 22 : Génération PWM avec System generator

Figure III- 23 : Illustration Comment programmer le PWM.

Page 62: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 51

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)

0 0.5 1 1.5 2 2.5 3 3.5 4

x 104

-0.5

0

0.5

1

1.5

2

2.5

3

Figure III- 26 : L'allure sur control desk du courant d’induit avec (alpha = 0.7)

0 0.5 1 1.5 2 2.5 3 3.5 4

x 104

-0.5

0

0.5

1

Figure III- 27 : L'allure sur Control Desk du courant d’induit avec (alpha = 0.3)

Page 63: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 52

b) L’allure de la vitesse avec les rapports cycliques =0.3 et =0.7

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)

Tableau III- 1 : les résultats obtenu avec VHDL_FPGA

E (Tension d’alimentation) (V) 60V

Alpha 0.3 0.7

Uch_théorique (V) 85.7 200.0

Uch_mésuré (V) 104 205

0 0.5 1 1.5 2 2.5 3 3.5 4

x 104

800

1000

1200

1400

1600

1800

2000

Figure III- 28 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7)

La Vitesse environ 1920 tr/mn

Figure III- 29 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3)

La Vitesse environ 980 tr/mn

0 0.5 1 1.5 2 2.5 3 3.5 4

x 104

800

1000

1200

1400

1600

1800

2000

Page 64: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 53

Tension d’alimentation

E = E% × Esource

E = 26% × 230V

E = 60V

Uch quand (Alpha = 0.3) Uch quand (Alpha = 0.7)

b) L’allure des courants d’induit et inducteur avec les rapports cycliques =0.3 et =0.7

Figure III- 30a : Signal MLI (PWM)

avec (alpha = 0.3)

Figure III- 30b : Signal MLI (PWM) avec

(alpha = 0.7)

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 104

-0.5

0

0.5

1

1.5

2

2.5

3

Figure III- 31 : L'allure du courant d’induit avec (alpha = 0.3)

Page 65: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 54

c) L’allure de la vitesse avec les rapports cycliques =0.3 et =0.7

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 104

-1.5

-1

-0.5

0

0.5

1

1.5

2

2.5

3

3.5

4

Figure III- 32 : L'allure du courant d’induit avec (alpha = 0.7)

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 104

800

1000

1200

1400

1600

1800

2000

Figure III- 33 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.3)

La Vitesse environ 1358 tr/mn

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

x 104

1000

1500

2000

2500

3000

Figure III- 34 : L'allure de vitesse du MCC (tour/min) _ (alpha = 0.7)

La Vitesse environ 2800 tr/mn

Page 66: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE III : Implémentation et résultats

Commande d’un MCC via FPGA 55

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.

Page 67: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Conclusion et perspectives

Commande d’un MCC via FPGA 58

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.

Page 68: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

ANNEXES

Page 69: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

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

5. Next Next Finish

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’

Figure 1 : New projet Figure 2 : la famille et les paramètre de la carte

Page 70: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

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’.

3. Compilation le fichier VHDL

Processing Start Compilation (CTRL + L) ou cliquer directement sur l’icon dans

la barre d’outils.

Ignorer les avertissements (warnings) qui apparaît.

Figure 3 : Compilation

Figure 4 : Résultat de compilation

Figure 1 : VHDL File Figure 2 : la fenêtre code VHDL

Page 71: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

Etape 3 : Assignation des pins

1. Assignments ‘Pin Planner’ ou bien ‘Assignment Editor’

2. Enregistrer les assignations des pins : File save

Figure 5 : rapport de compilation

Figure 6 : Assignation des pins Figure 7 : Tous les pins aprés l'assignation

Page 72: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

Etape 3 : Comment programmer la carte Altera DE2

1. Connecter la carte Altera DE2 Cyclone II comme les figures suivants monter :

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 8 : Comment connecter la carte Altera ?

Figure 9 : fenêtre de programmation

Page 73: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

Annexe B

Réalisation d’un Hacheur Boost

Notre circuit de puissance contient :

o L’interrupteur principale « IGBT » de type AUIRG4PH50S

Figure 10 : Schéma de l'hacheur boost

Figure 12 : IGBT de type AUIRG4PH50S

Figure 11 : Hacheur Boost réalisé

Page 74: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

o Une inductance de lissage (L) [16]

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.

Figure 13 : Inductance de lissage

Page 75: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

Notre circuit de commande contient :

o Un Opto-coupleur de type HCPL-3120

o Une Résistance de 36 Ohm, placé avant la grille de l’IGBT

GND

Figure 14 : Opto-coupleur HCPL-3120

+ 15V

Pin J22

de carte Altera DE2

GND

Vers IGBT

Page 76: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Annexes

Commande d’un MCC via FPGA

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.

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 15 : Encodeur de vitesse

Figure 16 : Composants d'un encodeur optique

Page 77: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Bibliographie

Commande d’un MCC via FPGA

BIBLIOGRAPHIE

Page 78: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Bibliographie

Commande d’un MCC via FPGA

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

Page 79: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

Bibliographie

Commande d’un MCC via FPGA

[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

Page 80: COMMANDE D'UN MOTEUR A COURANT CONTINU VIA FPGA

CHAPITRE II : Commande Des Moteurs à Courant Continue Via Les Hacheurs

Commande d’un MCC via FPGA 1

Pour plus d’information sur ce projet, permettez moi de vous invitez à

visiter mon channel sur YouTube :

SMAIL DERGHAL

MASTER II ELECTROTECHNIQUE