Vous êtes sur la page 1sur 12

ANNEE UNIVERSITAIRE

2018-2019

ECOLE NATIONALE SUPERIEURE D’INGENIEURS (ENSI)

PROJET DE PROGRAMMATION ORIENTE OBJET

DIMENSIONNEMENT DES PARAMETRES DE FABRICATION


D’UN MOTEUR À COURANT CONTINU ET SIMULATION DE
LA ROTATION DU ROTOR

UE : PROGRAMMATION ORIENTE OBJET(POO)


INF 2117
Parcours : MP
Département : GE/GM
SEMESTRE 1

Présenté Par : Dirigé Par :

PALOUKI M.Raoul (GE) Mr SALAMI Akim (MC)

ALIFA-SABI Ibourahim (GM)


Table des matières
I. Introduction .......................................................................................................................................... 3
II. Problématique....................................................................................................................................... 3
III. Description du projet ........................................................................................................................ 3
IV. Algorithme........................................................................................................................................ 4
V. Implémentation du programme ............................................................................................................ 5
1. Classe moteurCc ................................................................................................................................... 5
2. Le module marche et arrêt du moteur................................................................................................... 6
3. Fonction fiche Technique ..................................................................................................................... 7
4. Fonction acquisition des paramètres : .................................................................................................. 7
5. Programme principal ............................................................................................................................ 8
VI. Simulation et validation.................................................................................................................... 9
VII. Conclusion ...................................................................................................................................... 12

Tables des figures

Figure 1 interface d'acceuil........................................................................................................................... 9


Figure 2 illustration d'un changement de paramètre................................................................................... 10
Figure 3 début de la rotation après un clic sur simuler ............................................................................... 11
Figure 4 rotation en cours du rotor ............................................................................................................. 11
Figure 5 illustration de la fiche technique .................................................................................................. 12

2
I. Introduction

Devenu aujourd‘hui un outil incontournable de tout ingénieur la programmation est


de nos jours en train de révolutionner le monde dans tous ses aspects. Et il revient à
l’ingénieur d’être en mesure de manipuler cet outil et ceux de façon commode afin
de ne pas se laisser dépasser par l’évolution technologique. Ainsi dit, c’est dans le
but de nous familiariser avec cet outil que nous avons eu à faire le cours de
programmation orienté objet qui nous a permis de nous initier aux bases de la
programmation modulaire dit orienté objet.
Nous présentons dans la suite un mini projet dont l’objectif est de faire ressortir le
caractère modulaire de la programmation.

II. Problématique

Le coût des matières premières et leur rareté augmentant au cours du temps,


l’optimisation de leur utilisation devient un souci majeur. On ne peut plus se
permettre de passer à des tests directement sur les produits conçus sans prime
abord avoir assez de précision sur le comportement qu’il adopterait au risque
rendre non réutilisable la matière première utilisé en cas de réajustement du
produit. Ainsi avoir des précisions sur le comportement qu’adopterais un produit
qu’on teste peut se faire en créant virtuellement à l’aide d’un outil numérique un
environnement qui respect au mieux les règles d’utilisation du produit. Ainsi afin
de mieux conditionner avant d’ordonnancer la fabrication en industrie d’un moteur
il devient nécessaire de faire un dimensionnement de simuler ce moteur avec
comme paramètre d’entrée les données qu’on doit avoir pour qu’en sortie le
moteur nous fournissent le caractéristiques que nous voulons avoir

III. Description du projet

Ce projet intitulé DIMENSIONNEMENT DES PARAMETRES DE FABRICATION D’UN


MOTEUR À COURANT CONTINU ET SIMULATION DE LA ROTATION DU ROTOR vise à
permettre à l’utilisateur de régler les paramètres d’entrés du moteur afin d’avoir en
sortie les caractéristiques techniques escompté pour un moteur que l’on prévoit
construire.
Le projet se présentera comme une interface avec une partie commande des
interactions et une partie visualisation des interactions

3
 Dans la partie commande des interactions on pourra régler les paramètres
d’entrées du moteur : tel que le flux, le nombre de tour par seconde et la
force électromotrice ;
 Dans la partie visualisation des interactions on pourra observer une vue de
face de la section du rotor qui tournera à une vitesse lié au réglage des
paramètres d’entrées
Une fois le nombre de tour par seconde ainsi que la puissance en sortie du moteur
étant ceux désiré on pourra cliquez sur un bouton qui affichera une fiche des
caractéristiques techniques du moteur ; fiche qui sera utile pour la fabrication du
moteur.

IV. Algorithme

Dans le cas d’un programme qui utilise une interface graphique, l’organisation
interne est différente de celle de l’algorithme ordinaire. On dit d’un tel programme
qu’il est piloté par les événements. Après sa phase d’initialisation, un programme
de ce type se met en quelque sorte « en attente », et passe la main à un autre
logiciel, lequel est plus ou moins intimement intégré au système d’exploitation de
l’ordinateur et « tourne » en permanence.

