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

Create a free website with Framer, the website builder loved by startups, designers and agencies.