Vous êtes sur la page 1sur 21

Projet : Réalisation d’une commande vitesse moteur

IUT de Vélizy
GEII – 1ère année

Mickael ARCANGELI
Sonnya DELLAROSA
PROJET ER2 GEII-1

TABLE DU CONTENU

I. Introduction ..................................................................................................................................... 3
1. Le but ................................................................................................................................................ 3
2. Principe de fonctionnement .............................................................................................................. 3
3. Composants utilises .......................................................................................................................... 4
II. La realisation du projet .................................................................................................................. 5
1. Commande du moteur ....................................................................................................................... 5
1.1. Réception et décodage du signal de télécommande .................................................................. 5
1.2. Génération d’un signal mli de rapport cyclique variable .......................................................... 6
1.4. Affichage de l’ordre de la télécommande ou de la vitesse ........................................................ 6
1.5. Programmation générale du FPGA ........................................................................................... 6
1.6. Mise en œuvre du moteur.......................................................................................................... 7
2. Mesure de la vitesse .......................................................................................................................... 9
2.1. Capteur de vitesse ..................................................................................................................... 9
2.2. Redresseur ............................................................................................................................... 10
2.3. Comparateur ............................................................................................................................ 11
2.4. Calcul de vitesse ..................................................................................................................... 12
III. Conclusions .................................................................................................................................... 13
IV. Annexes .......................................................................................................................................... 14
Annexe 1 : Décodage du signal du télécommande (PROG 7) ................................................................ 14
Annexe 2 : Génération d’un signal MLI de rapport cyclique variable (PROG 6) .................................. 16
Annexe 3 : Fonction choix (PROG 8) ..................................................................................................... 18
Annexe 4 : Décodeur BCD – 7 segments (PROG 2) .............................................................................. 19
Annexe 5 : Fonction affichage (PROG 9) ............................................................................................... 20

Page 2 sur 21
PROJET ER2 GEII-1

I. INTRODUCTION

Dans le cadre de nos études du programme DUT GEII, ce projet s’agit comme une façon de nous
aider à combiner et appliquer les théoriques que nous avons étudié dans les autres cours du programme afin
de construire un appareil utile. Pour le projet du deuxième semestre, nous avons construit un commande
vitesse moteur dans l’espace de 9 semaines du cours d’études et réalisation d’ensemble pluri technologies
(ER2), assisté par les enseignements.

1. LE BUT

La carte FPGA génère une signal MLI de rapport cyclique commandé par une télécommande, qui
alimente le moteur, pendant que les afficheurs sept segments affichent le rapport cyclique et la vitesse du
moteur.

2. PRINCIPE DE FONCTIONNEMENT

Fig. 1. Schéma synoptique général

La télécommande envoie un signal d’infrarouge d'un nombre appui par l'utilisateur qui est reçu par
le récepteur à être converti en tension. Après la conversion, ce signal est renvoyé à la carte FPGA afin de
faire le décodage. Pendant que le nombre est affiché sur les afficheurs sept segments, on utilise un autre
programme de générer un signal MLI avec un rapport cyclique de ce nombre fois dix pourcent.

Car la carte FPGA fonctionne en 0-3,3 V alors que l’autre partie du montage est alimentée en 0-15
V, on isole électriquement les deux parties par l’intermédiaire d’un opto-coupleur. Le signal MLI en sortie
d’opto-coupleur est relié à un hacheur DC/DC pour alimenter le moteur à courant continu.

Page 3 sur 21
PROJET ER2 GEII-1

Le moteur, il a le pouvoir de générer un signal sinusoïdal proportionnel à sa fréquence, qui nous


permet le calcul de la vitesse de moteur en tour par minute. Premièrement, on utilise un hacheur de redresser
le signal sinusoïdal en double alternance monophasé. Ce signal redressé est relié à un montage comparateur
et en utilisant un autre opto-coupleur la sortie du comparateur est renvoyé à la carte FPGA pour le calcul
de la vitesse.

