Filière : Ingenieurie des Sytémes Embarqués et Robotique
Problème B :Gestion intelligente d’un
moteur électrique
Realisé par :Belahbib Mouad Encadré par :[Link]
2024-2025
1
Objectif du projet :
L'objectif de ce projet est de développer un programme en Python capable de simuler et de
réguler la vitesse d'un moteur électrique en fonction d'une vitesse cible définie par
l'utilisateur. Pour cela, le programme :
1. Génère des mesures aléatoires de vitesse toutes les 0,5 secondes pendant 30
secondes.
2. Demande à l'utilisateur de saisir une vitesse cible.
3. Ajuste dynamiquement la puissance du moteur :
Augmente la puissance si la vitesse est inférieure à 90 % de la cible.
Réduit la puissance si la vitesse dépasse 110 % de la cible.
Maintient la puissance si la vitesse est stable.
4. Stocke l'évolution des vitesses dans un fichier log.
5. Génère un graphique montrant l'évolution de la vitesse.
Le programme :
import random
import time
import [Link] as plt
# Fonction pour simuler la mesure de vitesse
def mesurer_vitesse():
return [Link](500, 3000)
# Fonction pour ajuster la puissance du moteur
def ajuster_puissance(vitesse_mesuree, vitesse_cible):
if vitesse_mesuree < 0.9 * vitesse_cible:
return "Augmentation de la puissance"
elif vitesse_mesuree > 1.1 * vitesse_cible:
return "Réduction de la puissance"
else:
2
return "Vitesse stable"
# Demander à l'utilisateur de saisir la vitesse cible
vitesse_cible = int(input("Entrez la vitesse cible (entre 1000 et 2500 RPM):
"))
while vitesse_cible < 1000 or vitesse_cible > 2500:
print("Vitesse cible invalide. Veuillez entrer une valeur entre 1000 et
2500 RPM.")
vitesse_cible = int(input("Entrez la vitesse cible (entre 1000 et 2500
RPM): "))
# Initialisation des listes pour stocker les données
temps = []
vitesses = []
# Simulation pendant 30 secondes avec des mesures toutes les 0,5 secondes
for seconde in range(0, 30, 1):
for _ in range(2): # Deux mesures par seconde
vitesse_mesuree = mesurer_vitesse()
action = ajuster_puissance(vitesse_mesuree, vitesse_cible)
[Link](seconde + 0.5 * _)
[Link](vitesse_mesuree)
print(f"Seconde {seconde + 0.5 * _}: {vitesse_mesuree} RPM →
{action}")
[Link](0.5) # Attendre 0,5 seconde
# Enregistrement des données dans un fichier log
with open("moteur_log.txt", "w") as fichier:
for t, v in zip(temps, vitesses):
[Link](f"{t} s: {v} RPM\n")
# Affichage du graphique
[Link](temps, vitesses, label="Vitesse mesurée")
[Link](y=vitesse_cible, color='r', linestyle='--', label="Vitesse cible")
[Link]("Temps (s)")
[Link]("Vitesse (RPM)")
[Link]("Évolution de la vitesse du moteur")
[Link]()
[Link]()
compilation :
3
4
Evolution de la vitesse
Conclusion :
Ce projet permet de mettre en œuvre un système de gestion intelligente de la vitesse d’un
moteur en simulant le comportement d’un contrôleur PID simple. Il illustre l’importance de
l’asservissement dans les systèmes embarqués et industriels. En ajustant dynamiquement la
puissance, le programme montre comment maintenir une vitesse stable malgré des
variations aléatoires. L'utilisation d'un fichier log et d'un graphique renforce l'analyse des
performances du système.