Appropriation du réel
Durée estimée
Pour cette première partie (montage, découverte du programme, test et première mesure), compter 20 minutes.
Réalisation du montage
Câblage de la breadboard
Mesurer la résistance étalon à l'aide d'un ohmmètre et noter sa valeur.
De préférence, prendre une résistance dont la tolérance est de 1 % (dernier anneau marron)
Placer la résistance étalon et le dipôle à tester en série.
Alimenter l'association de dipôles entre GND et 5 V de la carte Arduino.
Relier les entrées analogiques A0, A1 et A2.
Relier la carte Arduino à l'ordinateur par le port USB.
A visionner à la maison, en amont de l'activité.
Communication entre l'ordinateur et la carte Arduino
Méthode : Environnement Python
L'élève récupère dans son espace personnel et ouvre le fichier mesure_R.py. Ce programme peut être ouvert dans l'environnement Python, par exemple EduPython.
# Créé par Gilles Claudel, le 21/11/2018 en Python 3.4
from commandesPython import Arduino
import time
import os
def fichMes(ref, i, u, nb):
os.makedirs("dispersion",exist_ok=True)
fichier = "dispersion/fichier_R" + ref + "_n" + str(nb) + ".txt"
mes_mesures = open(fichier, "w") #création ou écrasement d'un fichier ouvert en écriture
j = 0
mes_mesures.write("R (ohm)\n") #entête du fichier de mesure
while j < nb:
R.append(u[j]/(i[j]/1000))
mes_mesures.write(str(R[j])+"\n") #Saut de ligne avec \n
j = j + 1
mes_mesures.close() #fermeture du fichier texte
return(0)
k=0
u=[]
i=[]
R=[]
port = "COM3" #à modifier si besoin
ard = Arduino(port) #La classe Arduino permet de communiquer via le port série avec le micro-contrôleur
#On teste les saisies et on vérifie si ce sont bien des nombres
print("Ce programme va réaliser n mesures de u et i pour accéder à la résistance R du dipôle.")
dipole = input("Donner un identifiant au fichier de sauvegarde.\n")
while True:
try:
r = float(input("Valeur de la résistance étalon pour la mesure de l'intensité ?\n"))
break
except ValueError:
print("Entrez un nombre.")
while True:
try:
n = int(input("Nombre de mesures ?\n"))
break
except ValueError:
print("Entrez un nombre entier.")
time.sleep(0.5)
#On admet que la lecture des trois entrées analogiques et leur conversion prend 50ms
print(n,"mesures vont être effectuées pendant environ",n*0.05,"secondes")
while k < n:
sensorU2 = ard.analogRead(0) #La lecture d'une entrée analogique et sa conversion A/N : ce n'est pas instantané
time.sleep(0.001)
sensorUr = ard.analogRead(1)
time.sleep(0.001)
sensorGND = ard.analogRead(2)
time.sleep(0.001)
u.append(((sensorU2-sensorUr)/1023.0)*5.0) #u en V : u = u_2 - u_r
i.append(((sensorUr-sensorGND)/1.023)*5.0/r) #i en mA : i = u_r / r
k = k + 1
ard.close() #Après n mesures, on libère le port de communication
# Message de fin d'exécution
file = "dispersion/fichier_R" + dipole + "_n" + str(n) + ".txt"
print("Ouvrir le fichier",file,"dans Geogebra.")
#
# Travail de l'élève
# - représenter la dispersion des valeurs de R dans Geogebra
#
# Création du fichier texte de mesures pour une 1re exploitation dans Geogebra
Il s'approprie, avec l'aide du professeur, les actions réalisées par le programme.
ouverture du port série de communication
les paramètres personnalisables de la mesure : les input()
- identifiant du fichier de sauvegarde : dipole
- valeur de la résistance étalon pour la mesure d'intensité : r
- nombre de mesures : n
mesure des entrées analogiques : analogRead()
remplissage des tableaux i et u avec conversion : \(0 \rightarrow 0\;V\) et \(1023 \rightarrow 5\;V\)
fermeture du port série
Les valeurs des tensions analogiques évoluent entre 0 et 5 V. Le CAN est sur 10 bits. Donc les valeurs numériques stockées sont entre 0 et 2^10 - 1 = 1023.
Remarque : Ce que l'élève n'a pas à faire
Test du programme
Complément : Créer un fichier de mesures
A la fin du programme Python, ajouter une ligne faisant appel à la fonction fichMes avec les arguments suivants :
dipole et n pour nommer le fichier de mesure : fichier_R1000_n50.txt
i et u pour calculer R avec le rapport u[k]/i[k] pour k variant de 0 à n-1.
fichMes(dipole, n, i, u)
Remarque : Dossier mesures
Un sous-dossier "dispersion" sera créé à la première exécution du programme dans le dossier accueillant mesure_R.py.
Exemple : Exécution du programme
Choisir une résistance étalon de \(1000 \;\Omega\) pour mesurer la résistance d'un dipôle ohmique dont la valeur de référence est \(R_{th}=1 \;k\Omega\).
Exécuter le programme avec 500 mesures.
Ouvrir le fichier fichier_R1000_n500.txt dans le tableur de Geogebra (si dipole = 1000).