3. COMPOSANTS UTILISES

Désignation Référence

Carte FPGA Xilinx Spartan-3E

Infrarouge récepteur GP1UX511QS

Opto-coupleur 4N35

Transistor MOS IRFZ44N


Hacheur
Diode Schottky MBR1645

Redresseur W04M

Comparateur LM324

Page 4 sur 21
PROJET ER2 GEII-1

II. LA REALISATION DU PROJET

1. COMMANDE DU MOTEUR

Fig. 2. Le schéma complet de la commande

1.1. Réception et décodage du signal de télécommande

Quand un nombre est appui sur une télécommande, il


envoie un signal infrarouge en utilisant le protocole RC-5. Ce
protocole se compose d’une suite de 14 bits, avec chaque bit
ayant une durée constante de 1778 µs. Les bits sont biphasés,
c’est-à-dire qu’il y a toujours une transition au milieu du bit, soit
un front montant (bit 1) ou descendant (bit 0). Alors, afin de
saisir si un bit est ‘1’ ou ‘0’, il faut lire la deuxième moitié, ou
au troisième quart de point pour être précis. Avec un simple
calcul, on sait que on doit faire la lecture approximativement
toutes les 1333 µs. Il est aussi important de noter que les bits qui
contiennent le nombre appui en binaire sont les cinq bits de Fig. 3. Le signal envoyé du récepteur
poids faibles. En sachant que la maximum nombre est neuf, qui à la carte FPGA
a quatre chiffres en binaire, on ne lit que les bits 0 à 3.
D’après du datasheet du récepteur, on a mis un condensateur entre le Vcc et le GND, et une
résistance de 47 Ω au Vcc. La sortie du récepteur est reliée à la carte FPGA et ensuite un programme
(Annexe 1) est mis à convertir le signal correctement. Pour tester, on a appui le nombre ‘0’ sur la
télécommande et la sortie du récepteur est montré dans la figure 3.

Page 5 sur 21
PROJET ER2 GEII-1

1.2. Génération d’un signal MLI de rapport cyclique variable

Afin de générer un signal MLI, dans le programme principal un compteur est utilisé à compter le
période de 1 ms, car on désire une fréquence de 1 kHz. En sortie, on attribue le niveau haut jusqu’à un
certain nombre maximum est atteint par le compteur. Ce nombre maximum correspond au nombre appui
sur la télécommande. Par exemple, si ‘6’ est appui, le nombre maximum est le sixième de la valeur
maximum du compteur. Ce programme se trouve dans l’Annexe 2.
Néanmoins, le programme du décodage du signal de télécommande et ce programme de la
génération d’un signal MLI ne sont pas dans le même fichier. Donc, il faut créer un fichier schématique
pour que les deux programmes fonctionnent ensemble.

1.4. Affichage de l’ordre de la télécommande ou de la vitesse

On souhaite afficher l’ordre de la télécommande et la vitesse sur les quatre afficheurs sept segments
de la carte FPGA. Mais, car il y a seulement quatre afficheurs et chacun d’eux ont besoin d’utiliser tous les
quatre afficheurs, un interrupteur est utilisé qui nous permets d’alterner entre les deux. Ce programme se
trouve dans l’Annexe 3.
La sortie du programme du décodage de l’ordre de la télécommande est en binaire, donc, avant
l’affichage, on doit convertir ce code au code sept segments. Le programme qui exerce ce fonction se trouve
dans l’Annexe 4.
L’affichage de la carte est multiplexé. Il faut envoyer simultanément sur un afficheur donné, le
chiffre à afficher et l’ordre d’afficher. Les afficheurs sont allumés successivement de manière assez rapide
pour avoir l’impression que tous les afficheurs sont allumés en même temps. On a pris une fréquence de
l’ordre de 1kHz. Ce programme se trouve dans l’Annexe 5.