Initialisation du
paramètre (flux, nombre
de tour et f-e-m)

 Réglage de
Ordinateur Réceptionnaires paramètre
d’évènements  Marche
 Arrêt
 Fiche
technique

Terminaison

4
Commentaire : une fois la phase d’initialisation terminé le réceptionnaire
d’évènement se met en marche et attend de détecter une action externe de
ordinateur (dans notre cas un clic sur un bouton) pour mettre en marche des
instructions préprogrammées à savoir :
 Réglage des paramètres
 Marche rotor
 Arrêt rotor
 Fiche Technique

V. Implémentation du programme

Bibliothèques utilisées :
from tkinter import *
import math
import time

L’implémentation de notre programme c’est fait en cinq parties :

1. Classe moteurCc

class MoteurCc(object):
def __init__(self):
self.flux = 1.2
self.fem = 50
self.nbre_tour_par_seconde = 1200

def parametrage(self,flux,fem,n):
self.flux=flux
self.fem=fem
self.nbre_tour_par_seconde=n

def vitesse_angulaire(self,n,flux):
Vang=(2*n*(math.pi))
return Vang

def nombre_de_conducteur(self,flux,fem,n):

global N
N=((2*int(math.pi))*int((fem))/n)

return N
5
def fiche_technique(self,fcem,N,n):
fenetre = Tk()

fenetre.title('FICHE TECHNIQUE DU MOTEUR')


fenetre['bg']='grey'
titre = Label(fenetre, text="FICHE TECHNIQUE DU MOTEUR:", relief=RAISED, font=('arial',
15, 'bold'))
titre.grid(row=0,columnspan=5)

