Act2.3 - Capteur
Vous trouverez dans cette page les codes à utiliser pour l'activité.
Code Python⚓︎
Coller les codes ci-dessous dans une console Edupython ou sur le site laboratoire Python en ligne
Code 1⚓︎
Cliquer pour afficher
🐍 Script Python
#Programme Partie 1
#importation de la bibliothèque permettant de modéliser un nuage de points
import numpy as np
#importation de la bibliothèque permettant de tracer un couple de valeurs (x,y)
import matplotlib.pyplot as plt
#création des listes de valeurs (x,y) ici (température, résistance)
# Il faut remplacer les valeurs par celles obtenues en classe
T=np.array([1,2,3,4,5])
R=np.array([1,2,3,4,5])
#Tracer des couples de valeurs (x,y)
plt.plot(T,R,'b+',label='R=f(T)')
#Tracer de la légende
plt.legend()
#Ajout d’un titre pour le graphique et de titres pour les axes
plt.xlabel("Température T (°C)")
plt.ylabel("Résistance R (Ohm)")
plt.title("Nuage de points et régression")
#tracer de la grille
plt.grid()
#permet de faire apparaître le résultat dans l’écran de droite
plt.show()
Code 2⚓︎
Cliquer pour afficher
🐍 Script Python
#Programme Partie 2
#importation de la bibliothèque permettant de modéliser un nuage de points
import numpy as np
#importation de la bibliothèque permettant de tracer un couple de valeurs (x,y)
import matplotlib.pyplot as plt
#création des listes de valeurs (x,y) ici (température, résistance)
# Il faut remplacer les valeurs par celles obtenues en classe
T=np.array([1,2,3,4,5])
R=np.array([1,2,3,4,5])
N = len(T)
invT=[]
for i in range (N):
invT.append(1/T[i])
#Paramétrage de la modélisation, que l’on souhaite linéaire donc de la forme a*x (en réalité en utilisant polyfit on demande la modélisation par un polynôme de l’ordre 1, il s’agit donc d’une forme a*x + b)
model=np.polyfit(invT, R, 1)
#Définition de la pente de la droite de modélisation (On appelle “a” le premier coefficient du polynôme précédent, donc le « a » de ax+b)
a = model[0]
b = model[1]
#Affiche l'équation de la droite de modélisation, donc a, dans la forme U = R*I
print("R={0:.1f}".format(a)+' × (1÷T) ')
#Tracer des couples de valeurs (x,y)
plt.plot(invT,R,'b+',label='R=f(inverse de T)')
#Tracer de la modélisation (On utilise les points limites pour tracer la régression, le premier [0] et le dernier [-1] )
plt.plot([invT[0],invT[-1]],[a*invT[0]+b,a*invT[-1]+b],'-r',label="Régression linéaire")
#Tracer de la légende
plt.legend()
#Ajout d’un titre pour le graphique et de titres pour les axes
plt.xlabel("Inverse de T (°C⁻¹)")
plt.ylabel("Résistance R (Ohm)")
plt.title("Nuage de points et régression")
#tracer de la grille
plt.grid()
#permet de faire apparaître le résultat dans l’écran de droite
plt.show()
Code arduino⚓︎
Cliquer pour afficher
♾️ Script Arduino
/*
* Réalisation d'un capteur de température
*/
// inclure la bibliothèque permettant la communication par le protocole I2C
#include <Wire.h>
// inclure la bibliothèque pour l'écran LCD
#include "rgb_lcd.h"
// création d'un objet lcd
rgb_lcd lcd;
// Résistance pour la température de bascule du bain
#define R_Tlim //A modifier entre les "slashs"//
// Fonction setup(), appelée au démarrage de la carte Arduino
void setup() {
// Initialise la communication avec le PC
Serial.begin(9600);
// configurer le nombre de colonnes et de lignes de l'écran LCD :
lcd.begin(16, 2);
}
// Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée
void loop() {
// Initialisation du pin A0 pour la mesure de la tension aux bornes de la thermistance
int valeur_brute = analogRead(A0);
//conversion en valeur numérique
float tension_mesuree=valeur_brute*3.3/1023;
//Tension aux bornes de la thermistance pour la résistance R_Tlim - Resistance du pont diviseur à 100 ohm
float tension_Tlim=3.3*R_Tlim/(R_Tlim+100.00);
// Si la tension mesurée est entre les deux tensions théoriques
if ((tension_Tlim<tension_mesuree))//Température dépassée
{lcd.setRGB(255,0,0);}
else
{lcd.setRGB(0,50,255);}
}