1.5. Programmation générale du FPGA

A la fin, la carte FPGA fonctionne à décoder l’ordre de la télécommande, générer un signal MLI,
et afficher cet ordre et la vitesse sur les afficheurs sept segments. Il n’y a qu’un seul programme schématique
qui exécute tous ces actions.

Fig. 4. Le programme schématique de tous les programmes

Page 6 sur 21
PROJET ER2 GEII-1

1.6. Mise en œuvre du moteur

Le signal issu de la carte FPGA doit maintenant être envoyé vers le hacheur qui va commander le
moteur. Cette partie du montage est alimentée en 0-15 V alors que le FPGA fonctionne en 0-3,3 V. Pour
être sûrs de ne pas détériorer la carte FPGA, nous allons isoler électriquement la partie FPGA et la partie
commande par l’intermédiaire d’un opto-coupleur.
Un opto-coupleur, est un composant électronique capable de transmettre un signal d'un circuit
électrique à un autre, sans qu'il y ait de contact galvanique entre eux. Un opto-coupleur repose sur une LED
et un phototransistor ou une photodiode. Lorsqu'on fait passer un courant dans la LED, elle brille (elle émet
de l'infrarouge) dans un boitier bien hermétique à la lumière. La lumière émise par la LED sont captés par
le phototransistor qui devient alors passant. On peut donc transmettre un courant électrique tout en isolant
électriquement. Dans son principe, l'opto-coupleur fait les conversions successives : courant électrique -
lumière infrarouge - courant électrique.

Fig. 5. Schéma proposé de câblage pour mettre en œuvre l’opto-coupleur

D’après de son datasheet, on sait que le courant passant dans chaque côté est 10 mA, la diode a une
tension de 0,9 V à ses bornes, et la tension entre le collecteur et l’émetteur, V CE, est 0,3 V. Alors, par un
calcul simple on a trouvé la valeur de la résistance en série avec la diode et la résistance à l’émetteur du
transistor.
3,3 𝑉 − 0,9 𝑉 2,4
𝑅1 = = −2 = 240 Ω
10 𝑚𝐴 10
15 𝑉 − 0,3 𝑉 14,7
𝑅2 = = −2 = 1,47 𝑘Ω
10 𝑚𝐴 10

Les résistances prises sont 220 Ω et 1,5 kΩ.

Page 7 sur 21
PROJET ER2 GEII-1

Le moteur à courant continu est alimenté par un variateur que l'on appelle un
hacheur série (convertisseur DC/DC). Cet hacheur se comporte d’un interrupteur, qui dans ce cas est réalisé
à l'aide d'un transistor MOSFET, une diode Schottky, et une tension continu d’entrée de 15 V.
À l'aide d'une sonde différentielle de tension, on a observé et mesuré la tension moyenne aux bornes
de la charge en fonction du rapport cyclique. Premièrement, la charge constitue d’une résistance de
puissance de 100 Ω et ensuite le moteur. On a tracé la courbe résultante à l'aide du tableur de LibreOffice.

Rapport Valeur Tension moyenne (V)


cyclique théorique
(%) (V) Résistance Moteur
0 0 0 0
10 1,5 1,35 1,82
20 3,0 2,88 4,74
30 4,5 4,42 7,18
40 6,0 5,96 9,02
50 7,5 7,46 10,42
60 9,0 9,00 11,48
70 10,5 10,54 12,34
80 12,0 12,08 13,14
90 13,5 13,64 13,82

Tension moyenne aux bornes de la charge du hacheur


16

14

12
Tension moyenne (V)

10

8 Résistance
Moteur
6
Théorique
4

0
0 20 40 60 80 100
Rapport cyclique (%)

Fig. 6. Les courbes résultantes de la tension moyenne en fonction du rapport cyclique

Page 8 sur 21
PROJET ER2 GEII-1

2. MESURE DE LA VITESSE