for (i,j) in ((1,"Type de Machine"),(2,"Nombres de Conducteur: " ),(3,"Nombres de tours par


seconde: "),(4,"Force contre électromotrice: "),(5,"Puissance de sortie: ")) :
Label(fenetre, text=' %s ' % (j), borderwidth=1).grid(row=i, columnspan=2)
fenetre.mainloop()

2. Le module marche et arrêt du moteur

def ajuster_ligne(line, x0, y0, angle, longueur):

global longueur

x = longueur * math.cos(angle)
y = longueur * math.sin(angle)
can1.coords(line, x0, y0, x0 + x, y0 + y)

def ajuster_angle(delta_angle):

global flag,angle,angle1,angle2, longueur


angle += delta_angle
angle1 += delta_angle
angle2 += delta_angle
display_line_angle(line, x0, y0, angle, longueur)
display_line_angle(line1, x0, y0, angle1, longueur)
display_line_angle(line2, x0, y0, angle2, longueur)
if flag <= 0:
return
if flag >0 :
fen1.after(50, update_angle,moteur.nbre_tour_par_seconde)
def rotation():
global flag
flag=1
update_angle(moteur.nbre_tour_par_seconde)

def arret():
global flag

6
flag=0
return

3. Fonction fiche Technique

def fiche_technique():

fenetre = Toplevel(fen1)
global N
fenetre.title('FICHE TECHNIQUE DU MOTEUR')
fenetre['bg']='white'
titre = Label(fenetre, text="FICHE TECHNIQUE DU MOTEUR:", relief=RAISED, font=('arial', 15,
'bold'))
titre.grid(row=0,columnspan=5)

for (i,j) in ((1,"Type de Moteur:"),(2,"Nombres de conducteurs:"),(3,"vitesse du


rotor(tr/min):"),(4,"Fréquence nominale: "),(5,"flux de l'inducteur:"),(6,"Tension d''alimentation:
")) :
Label(fenetre, text=' %s ' % (j), borderwidth=1).grid(row=i, column=0,sticky =W)
for (i,j) in ((1,"Moteur à Courant continu"),(2,3),(3,moteur.nbre_tour_par_seconde),(4,"50Hz
"),(5,moteur.flux),(6,moteur.fem)) :
Label(fenetre, text=' %s ' % (j), borderwidth=1).grid(row=i, column=3,sticky =W)

4. Fonction acquisition des paramètres :

def aquisition():
def recupere_donnees():

global v1,v2,v3
v1=entr1.get()
v2=entr2.get()
v3=entr3.get()
txt4 = Label(fen1, text=v1 )
txt5 = Label(fen1, text=v2)
txt6 = Label(fen1, text=v3)
txt4.grid(row =0, column= 1, sticky =E)
txt5.grid(row =1, column= 1, sticky =E)
txt6.grid(row =2, column= 1, sticky =E)
print(v1)
fen2 = Toplevel(fen1)
fen2.title('réglage de parametre')
txt1 = Label(fen2, text ='flux de l''inducteeur(Wb) :')
txt2 = Label(fen2, text ='Vitesse de rotation du rotor (tr/s):')
txt3 = Label(fen2, text ='force contre électromotrice (E):')
bou = Button(fen2, text='valider',command=recupere_donnees )

7
entr1 = Entry(fen2)
entr2 = Entry(fen2)
entr3 = Entry(fen2)
txt1.grid(row =1, sticky =E)
txt2.grid(row =2, sticky =E)
txt3.grid(row =3, sticky =E)
entr1.grid(row =1, column =2)
entr2.grid(row =2, column =2)
entr3.grid(row =3, column =2)
bou.grid(row=4,column=1)
global vang
vang=moteur.vitesse_angulaire

5. Programme principal

global v1,v2,v3
moteur=MoteurCc()
fen1=Tk()
fen1.title("simulation_moteur")

txt1 = Label(fen1, text = 'flux de l''inducteeur(Wb) :')


txt2 = Label(fen1, text = 'Vitesse de rotation du rotor (tr/s):')
txt3 = Label(fen1, text = 'force contre électromotrice (V):')
txt4 = Label(fen1, text=0 )
txt5 = Label(fen1, text=0)
txt6 = Label(fen1, text=0)

txt1.grid(row =0, sticky =E)


txt2.grid(row =1, sticky =E)
txt3.grid(row =2, column= 0, sticky =E)
txt4.grid(row =0, column= 1, sticky =E)
txt5.grid(row =1, column= 1, sticky =E)
txt6.grid(row =2, column= 1, sticky =E)

bout1 = Button(fen1,text='changer parametre', command =aquisition )


bout1.grid(row=3,sticky =W)
bout2 = Button(fen1,text='simuler',command=rotation )
bout2.grid(row=3, column=1, sticky =E)
bout3 = Button(fen1,text='arrêt',command=arret )
bout3.grid(row=4, column=1, sticky =E)
bout4 = Button(fen1,text='fiche technique',command=fchtq )
bout4.grid(row=4, column=0, sticky =W)

can1 = Canvas(fen1, width =300, height =300, bg ='green')


can1.grid(row =0, column =3, rowspan =4, padx =10, pady =15)

8
can1.create_line(150, 0, 150, 300, fill ='blue')
can1.create_line(0, 150, 300, 150, fill ='blue')
can1.create_oval(50, 50, 250, 250, outline='black')

global x0, y0 ,flag,longueur,angle,angle1,angle2


x0, y0,flag,lenght,angle,angle1,angle2 = 150, 150,0,100,0,-(math.pi)*(2/3),2*(math.pi)/3
line = can1.create_line((x0, y0, 0, 0), width=4, fill='red', smooth=True)
line1 = can1.create_line((x0, y0, 71, 71), width=4, fill='red', smooth=True)
line2 = can1.create_line((x0, y0, -10,11), width=4, fill='red', smooth=True)
display_line_angle(line, x0, y0, angle, longueur)
display_line_angle(line1, x0, y0, angle1, longueur)
display_line_angle(line2, x0, y0, angle2, longueur)
fen1.mainloop()

VI. Simulation et validation

Une fois le programme exécuté nous obtenons une interface qui se présente comme
suit :

Figure 1 interface d'acceuil

Nous remarquons que nous avons quatre possibilités d’action sur le système :

 changer parametre pour le réglage des paramètres d’entrées


 simuler pour la Marche rotor
9
 Arrêt pour l’arrêt rotor
 Fiche Technique pour afficher la liste des caractéristiques du moteur

 nous cliquons sur changer paramètre pour initialiser nos paramètre de


simulation et nous obtenons l’interface ci-dessous où nous donnons des
valeurs voulues aux paramètres qui nous sont imposés :

Figure 2 illustration d'un changement de paramètre

 une fois les paramètres initialisés nous cliquons sur le bouton simuler .notre
rotor ici est représenter par trois ligne rouge représentant les trois phases ces
trois ligne se mettent à tourner à la vitesse calculer par la méthode
moteur.vitesse_angulaire()

10
Figure 3 début de la rotation après un clic sur simuler

Figure 4 rotation en cours du rotor

Une fois la simulation lancée nous disposons de la touche arrêt pour arrêter
la simulation

 à chaque fois que nous initialisons les paramètres les méthodes de la classe
moteur s’exécutent et met à notre disposition les valeurs des paramètres
utiles pour ordonnancer la fabrication. Ainsi fait nous avons implémenter la
méthode fiche technique qui regroupe toute les caractéristiques du moteur
relativement à nos paramètres d’entrées :
11
Figure 5 illustration de la fiche technique

VII. Conclusion

Par ce mini projet nous remarquons l’importance de la programmation modulaire


entre autre : l’amélioration de la lisibilité, chaque module peut être implémenter
par des personnes indépendantes réduisant ainsi le temps d’implémentation de
l’ensemble du code, et aussi la réutilisabilité des objets créer par d’autres
programmeurs pour d’autres applications.

12