BTS Mesure BTS Mesure
DébutTP 1UARTLED RGBBilanCapteursDataloggingStationUltrasonCAN seriePontRégulationCO2

Modélisation CTN par un programme python :

Nous développerons un équivalent de ce programme en Labview dans ce TP.

import matplotlib.pyplot as plt
import numpy as np


def R(T) :
    R25=10000
    beta=3950
    res=R25*np.exp(beta*(1/(T+273.15)-1/(25+273.15)))
    return res

Tmin =float(input("Gamme, Tmin = "))
Tmax= float(input("Gamme, Tmax = "))
Tmilieu=(Tmax+Tmin)/2
R1=int(R(Tmilieu))
print("Milieu de gamme : "+str(Tmilieu)+" °C  R1 recommandé :"+str(R1)+" Ω")
R1 = int(input("Résistance choisie, R1="))

T=np.linspace(Tmin,Tmax,100)
V=R1/(R1+R(T))*5    # Diviseur de tension

plt.title("Modélisation CTN")
plt.xlabel("V en volt")
plt.ylabel("T en °C")

if (Tmax-Tmin<40):
    coeff_droite=np.polyfit(V,T,1)
    droite = np.poly1d(coeff_droite)
    print("Modèle linéaire suffisant : T = "
          +str(round(coeff_droite[0],3))+"*V + "+str(round(coeff_droite[1],3)))
    plt.plot(V, droite(V), 'r', label='modèle')
    plt.plot(V,T, 'o', label='Mesures', markersize=1)
    plt.grid()
    plt.legend()
    plt.show()
    
else :
     coeff_poly=np.polyfit(V,T,3)
     poly3= np.poly1d(coeff_poly)
     print("Modèle polynôme 3ème ordre: T = "
          +str(round(coeff_poly[0],3))+"*pow(V,3) + "
          +str(round(coeff_poly[1],3))+"*pow(V,2) + "
          +str(round(coeff_poly[2],3))+"*V + "
          +str(round(coeff_poly[3],3)))
     plt.plot(V, poly3(V), 'r', label='modèle')
     plt.plot(V,T, 'o', label='Mesures', markersize=1)
     plt.grid()
     plt.legend()
     plt.show()

Communication en python avec un Arduino

Au lieu de passer par le moniteur série, on peut communiquer avec un Arduino grâce à un programme Python.

Il est aussi possible de créer des fenêtres en python grâce à la bibliothèque Tkinter.

L'exemple ci-contre est disponible dans ce dossier.