Fig. 7. Le schéma complet de mesure de la vitesse

2.1. Capteur de vitesse

Le moteur à courant continu dispose d'un dispositif permettant d'évaluer sa fréquence de rotation.
Il s'agit en fait d'une génératrice qui fournit une tension alternative sinusoïdale dont la fréquence et la valeur
efficace dépendent de la fréquence de rotation.
On a mesuré la valeur efficace, la valeur crête et la fréquence en sortie du moteur et on a tracé les
courbes résultantes au-dessous.

Rapport Valeur Valeur Fréquence


cyclique (%) efficace (V) crête (V) (Hz)

0 0 0 0
10 4,42 7,0 48
20 6,38 10,0 123
30 7,99 12,2 187
40 9,07 13,8 237
50 9,68 14,9 274
60 10,3 15,8 302
70 10,8 16,4 323
80 11,1 17,0 342
90 12,1 18,4 358

Page 9 sur 21
PROJET ER2 GEII-1

Capteur de vitesse
20 500

18 450

16 400

14 350

Fréquence (Hz)
Tension (mV)

12 300

10 250 Valeur efficace

8 200 Valeur crête


Fréquence
6 150

4 100

2 50

0 0
0 20 40 60 80 100
Rapport cyclique (%)

Fig. 8. Les courbes résultantes de la tension efficace, crête, et la fréquence en fonction du rapport cyclique

2.2. Redresseur

Un redresseur est un convertisseur permettant de


redresser une source alternative à un courant continu. Il est
utilisé dans ce montage afin d’avoir le pouvoir de mesurer
la vitesse à la fin avec la carte FPGA. Le redresseur là est
un redresseur double alternance monophasé, qui redresse
les alternances négatives et conservant les alternances
positives du courant à l'entrée. La fréquence en sortie du
redresseur est alors le double de la fréquence d'entrée. Le
montage du redresseur est visible dans le schéma complet
(cf. Fig. 7.), marqué W04M, mais à l’aide d’un sonde
tension différentielle. La figure à côté nous montre notre Fig. 9. L’entrée (le jaune) et la sortie (le
résultat expérimental. bleu) du redresseur

Page 10 sur 21
PROJET ER2 GEII-1

2.3. Comparateur

L'objectif est de déterminer la fréquence de rotation à partir de la mesure de la fréquence du signal


issu du capteur de vitesse. La mesure étant réalisée par le FPGA, il faut mettre en forme le signal pour qu'il
puisse l'exploiter.
Dans un comparateur, une tension de référence est mise en place sur la borne
inverseuse et la borne non inverseuse mesure la tension à comparer. Si la tension à la
borne positive est inférieure à la tension de référence, la tension de sortie sera zéro.
Si elle est supérieure, la tension de sortie sera Vcc. Dans notre montage, la tension de
référence est obtenue par un pont diviseur et de l’alimentation +15V. On désire
d’avoir une tension de référence de 900 mV.
15 0
+
𝑉𝑆 = 𝑅1 𝑅2 𝑒𝑡 𝑉𝑆 = 0,9 𝑉
1 1
+
𝑅1 𝑅2
15 × 𝑅2
0,9 = Fig. 10. Pont
𝑅1 + 𝑅2
diviseur de
𝑅1 tension
= 15,67
𝑅2

Les résistances prises sont R1 = 1,5 kΩ et R2 = 100 Ω.

Le FPGA doit recevoir des signaux logiques au format [0V; 3,3V] or le comparateur les fournit
sous forme [0V; 15V]. À l'aide d'un opto-coupleur, avec les résistances dont valeurs on a calculé dans la
même façon qu’avant, on a fait la conversion et on a obtenu la suivante.

Fig. 11. La tension d’entrée (le jaune) et de sortie (le bleu) de l’opto-coupleur

Page 11 sur 21
PROJET ER2 GEII-1

2.4. Calcul de vitesse

