IoT et Régulation
Activités Python
L'objectif de ces activités est de tester un cas pratique IoT avec des outils numériques très utilisés : Python et Matplotlib.
Prérequis

Python
Langage de programmation

Matplotlib
Bibliothèque
Un site pour utiliser Matplotlib en ligne : https://python-fiddle.com/examples/matplotlib
I - Simulation de régulation de température, cas sans perturbation
Le programme ci-dessous simule une régulation de température en boucle ouverte et en boucle fermée. Nous sommes dans un cas idéal, sans perturbation. Un thermostat connecté permet de surveiller constamment la température.
Objectif : visualiser la température intérieure d'une maison en fonction du temps et comparer les effets de différents gains de régulation.
👉 Lisez attentivement et comprenez le code ci-dessous.
Retrouvez le modèle utilisé.
Regardez comment les différents gains sont mentionnés.
Repérez les différents gains de régulation utilisés.
👉 Lancez le programme et commentez le résultat obtenu.
I - Simulation de régulation de température, cas sans perturbation
Le programme ci-dessous simule une régulation de température en boucle ouverte et en boucle fermée. Nous sommes dans un cas idéal, sans perturbation. Un thermostat connecté permet de surveiller constamment la température.
Objectif : visualiser la température intérieure d'une maison en fonction du temps et comparer les effets de différents gains de régulation.
👉 Lisez attentivement et comprenez le code ci-dessous.
Retrouvez le modèle utilisé.
Regardez comment les différents gains sont mentionnés.
Repérez les différents gains de régulation utilisés.
👉 Lancez le programme et commentez le résultat obtenu.
import numpy as np import matplotlib.pyplot as plt # Paramètres système tau = 30 # constante de temps (min) K = 5 # gain du système u0 = 1 # puissance du chauffage (0 à 1) T_consigne = 22 # °C T_initial = 15 # température initiale # Temps t = np.linspace(0, 120, 500) # 2 heures # Boucle ouverte (chauffage constant) T_ouverte = T_initial + K * u0 * (1 - np.exp(-t / tau)) # Boucle fermée avec différents Kp Kp_values = [0.1, 0.3, 1.0] T_fermee = [] for Kp in Kp_values: tau_boucle = tau / (K * Kp) T = T_consigne * (1 - np.exp(-t / tau_boucle)) T_fermee.append(T) # Tracé plt.figure(figsize=(10, 6)) plt.plot(t, T_ouverte, label="Boucle ouverte", linestyle='--', color='gray') for i, Kp in enumerate(Kp_values): plt.plot(t, T_fermee[i], label=f"Boucle fermée Kp={Kp}") plt.axhline(y=T_consigne, color='black', linestyle=':', label="Consigne") plt.title("Régulation de la température d'une maison connectée") plt.xlabel("Temps (minutes)") plt.ylabel("Température intérieure (°C)") plt.grid(True) plt.legend() plt.tight_layout() plt.show()
II - Simulation de régulation de température, cas avec perturbation
Le programme ci-dessous simule une régulation de température en boucle fermée. Nous sommes dans un cas non idéal, où on ouvre la fenêtre au bout de 30 minutes. Un thermostat connecté permet de surveiller constamment la température.
Objectif : Observer l'effet de la régulation pour revenir à la consigne suite à une perturbation externe (ex : ouverture de fenêtre, chute de température soudaine).
👉 Lisez attentivement et comprenez le code ci-dessous.
Repérez les différents paramètres.
Comprenez comment l'ouverture de la fenêtre est simulée.
👉 Lancez le programme, commentez le résultat obtenu et modifiez la valeur des paramètres pour analyser le comportement.
II - Simulation de régulation de température, cas avec perturbation
Le programme ci-dessous simule une régulation de température en boucle fermée. Nous sommes dans un cas non idéal, où on ouvre la fenêtre au bout de 30 minutes. Un thermostat connecté permet de surveiller constamment la température.
Objectif : Observer l'effet de la régulation pour revenir à la consigne suite à une perturbation externe (ex : ouverture de fenêtre, chute de température soudaine).
👉 Lisez attentivement et comprenez le code ci-dessous.
Repérez les différents paramètres.
Comprenez comment l'ouverture de la fenêtre est simulée.
👉 Lancez le programme, commentez le résultat obtenu et modifiez la valeur des paramètres pour analyser le comportement.
import numpy as np import matplotlib.pyplot as plt # Paramètres de simulation dt = 0.1 # pas de temps T = 60 # durée totale (minutes) n = int(T / dt) # Modèle de la maison tau = 10.0 # constante de temps (inertie thermique) K = 1.0 # gain du système Kp = 0.8 # gain du régulateur proportionnel # Initialisation t = np.linspace(0, T, n) T_consigne = 22.0 # température souhaitée T_ext = 5.0 # température extérieure T_room = np.zeros(n) # température intérieure u = np.zeros(n) # commande chauffage T_room[0] = 15.0 # température initiale # Simulation for i in range(1, n): erreur = T_consigne - T_room[i-1] u[i] = Kp * erreur # régulateur proportionnel u[i] = np.clip(u[i], 0, 1) # limite la puissance du chauffage entre 0 et 1 # Perturbation : à t=30 min, on ouvre une fenêtre → la maison perd de la chaleur if 30 <= t[i] <= 35: perturbation = -2.0 # perte brutale else: perturbation = 0.0 # Équation différentielle discrétisée dT = dt * ( - (T_room[i-1] - T_ext) / tau + K * u[i] + perturbation ) T_room[i] = T_room[i-1] + dT # Affichage plt.figure(figsize=(10,5)) plt.plot(t, T_room, label="Température intérieure") plt.axhline(T_consigne, color='gray', linestyle='--', label="Consigne") plt.axvspan(30, 35, color='red', alpha=0.2, label="Perturbation (fenêtre ouverte)") plt.xlabel("Temps (min)") plt.ylabel("Température (°C)") plt.title("Régulation de température avec perturbation") plt.legend() plt.grid() plt.show()
© Jules Hamdan 2025