ANNEE UNIVERSITAIRE 2018-2019 ECOLE NATIONALE SUPERIEURE D’INGENIEURS (ENSI) PR
ANNEE UNIVERSITAIRE 2018-2019 ECOLE NATIONALE SUPERIEURE D’INGENIEURS (ENSI) PROJET DE PROGRAMMATION ORIENTE OBJET 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) DIMENSIONNEMENT DES PARAMETRES DE FABRICATION D’UN MOTEUR À COURANT CONTINU ET SIMULATION DE LA ROTATION DU ROTOR 2 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 3 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 4 Ordinateur 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 paramètre Marche Arrêt Fiche technique Terminaison Réceptionnaires d’évènements 5 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 6 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 7 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 ) 8 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) 9 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 10 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 uploads/Industriel/ projet-poo.pdf
Documents similaires
-
74
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 14, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.5893MB