Le calcul de vitesse est fait dans la carte FPGA avec un programme VHDL. La vitesse du moteur
exprimée en tour par minute correspond au nombre du front montant d’un signal durant une fenêtre de
312,5 ms multiplié par 8. Ce programme VHDL est ensuite combiné au programme schématique d’avant
afin d’afficher la vitesse sur les afficheurs sept segments de la carte FPGA. Malheureusement, on n’avait
pas du temps de l’écrire.

Page 12 sur 21
PROJET ER2 GEII-1

III. CONCLUSIONS

On a réussi de faire la plupart du projet, la carte FPGA envoie un signal MLI à commander le
moteur est le moteur renvoie un signal correspondant à sa vitesse qui est redressé, alors que la carte FPGA
est le reste du montage sont isolés électriquement avec deux opto-coupleurs. La partie inachevée est
seulement la partie du calcul de la vitesse. La photo ci-dessous est notre réalisation du projet.

Fig. 12. Notre montage

Page 13 sur 21
PROJET ER2 GEII-1

IV. ANNEXES

Annexe 1 : Décodage du signal du télécommande (PROG 7)


----------------------------------------------------------------------------
-- Create Date: 15:07:34 03/11/2016
-- Module Name: Decodage_du_Signal_RC5 - Behavioral
----------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Decodage_du_Signal_RC5 is
Port ( clk, E : in STD_LOGIC;
VAL : out STD_LOGIC_VECTOR (3 downto 0));
end Decodage_du_Signal_RC5;

architecture Behavioral of Decodage_du_Signal_RC5 is

type etat is (e0, e1);


signal ect: etat := e0;

-- duree total: 1778uS * 14 bits = 24892e-6 s


-- 1 s -> 50 MHz
-- 24892e-6 s -> 1244600 Hz

signal count: integer range 1 to 1244600 := 1;


signal stock: STD_LOGIC_VECTOR (3 downto 0) := "0000";

