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.