begin
process (clk)
begin
if (clk'event and clk='1') then
case ect is
when e0 => if E='0' then
ect <= e1;
end if;

when e1 => if count = 1244600 then


count <= 1;
ect <= e0;
VAL <= stock;
else count <= count+1;
end if;

Page 14 sur 21
PROJET ER2 GEII-1

-- duree d'un bit : 1778uS = 1244600/14 = 88900 counts


-- on lit à 3/4 du bit = 66675 counts

-- bit3 commence à 889000, lire à 889000+66675 = 866775


if count = 866775 then
stock(3) <= not E;

-- 955675 + duree d'un bit = 955675 + 88900 = 955675


elsif count = 955675 then
(2) <= not E;

-- 1044575 + 88900 = 1044575


elsif count = 1044575 then
stock(1) <= not E;

-- 1133475 + 88900 = 1133475


elsif count = 1133475 then
stock(0) <= not E;

end if;
end case;
end if;
end process;
end Behavioral;

Page 15 sur 21
PROJET ER2 GEII-1

Annexe 2 : Génération d’un signal MLI de rapport cyclique variable (PROG 6)


-----------------------------------------------------------------------------
-- Create Date: 14:44:57 02/25/2016
-- Module Name: MLI_rapport - Behavioral
-----------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity MLI_rapport is
Port ( clk : in STD_LOGIC;
S: out STD_LOGIC;
rapport: in STD_LOGIC_VECTOR (3 downto 0));
end MLI_rapport;

architecture Behavioral of MLI_rapport is

signal count: integer range 0 to 49999;


signal cmax: integer range 0 to 49999 := 49999;

begin
process (clk)
begin
if (clk'event and clk='1') then
if (count=49999) then
count<=0;
else count<=count+1;
end if;
end if;
end process;

-- La durée du signal en état haut est définie avec l’entrée ‘rapport’

with rapport select


cmax <= 0 when "0000",
4999 when "0001",
9999 when "0010",
14999 when "0011",
19999 when "0100",
24999 when "0101",
29999 when "0110",
34999 when "0111",
39999 when "1000",
44999 when "1001",

Page 16 sur 21
PROJET ER2 GEII-1

49999 when others;

S <= '1' when count<=cmax else


'0' when count >cmax ;

end Behavioral;

Page 17 sur 21
PROJET ER2 GEII-1

Annexe 3 : Fonction choix (PROG 8)


-----------------------------------------------------------------------------
-- Create Date: 14:53:19 03/17/2016
-- Module Name: function_choix - Behavioral
-----------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity fonction_choix is
Port ( SEL : in STD_LOGIC;
rapport : in STD_LOGIC_VECTOR (3 downto 0);
VitM, VitC, VitD, VitU : in STD_LOGIC_VECTOR (3 downto 0);
Aff1, Aff2, Aff3, Aff4 : out STD_LOGIC_VECTOR (3 downto 0));
end fonction_choix;

architecture Behavioral of fonction_choix is

begin

with SEL select


Aff1 <= VitM when '0',
"1010" when others;

with SEL select


Aff2 <= VitC when '0',
"1011" when others;

with SEL select


Aff3 <= VitD when '0',
"1100" when others;

with SEL select


Aff4 <= VitU when '0',
rapport when others;

end Behavioral;

Page 18 sur 21
PROJET ER2 GEII-1

Annexe 4 : Décodeur BCD – 7 segments (PROG 2)


-----------------------------------------------------------------------------
-- Create Date: 14:12:42 02/18/2016
-- Module Name: Decodeur - Behavioral
-----------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Decodeur is
Port ( BCD : in STD_LOGIC_VECTOR (3 downto 0);
SEG : out STD_LOGIC_VECTOR (6 downto 0));
end Decodeur;

architecture Behavioral of Decodeur is

begin
with BCD select
SEG <= "0000001" when "0000",
"1001111" when "0001",
"0010010" when "0010",
"0000110" when "0011",
"1001100" when "0100",
"0100100" when "0101",
"0100000" when "0110",
"0001111" when "0111",
"0000000" when "1000",
"0000100" when "1001",
"1110000" when "1010",
"1110010" when "1011",
"1000010" when "1100",
"1111110" when others;

end Behavioral;

Page 19 sur 21
PROJET ER2 GEII-1

Annexe 5 : Fonction affichage (PROG 9)


-----------------------------------------------------------------------------
-- Create Date: 17:07:49 03/24/2016
-- Module Name: Affichage - Behavioral
-----------------------------------------------------------------------------

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity Affichage is
Port ( val0, val1, val2, val3 : in STD_LOGIC_VECTOR (6 downto 0);
CLK : in STD_LOGIC;
code : out STD_LOGIC_VECTOR (6 downto 0);
AFF : out STD_LOGIC_VECTOR (3 downto 0));
end Affichage;

architecture Behavioral of affichage is

type etat is (e0, e1, e2, e3);


signal ect: etat := e0;
signal count: integer range 0 to 1000 := 1;
constant limite: integer range 0 to 1000 := 1000;

begin
process (clk)
begin
if (clk'event and clk='1') then
case ect is
when e0 => if count = limite then
count <= 1;
ect <= e1;
else count <= count+1;
end if;

when e1 => if count = limite then


count <= 1;
ect <= e2;
else count <= count+1;
end if;

when e2 => if count = limite then


count <= 1;
ect <= e3;
else count <= count+1;
end if;

Page 20 sur 21
PROJET ER2 GEII-1

when e3 => if count = limite then


count <= 1;
ect <= e0;
else count <= count+1;
end if;
end case;
end if;
end process;

with ect select


code <= val0 when e0,
val1 when e1,
val2 when e2,
val3 when e3;

with ect select


AFF <= "1110" when e0,
"1101" when e1,
"1011" when e2,
"0111" when e3;

end Behavioral;

Page 21 sur 21